test fork
Dependencies: SPI_TFTx2 SPI_TFTx2_ILI9341 TFT_fonts TOUCH_TFTx2 mbed
Fork of CANary_9341 by
Diff: main.cpp
- Revision:
- 0:1596b8644523
- Child:
- 1:9dcd70c32180
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Nov 19 04:44:11 2012 +0000 @@ -0,0 +1,157 @@ +#include "mbed.h" +#include "CAN.h" +#include "TextLCD.h" +#include "SDFileSystem.h" +#include "DebounceIn.h" +#include "log.h" +#include "beep.h" + +//VP230 +//1:D 8:RS +//2:GND 7:CANH +//3:VCC 6:CANL +//4:R 5:Vref + +//LPC1768 +//1: VSS +//2: NC:VIN +//3: NC:VB +//4: NC:nR +//5: SPI:MOSI --> 6:SDRAM:DI +//6: SPI:MISO --> 2:SDRAM:DO +//7: SPI:SCLK --> 4:SDRAM:SCLK +//8: CS --> 7:SDRAM:CS +//9: CAN1:TX --> 1:CAN1:D +//10: CAN1:RX --> 4:CAN1:R +//11: RS --> 4:LCD:RS +//12: E --> 6:LCD:E +//13: D4 --> 11:LCD:D4 +//14: D5 --> 12:LCD:D5 +//15: D6 --> 13:LCD:D6 +//16: D7 --> 14:LCD:D7 +//17: CD --> 1:SDRAM:CD +//18: NC:Ain +//19: PB2 +//20: PB1 +//21: Spkr+ +//22: NC:pwm +//23: NC:pwm +//24: NC:pwm +//25: NC:pwm +//26: NC:pwm +//27: CAN1:Sleep --> 8:CAN1:RS +//28: CAN2:Sleep --> 8:CAN2:RS +//29: CAN2:RX --> 4:CAN2:R +//30: CAN2:TX --> 1:CAN2:D +//31: NC:USB_D+ +//32: NC:USB_D- +//33: NC:Eth_TD+ +//34: NC:Eth_TD- +//35: NC:Eth_RD+ +//36: NC:Eth_RD- +//37: NC:IF+ +//38: NC:IF- +//39: NC:5Vout +//40: VCC3.3 + +Beep buzzer(p21); +DigitalIn CD( p17 ); +DigitalIn PB1( p20 ); +SDFileSystem sd(p5, p6, p7, p8, "sd"); // SDFileSystem::SDFileSystem(PinName mosi, PinName miso, PinName sclk, PinName cs, const char* name) +TextLCD lcd(p11, p12, p13, p14, p15, p16); // rs, e, d0-d3 (RW to GND) +Ticker ticker; +DigitalOut led1(LED1); +DigitalOut led2(LED2); +DigitalOut led3(LED3); +DigitalOut led4(LED4); +CAN can1(p9, p10); // CAN1 uses pins 9 and 10 (tx, rx) +CAN can2(p30, p29); // CAN2 uses pins 30 and 29 (tx, rx) +bool LogCreated = false; +char logMsg[64]; + +char counter = 0; +//DigitalOut can1_SleepMode(p11); // Use pin 11 to control the sleep mode of can1 +//DigitalOut can2_SleepMode(p28); // Use pin 28 to control the sleep mode of can2 +Serial pc(USBTX, USBRX); // tx, rx default settings (9600 8N1) + +void Log (char *message) +{ + FILE *file; + + if (!LogCreated) { + file = fopen(LOGFILE, "w"); + LogCreated = true; + } + else + file = fopen(LOGFILE, "a"); + + if (file == NULL) { + if (LogCreated) + LogCreated = false; + return; + } + else + { + fputs(message, file); + //fprintf(file, message); + fclose(file); + } + + if (file) + fclose(file); +} + + +void send() { + if(can1.write(CANMessage(0x350, &counter, 1))) { + counter++; + pc.printf("Message %d sent\n", counter); + lcd.printf("sent: %d \n", counter); + if(LogCreated) { + if((PB1==0)||(CD==0)){ + LogCreated=false; + pc.printf("Stopping log\n", counter); + }else{ + sprintf(logMsg, "sent: %d \n", counter); + Log(logMsg); + pc.printf("Message logged\n"); + buzzer.beep(800,0.025); } + } + } + led1 = !led1; +} + +void recieve1() { + static CANMessage msg1; + can1.read(msg1); + pc.printf("Can1 Message received: %d\n", msg1.data[0]); + lcd.printf("Can1 rxd: %d\n", msg1.data[0]); + led2 = !led2; +} +void recieve2() { + static CANMessage msg2; + can2.read(msg2); + pc.printf("Can2 Message received: %d\n", msg2.data[0]); + lcd.printf("Can2 rxd: %d\n", msg2.data[0]); + led3 = !led3; +} + +int main() { + pc.baud(115200); // change serial interface to pc to 115200, 8N1 + can1.frequency(100000); + can2.frequency(100000); + //can1_SleepMode = 0; // Turn off Sleep Mode + //can2_SleepMode = 0; // Turn off Sleep Mode + CD.mode(PullUp) ; //SDRAM Chip Detect + PB1.mode(PullUp) ; //Pushbutton 1 + ticker.attach(&send, 1); + can1.attach(&recieve1); + can2.attach(&recieve2); + if(CD == 1) { + pc.printf("Starting Can Log\n"); + Log("Starting Can Log\n"); + } + else { + pc.printf("No SDRAM Inserted.\n"); + } +} \ No newline at end of file