.

Dependencies:   SDHCFileSystem mbed

Revision:
0:1596b8644523
Child:
1:dafb963c3c14
--- /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