Dual CANbus monitor and instrumentation cluster supporting ILI9341 display controller
Dependencies: SPI_TFTx2_ILI9341 TOUCH_TFTx2_ILI9341 TFT_fonts mbed
Fork of CANary by
main.cpp@1:9dcd70c32180, 2013-02-03 (annotated)
- Committer:
- TickTock
- Date:
- Sun Feb 03 18:16:53 2013 +0000
- Revision:
- 1:9dcd70c32180
- Parent:
- 0:1596b8644523
- Child:
- 2:71b1999a8ea5
compiles
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
TickTock | 0:1596b8644523 | 1 | #include "mbed.h" |
TickTock | 0:1596b8644523 | 2 | #include "CAN.h" |
TickTock | 0:1596b8644523 | 3 | #include "log.h" |
TickTock | 0:1596b8644523 | 4 | #include "beep.h" |
TickTock | 1:9dcd70c32180 | 5 | #include "MSCFileSystem.h" |
TickTock | 1:9dcd70c32180 | 6 | #include "SPI_TFTx2.h" |
TickTock | 1:9dcd70c32180 | 7 | #include "Arial12x12.h" |
TickTock | 1:9dcd70c32180 | 8 | #include "Arial28x28.h" |
TickTock | 1:9dcd70c32180 | 9 | #include "TOUCH_TFTx2.h" |
TickTock | 1:9dcd70c32180 | 10 | #define upLine "\033[1A" |
TickTock | 1:9dcd70c32180 | 11 | |
TickTock | 1:9dcd70c32180 | 12 | //CANary.cpp |
TickTock | 1:9dcd70c32180 | 13 | |
TickTock | 1:9dcd70c32180 | 14 | //LEAF OBD |
TickTock | 1:9dcd70c32180 | 15 | //1: |
TickTock | 1:9dcd70c32180 | 16 | //2: |
TickTock | 1:9dcd70c32180 | 17 | //3: AVCAN-L White/Blue |
TickTock | 1:9dcd70c32180 | 18 | //4: |
TickTock | 1:9dcd70c32180 | 19 | //5: VSS Brown,White/Brown |
TickTock | 1:9dcd70c32180 | 20 | //6: CARCAN-H Green |
TickTock | 1:9dcd70c32180 | 21 | //7: |
TickTock | 1:9dcd70c32180 | 22 | //8: 12V-SW Orange,White/Orange |
TickTock | 1:9dcd70c32180 | 23 | //9: |
TickTock | 1:9dcd70c32180 | 24 | //10: |
TickTock | 1:9dcd70c32180 | 25 | //11: AVCAN-H Blue |
TickTock | 1:9dcd70c32180 | 26 | //12: EVCAN-L White/Grey |
TickTock | 1:9dcd70c32180 | 27 | //13: EVCAN-H Grey |
TickTock | 1:9dcd70c32180 | 28 | //14: CARCAN-L White/Green |
TickTock | 1:9dcd70c32180 | 29 | //15: |
TickTock | 1:9dcd70c32180 | 30 | //16: 12V-AON Red/Blue,Blue/Red |
TickTock | 0:1596b8644523 | 31 | |
TickTock | 0:1596b8644523 | 32 | //VP230 |
TickTock | 1:9dcd70c32180 | 33 | //1:D |
TickTock | 1:9dcd70c32180 | 34 | //2:GND |
TickTock | 1:9dcd70c32180 | 35 | //3:VCC |
TickTock | 1:9dcd70c32180 | 36 | //4:R |
TickTock | 1:9dcd70c32180 | 37 | //5:Vref |
TickTock | 1:9dcd70c32180 | 38 | //6:CANL |
TickTock | 1:9dcd70c32180 | 39 | //7:CANH |
TickTock | 1:9dcd70c32180 | 40 | //8:RS |
TickTock | 0:1596b8644523 | 41 | |
TickTock | 0:1596b8644523 | 42 | //LPC1768 |
TickTock | 0:1596b8644523 | 43 | //1: VSS |
TickTock | 1:9dcd70c32180 | 44 | //2: NC:VIN (4.5-9V supply) |
TickTock | 0:1596b8644523 | 45 | //3: NC:VB |
TickTock | 0:1596b8644523 | 46 | //4: NC:nR |
TickTock | 1:9dcd70c32180 | 47 | //5: SPI:CS0 |
TickTock | 1:9dcd70c32180 | 48 | //6: SPI:CS1 |
TickTock | 1:9dcd70c32180 | 49 | //7: SPI:Reset |
TickTock | 1:9dcd70c32180 | 50 | //8: CAN1:Sleep --> 8:CAN1:RS |
TickTock | 1:9dcd70c32180 | 51 | //9: CAN1:RX --> 4:CAN1:R |
TickTock | 1:9dcd70c32180 | 52 | //10: CAN1:TX --> 1:CAN1:D |
TickTock | 1:9dcd70c32180 | 53 | //11: SPI:MOSI |
TickTock | 1:9dcd70c32180 | 54 | //12: SPI:MISO |
TickTock | 1:9dcd70c32180 | 55 | //13: SPI:SCLK |
TickTock | 1:9dcd70c32180 | 56 | //14: NC:Ain |
TickTock | 1:9dcd70c32180 | 57 | //15: MON12V --> 4K to 12V, 1K to VSS (To be implemented) |
TickTock | 1:9dcd70c32180 | 58 | //16: TOUCH_X+ |
TickTock | 1:9dcd70c32180 | 59 | //17: TOUCH_X- |
TickTock | 1:9dcd70c32180 | 60 | //18: NC:Aout |
TickTock | 1:9dcd70c32180 | 61 | //19: TOUCH_Y+ |
TickTock | 1:9dcd70c32180 | 62 | //20: TOUCH_Y- |
TickTock | 0:1596b8644523 | 63 | //21: Spkr+ |
TickTock | 1:9dcd70c32180 | 64 | //22: Spkr- (optional complimentary output for more volume) |
TickTock | 0:1596b8644523 | 65 | //23: NC:pwm |
TickTock | 1:9dcd70c32180 | 66 | //24: LED |
TickTock | 0:1596b8644523 | 67 | //25: NC:pwm |
TickTock | 0:1596b8644523 | 68 | //26: NC:pwm |
TickTock | 1:9dcd70c32180 | 69 | //27: NC |
TickTock | 0:1596b8644523 | 70 | //28: CAN2:Sleep --> 8:CAN2:RS |
TickTock | 1:9dcd70c32180 | 71 | //29: CAN2:TX --> 1:CAN2:D |
TickTock | 1:9dcd70c32180 | 72 | //30: CAN2:RX --> 4:CAN2:R |
TickTock | 1:9dcd70c32180 | 73 | //31: USB_D+ |
TickTock | 1:9dcd70c32180 | 74 | //32: USB_D- |
TickTock | 0:1596b8644523 | 75 | //33: NC:Eth_TD+ |
TickTock | 0:1596b8644523 | 76 | //34: NC:Eth_TD- |
TickTock | 0:1596b8644523 | 77 | //35: NC:Eth_RD+ |
TickTock | 0:1596b8644523 | 78 | //36: NC:Eth_RD- |
TickTock | 0:1596b8644523 | 79 | //37: NC:IF+ |
TickTock | 0:1596b8644523 | 80 | //38: NC:IF- |
TickTock | 1:9dcd70c32180 | 81 | //39: NC:5Vout (only available when connected as USB device) |
TickTock | 0:1596b8644523 | 82 | //40: VCC3.3 |
TickTock | 0:1596b8644523 | 83 | |
TickTock | 1:9dcd70c32180 | 84 | time_t seconds ; |
TickTock | 0:1596b8644523 | 85 | Beep buzzer(p21); |
TickTock | 1:9dcd70c32180 | 86 | |
TickTock | 0:1596b8644523 | 87 | Ticker ticker; |
TickTock | 1:9dcd70c32180 | 88 | Timer timer; |
TickTock | 0:1596b8644523 | 89 | DigitalOut led1(LED1); |
TickTock | 0:1596b8644523 | 90 | DigitalOut led2(LED2); |
TickTock | 0:1596b8644523 | 91 | DigitalOut led3(LED3); |
TickTock | 0:1596b8644523 | 92 | DigitalOut led4(LED4); |
TickTock | 1:9dcd70c32180 | 93 | CAN can1(p9, p10); // CAN1 uses pins 9 and 10 (rx, tx) and pin 27 (rs) |
TickTock | 1:9dcd70c32180 | 94 | DigitalOut can1_SleepMode(p8); // Use pin 8 to control the sleep mode of can1 |
TickTock | 1:9dcd70c32180 | 95 | CAN can2(p30, p29); // CAN2 uses pins 30 and 29 (rx, tx) and pin 28 (rs) |
TickTock | 1:9dcd70c32180 | 96 | DigitalOut can2_SleepMode(p28); // Use pin 28 to control the sleep mode of can2 |
TickTock | 1:9dcd70c32180 | 97 | bool logCreated = false; |
TickTock | 0:1596b8644523 | 98 | char logMsg[64]; |
TickTock | 0:1596b8644523 | 99 | |
TickTock | 0:1596b8644523 | 100 | char counter = 0; |
TickTock | 1:9dcd70c32180 | 101 | |
TickTock | 1:9dcd70c32180 | 102 | TOUCH_TFTx2 tt(p16, p17, p19, p20, p11, p12, p13, p6, p7, p5, "TFT"); // x+,x-,y+,y-,mosi, miso, sclk, cs0, cs1, reset |
TickTock | 1:9dcd70c32180 | 103 | |
TickTock | 1:9dcd70c32180 | 104 | unsigned short getTimeStamp() {// from Gary's code |
TickTock | 1:9dcd70c32180 | 105 | |
TickTock | 1:9dcd70c32180 | 106 | //----------- |
TickTock | 1:9dcd70c32180 | 107 | // read ms from the timer |
TickTock | 1:9dcd70c32180 | 108 | int msec = timer.read_ms() ; |
TickTock | 1:9dcd70c32180 | 109 | |
TickTock | 1:9dcd70c32180 | 110 | // quickly, read Date and Time (to seconds) from the RTC |
TickTock | 1:9dcd70c32180 | 111 | unsigned long secs = time(NULL); // seconds past 12:00:00 AM 1 Jan 1900 |
TickTock | 1:9dcd70c32180 | 112 | |
TickTock | 1:9dcd70c32180 | 113 | //----------- |
TickTock | 1:9dcd70c32180 | 114 | if ( msec > 999 ) msec = 999 ; |
TickTock | 1:9dcd70c32180 | 115 | int isecs = secs % 60 ; // modulo 60 for 0-59 seconds from RTC |
TickTock | 1:9dcd70c32180 | 116 | |
TickTock | 1:9dcd70c32180 | 117 | return ( ( isecs << 10 ) + msec ) ; // return the two byte time stamp |
TickTock | 1:9dcd70c32180 | 118 | } |
TickTock | 1:9dcd70c32180 | 119 | |
TickTock | 1:9dcd70c32180 | 120 | extern "C" void RTC_IRQHandler() |
TickTock | 1:9dcd70c32180 | 121 | { |
TickTock | 1:9dcd70c32180 | 122 | |
TickTock | 1:9dcd70c32180 | 123 | timer.reset() ; // zero ms at the-seconds-tick |
TickTock | 1:9dcd70c32180 | 124 | |
TickTock | 1:9dcd70c32180 | 125 | } |
TickTock | 1:9dcd70c32180 | 126 | |
TickTock | 1:9dcd70c32180 | 127 | extern "C" void RTC_Init (void) |
TickTock | 1:9dcd70c32180 | 128 | { |
TickTock | 1:9dcd70c32180 | 129 | |
TickTock | 1:9dcd70c32180 | 130 | // set up the RTC interrupts |
TickTock | 1:9dcd70c32180 | 131 | LPC_RTC->ILR=0x00; |
TickTock | 1:9dcd70c32180 | 132 | |
TickTock | 1:9dcd70c32180 | 133 | //LPC_RTC->CIIR=0x02; // interrupts each minute - verified |
TickTock | 1:9dcd70c32180 | 134 | LPC_RTC->CIIR=0x01; // interrupts each second - verified |
TickTock | 1:9dcd70c32180 | 135 | |
TickTock | 1:9dcd70c32180 | 136 | //LPC_RTC->CCR = 0x11; // use for interrupts every minute ???? |
TickTock | 1:9dcd70c32180 | 137 | //LPC_RTC->CCR = 0x00; // Stop the RTC (apparently) |
TickTock | 1:9dcd70c32180 | 138 | LPC_RTC->CCR = 0x01; // Start RTC (apparently use for interrupt every second) |
TickTock | 1:9dcd70c32180 | 139 | |
TickTock | 1:9dcd70c32180 | 140 | // NVIC_SetPriority( RTC_IRQn, LOW_PR ); |
TickTock | 1:9dcd70c32180 | 141 | NVIC_EnableIRQ( RTC_IRQn ); |
TickTock | 1:9dcd70c32180 | 142 | } |
TickTock | 1:9dcd70c32180 | 143 | |
TickTock | 1:9dcd70c32180 | 144 | void readLog () |
TickTock | 1:9dcd70c32180 | 145 | { |
TickTock | 1:9dcd70c32180 | 146 | FILE *rfile; |
TickTock | 1:9dcd70c32180 | 147 | unsigned char c; |
TickTock | 1:9dcd70c32180 | 148 | int i=0; |
TickTock | 1:9dcd70c32180 | 149 | printf("printing file\n"); |
TickTock | 1:9dcd70c32180 | 150 | rfile = fopen(LOGFILE, "r"); |
TickTock | 1:9dcd70c32180 | 151 | if (rfile == NULL) { |
TickTock | 1:9dcd70c32180 | 152 | printf("no file found\n"); |
TickTock | 1:9dcd70c32180 | 153 | } |
TickTock | 1:9dcd70c32180 | 154 | while (!feof(rfile)) |
TickTock | 1:9dcd70c32180 | 155 | { |
TickTock | 1:9dcd70c32180 | 156 | c=fgetc(rfile); |
TickTock | 1:9dcd70c32180 | 157 | printf("%02x ",c); |
TickTock | 1:9dcd70c32180 | 158 | if (++i>11) |
TickTock | 1:9dcd70c32180 | 159 | { |
TickTock | 1:9dcd70c32180 | 160 | printf("\n"); |
TickTock | 1:9dcd70c32180 | 161 | i=0; |
TickTock | 1:9dcd70c32180 | 162 | } |
TickTock | 1:9dcd70c32180 | 163 | } |
TickTock | 1:9dcd70c32180 | 164 | fclose(rfile); |
TickTock | 1:9dcd70c32180 | 165 | } |
TickTock | 1:9dcd70c32180 | 166 | |
TickTock | 1:9dcd70c32180 | 167 | void logCan (CANMessage canRXmsg) |
TickTock | 1:9dcd70c32180 | 168 | { |
TickTock | 1:9dcd70c32180 | 169 | FILE *file; |
TickTock | 1:9dcd70c32180 | 170 | |
TickTock | 1:9dcd70c32180 | 171 | unsigned short ts; |
TickTock | 1:9dcd70c32180 | 172 | |
TickTock | 1:9dcd70c32180 | 173 | ts=getTimeStamp(); |
TickTock | 1:9dcd70c32180 | 174 | |
TickTock | 1:9dcd70c32180 | 175 | if (!logCreated) { |
TickTock | 1:9dcd70c32180 | 176 | file = fopen(LOGFILE, "w"); |
TickTock | 1:9dcd70c32180 | 177 | logCreated = true; |
TickTock | 1:9dcd70c32180 | 178 | } |
TickTock | 1:9dcd70c32180 | 179 | else |
TickTock | 1:9dcd70c32180 | 180 | file = fopen(LOGFILE, "a"); |
TickTock | 1:9dcd70c32180 | 181 | |
TickTock | 1:9dcd70c32180 | 182 | if (file == NULL) { |
TickTock | 1:9dcd70c32180 | 183 | if (logCreated) |
TickTock | 1:9dcd70c32180 | 184 | logCreated = false; |
TickTock | 1:9dcd70c32180 | 185 | return; |
TickTock | 1:9dcd70c32180 | 186 | } |
TickTock | 1:9dcd70c32180 | 187 | else |
TickTock | 1:9dcd70c32180 | 188 | { |
TickTock | 1:9dcd70c32180 | 189 | fprintf(file,"%c%c%c%c%c%c%c%c%c%c%c%c",ts>>8,ts&0xff,canRXmsg.id&0xff,(canRXmsg.id>>8)+(canRXmsg.len<<4),canRXmsg.data[0],canRXmsg.data[1],canRXmsg.data[2],canRXmsg.data[3],canRXmsg.data[4],canRXmsg.data[5],canRXmsg.data[6],canRXmsg.data[7]); |
TickTock | 1:9dcd70c32180 | 190 | fclose(file); |
TickTock | 1:9dcd70c32180 | 191 | } |
TickTock | 1:9dcd70c32180 | 192 | } |
TickTock | 0:1596b8644523 | 193 | |
TickTock | 0:1596b8644523 | 194 | void Log (char *message) |
TickTock | 0:1596b8644523 | 195 | { |
TickTock | 0:1596b8644523 | 196 | FILE *file; |
TickTock | 0:1596b8644523 | 197 | |
TickTock | 1:9dcd70c32180 | 198 | if (!logCreated) { |
TickTock | 0:1596b8644523 | 199 | file = fopen(LOGFILE, "w"); |
TickTock | 1:9dcd70c32180 | 200 | logCreated = true; |
TickTock | 0:1596b8644523 | 201 | } |
TickTock | 0:1596b8644523 | 202 | else |
TickTock | 0:1596b8644523 | 203 | file = fopen(LOGFILE, "a"); |
TickTock | 0:1596b8644523 | 204 | |
TickTock | 0:1596b8644523 | 205 | if (file == NULL) { |
TickTock | 1:9dcd70c32180 | 206 | if (logCreated) |
TickTock | 1:9dcd70c32180 | 207 | logCreated = false; |
TickTock | 0:1596b8644523 | 208 | return; |
TickTock | 0:1596b8644523 | 209 | } |
TickTock | 0:1596b8644523 | 210 | else |
TickTock | 0:1596b8644523 | 211 | { |
TickTock | 0:1596b8644523 | 212 | fputs(message, file); |
TickTock | 0:1596b8644523 | 213 | fclose(file); |
TickTock | 0:1596b8644523 | 214 | } |
TickTock | 1:9dcd70c32180 | 215 | } |
TickTock | 0:1596b8644523 | 216 | |
TickTock | 1:9dcd70c32180 | 217 | void send1() { |
TickTock | 1:9dcd70c32180 | 218 | static char counter = 0; // use for fake data |
TickTock | 1:9dcd70c32180 | 219 | |
TickTock | 1:9dcd70c32180 | 220 | can1.write(CANMessage(0x350, &counter, 1)); |
TickTock | 1:9dcd70c32180 | 221 | counter++; |
TickTock | 1:9dcd70c32180 | 222 | // test sending 3 quickly |
TickTock | 1:9dcd70c32180 | 223 | //can1.write(CANMessage(0x351, &counter, 1)); |
TickTock | 1:9dcd70c32180 | 224 | //can1.write(CANMessage(0x352, &counter, 1)); |
TickTock | 1:9dcd70c32180 | 225 | |
TickTock | 0:1596b8644523 | 226 | } |
TickTock | 0:1596b8644523 | 227 | |
TickTock | 0:1596b8644523 | 228 | |
TickTock | 0:1596b8644523 | 229 | void recieve1() { |
TickTock | 0:1596b8644523 | 230 | static CANMessage msg1; |
TickTock | 1:9dcd70c32180 | 231 | unsigned short msgTime; |
TickTock | 1:9dcd70c32180 | 232 | |
TickTock | 1:9dcd70c32180 | 233 | msgTime=getTimeStamp(); |
TickTock | 0:1596b8644523 | 234 | can1.read(msg1); |
TickTock | 1:9dcd70c32180 | 235 | printf("%sCan1 Message received: %d %x\n", upLine, msg1.data[0], msgTime); |
TickTock | 1:9dcd70c32180 | 236 | printf("Can1 rxd: %d\n", msg1.data[0]); |
TickTock | 1:9dcd70c32180 | 237 | if(logCreated) { |
TickTock | 1:9dcd70c32180 | 238 | logCan(msg1); |
TickTock | 1:9dcd70c32180 | 239 | } |
TickTock | 0:1596b8644523 | 240 | led2 = !led2; |
TickTock | 0:1596b8644523 | 241 | } |
TickTock | 0:1596b8644523 | 242 | void recieve2() { |
TickTock | 0:1596b8644523 | 243 | static CANMessage msg2; |
TickTock | 1:9dcd70c32180 | 244 | unsigned short msgTime; |
TickTock | 1:9dcd70c32180 | 245 | |
TickTock | 1:9dcd70c32180 | 246 | msgTime=getTimeStamp(); |
TickTock | 0:1596b8644523 | 247 | can2.read(msg2); |
TickTock | 1:9dcd70c32180 | 248 | printf("%sCan2 Message received: %d %x\n", upLine, msg2.data[0],msgTime); |
TickTock | 1:9dcd70c32180 | 249 | printf("Can2 rxd: %d\n", msg2.data[0]); |
TickTock | 1:9dcd70c32180 | 250 | if(logCreated) { |
TickTock | 1:9dcd70c32180 | 251 | logCan(msg2); |
TickTock | 1:9dcd70c32180 | 252 | } |
TickTock | 1:9dcd70c32180 | 253 | |
TickTock | 0:1596b8644523 | 254 | led3 = !led3; |
TickTock | 0:1596b8644523 | 255 | } |
TickTock | 0:1596b8644523 | 256 | |
TickTock | 0:1596b8644523 | 257 | int main() { |
TickTock | 1:9dcd70c32180 | 258 | can1.frequency(1000000); |
TickTock | 1:9dcd70c32180 | 259 | can2.frequency(1000000); |
TickTock | 1:9dcd70c32180 | 260 | //can1_SleepMode = 0; // Enable TX |
TickTock | 1:9dcd70c32180 | 261 | //can2_SleepMode = 0; // Enable TX |
TickTock | 1:9dcd70c32180 | 262 | can1_SleepMode = 1; // Turn on Monitor_only Mode |
TickTock | 1:9dcd70c32180 | 263 | can2_SleepMode = 1; // Turn on Monitor_only Mode |
TickTock | 1:9dcd70c32180 | 264 | ticker.attach(&send1, 0.25); |
TickTock | 0:1596b8644523 | 265 | can1.attach(&recieve1); |
TickTock | 0:1596b8644523 | 266 | can2.attach(&recieve2); |
TickTock | 1:9dcd70c32180 | 267 | unsigned int dsel = 1; // select right display |
TickTock | 1:9dcd70c32180 | 268 | tt.set_display(2); // select both displays |
TickTock | 1:9dcd70c32180 | 269 | tt.background(Black); // set background to black |
TickTock | 1:9dcd70c32180 | 270 | tt.foreground(White); // set chars to white |
TickTock | 1:9dcd70c32180 | 271 | tt.cls(); // clear the screen |
TickTock | 1:9dcd70c32180 | 272 | tt.set_font((unsigned char*) Arial12x12); // select the font |
TickTock | 1:9dcd70c32180 | 273 | tt.set_orientation(1); |
TickTock | 1:9dcd70c32180 | 274 | tt.set_display(dsel); // select display |
TickTock | 1:9dcd70c32180 | 275 | |
TickTock | 1:9dcd70c32180 | 276 | tt.calibrate(); // calibrate the touch |
TickTock | 1:9dcd70c32180 | 277 | tt.locate(0,0); |
TickTock | 1:9dcd70c32180 | 278 | tt.claim(stdout); // send stdout to the TFT display |
TickTock | 1:9dcd70c32180 | 279 | |
TickTock | 1:9dcd70c32180 | 280 | struct tm t; // pointer to a static tm structure |
TickTock | 1:9dcd70c32180 | 281 | |
TickTock | 1:9dcd70c32180 | 282 | seconds = time(NULL); |
TickTock | 1:9dcd70c32180 | 283 | t = *localtime(&seconds) ; |
TickTock | 1:9dcd70c32180 | 284 | |
TickTock | 1:9dcd70c32180 | 285 | // is it a date before 2012 ? |
TickTock | 1:9dcd70c32180 | 286 | if ((t.tm_year + 1900) < 2012 ) { |
TickTock | 1:9dcd70c32180 | 287 | // before 2012, so the RTC probably lost power |
TickTock | 1:9dcd70c32180 | 288 | // So, set a near-recent date in 2012 |
TickTock | 1:9dcd70c32180 | 289 | |
TickTock | 1:9dcd70c32180 | 290 | // enter people-values here |
TickTock | 1:9dcd70c32180 | 291 | t.tm_year = 2012 ; // 28 May 2012 |
TickTock | 1:9dcd70c32180 | 292 | t.tm_mon = 6 ; // 1 to 12 |
TickTock | 1:9dcd70c32180 | 293 | t.tm_mday = 1; |
TickTock | 1:9dcd70c32180 | 294 | t.tm_hour = 12; // 12:59:56 PM (after noon) |
TickTock | 1:9dcd70c32180 | 295 | t.tm_min = 59; |
TickTock | 1:9dcd70c32180 | 296 | t.tm_sec = 56; |
TickTock | 1:9dcd70c32180 | 297 | |
TickTock | 1:9dcd70c32180 | 298 | // adjust for tm structure required values |
TickTock | 1:9dcd70c32180 | 299 | t.tm_year = t.tm_year - 1900; |
TickTock | 1:9dcd70c32180 | 300 | t.tm_mon = t.tm_mon - 1; |
TickTock | 1:9dcd70c32180 | 301 | |
TickTock | 1:9dcd70c32180 | 302 | // set the RTC |
TickTock | 1:9dcd70c32180 | 303 | set_time(mktime(&t)); |
TickTock | 1:9dcd70c32180 | 304 | seconds = time(NULL); |
TickTock | 1:9dcd70c32180 | 305 | |
TickTock | 1:9dcd70c32180 | 306 | // printf("Set RTC to:\n" ); |
TickTock | 1:9dcd70c32180 | 307 | // strftime(sTemp, 32, "%a %m/%d/%Y %X", localtime(&seconds)); |
TickTock | 1:9dcd70c32180 | 308 | // printf("%s\n", sTemp); // DAY MM/DD/YYYY HH:MM:SS |
TickTock | 0:1596b8644523 | 309 | } |
TickTock | 0:1596b8644523 | 310 | } |