CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to support@ccsinfo.com

time conversion.....

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
JAM2014



Joined: 24 Apr 2014
Posts: 138

View user's profile Send private message

time conversion.....
PostPosted: Mon Apr 08, 2019 2:04 pm     Reply with quote

Hi All,

I'm trying to get a test program to work that will convert a GPS derived time (UTC) into timer ticks, so that I can perform a conversion to local time. At the moment, I'm just trying to convert a fixed time to timer ticks using the 'mktime' function in timer.h. I'm getting a strange error on the call to mktime:

Quote:
*** Error 112 "UTCtoLocalTimeConversion.c" Line 41(1,1): Function used but not defined: ... mktime 683 SCR=1580


Compiler is PCH 5.050

Here is my test program:
Code:

//-----< Include Files, setup fuses >-----
#include <18F14K22.h>
#include <time.h>

//#fuses INTRC, NOWDT, NOPROTECT, NOBROWNOUT, PUT
#fuses INTRC, NOWDT, NOBROWNOUT, PUT, NOPLLEN

// Tell compiler clock speed is 8.00 MHZ
#use delay(clock=8000000)

//-----< General Program Defines >-----
#define Rx_In PIN_B5         // serial data receive pin
#define Tx_Out PIN_B7         // serial data transmit pin
#define Serial_Diag PIN_B4

//-----< Firmware Version >-----
#define VER_MAJ   1   // Major version   
#define VER_MIN 3   // Minor version

//-----< Serial Port Definition >-----
#use rs232(baud=19200, xmit=Serial_Diag, stream = LCD)

void main()
{
   int32 UTC_Ticks = 0;

      //Temorary Test Code

   //Needed for the Time Structure in Timer.h....
   Struct_tm MyTMInfo;

      MyTMInfo.tm_sec = 0;    // seconds after the minute (0-59)
   MyTMInfo.tm_min = 29;   // minutes after the hour (0-59)
   MyTMInfo.tm_hour =14;   // hours since midnight (0-23)
   MyTMInfo.tm_mday = 8;   // day of the month (1-31)
   MyTMInfo.tm_mon = 4;    // month of the year (0-11)
   MyTMInfo.tm_year = 119; // years since 1900
   MyTMInfo.tm_wday = 1;   // day of the week (0-6) (Sunday=0)
   MyTMInfo.tm_yday = 98;  // day of the year (0-365)

   UTC_Ticks = mktime(&MyTMInfo);
   fprintf(LCD, "\r\nTimestamp:<%Lu>",UTC_Ticks);

   while(1){}
}   //Main


Appreciate any suggestions to get this working!

Thanks,

Jack
temtronic



Joined: 01 Jul 2010
Posts: 9133
Location: Greensville,Ontario

View user's profile Send private message

PostPosted: Mon Apr 08, 2019 2:33 pm     Reply with quote

OK, humor the old guy whose been up waaay to long ...
this
Struct_tm MyTMInfo

I can't see where or how you tell the compiler the structure is composed of bits, bytes, words, ???? Since a 'structure' can be composed of several 'elements', they could be bits or bytes or words or a mix.....
If I'm totally wrong, tell me....
Jay
JAM2014



Joined: 24 Apr 2014
Posts: 138

View user's profile Send private message

PostPosted: Mon Apr 08, 2019 2:52 pm     Reply with quote

Hi Jay,

That is the declaration of the structure. The actual definition of the structure occurs in Timer.h

Thanks,

Jack
empty



Joined: 13 Jan 2018
Posts: 14

View user's profile Send private message

PostPosted: Mon Apr 08, 2019 3:25 pm     Reply with quote

Directly after:
#include <time.h>
add:
#include <time.c>
JAM2014



Joined: 24 Apr 2014
Posts: 138

View user's profile Send private message

PostPosted: Tue Apr 09, 2019 3:31 pm     Reply with quote

Hi,

Doh! Yes, of course, I can't believe I missed that!

Here is some working test code for UTC to local time conversion:

Code:

//-----< Include Files, setup fuses >-----
#include <18F14K22.h>
#include <time.h>
#include <time.c>

//#fuses INTRC, NOWDT, NOPROTECT, NOBROWNOUT, PUT
#fuses INTRC, NOWDT, NOBROWNOUT, PUT, NOPLLEN

// Tell compiler clock speed is 8.00 MHZ
#use delay(clock=8000000)

//-----< General Program Defines >-----
#define Rx_In PIN_B5         // serial data receive pin
#define Tx_Out PIN_B7         // serial data transmit pin
#define Serial_Diag PIN_A2
#define Time_Valid PIN_C5

//-----< Firmware Version >-----
#define VER_MAJ   1   // Major version   
#define VER_MIN 3   // Minor version

//-----< Serial Port Definition >-----
#use rs232(baud=19200, xmit=Serial_Diag, stream = LCD)

void main()
{
   int32 UTC_Ticks = 0;
   int32 LCL_Ticks = 0;
   int8 iIndex = 0;
   int8 tUTCString[80];
   int8 tLCLString[80];

   //Here we blink the Valid Time LED at power up
   for ( iIndex=0 ; iIndex<3 ; iIndex++ )
   {
      output_high(Time_Valid);
      delay_ms(250);
      output_low(Time_Valid);
      delay_ms(250);
   }

   //Here we clear the Hyperterminal display screen   
     fprintf(LCD, "\x1B[2J");
     fprintf(LCD, "Time Conversion Test!\n\r");

      //Temorary Test Code

   //Needed for the Time Structure in Timer.h....
   Struct_tm MyTMInfo;

      MyTMInfo.tm_sec = 0;    // seconds after the minute (0-59)
   MyTMInfo.tm_min = 29;   // minutes after the hour (0-59)
   MyTMInfo.tm_hour =14;   // hours since midnight (0-23)
   MyTMInfo.tm_mday = 8;   // day of the month (1-31)
   MyTMInfo.tm_mon = 3;    // month of the year (0-11) <- Note: April = 3 NOT 4!!
   MyTMInfo.tm_year = 119; // years since 1900
   MyTMInfo.tm_wday = 0;   // day of the week (0-6) (Sunday=0)
   MyTMInfo.tm_yday = 0;  // day of the year (0-365) - was 98

   UTC_Ticks = mktime(&MyTMInfo);
   fprintf(LCD, "\r\nUTC Timestamp:<%Lu>\n\r",UTC_Ticks);

   ctime(&UTC_Ticks, tUTCString);
   fprintf(LCD, "Current UTC Time:   %s\n\r", tUTCString); 

   //Here we apply a 'UTC offset' of 4 hours (4 hours * 3600 secs/hr = 14400 secs). This is for illustration only, and will be handled as
   //a variable in the final code.
   LCL_Ticks = UTC_Ticks - 14400;

   ctime(&LCL_Ticks, tLCLString);
   fprintf(LCD, "Current Local Time: %s\n\r", tLCLString);

   while(1){}
}   //Main


Quote:

Time Conversion Test!

UTC Timestamp:<1554733740>
Current UTC Time: Mon Apr 8 14:29:00 2019
Current Local Time: Mon Apr 8 10:29:00 2019


Thanks,

Jack
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group