CAN a enviar_TLMoto

Dependencies:   CANnucleo mbed

Fork of CANnucleo_Hello by Zoltan Hudak

Revision:
12:4f5cec652e77
Parent:
11:07d927da1a94
Child:
13:77261ea62081
--- a/main.cpp	Fri Mar 11 12:29:38 2016 +0000
+++ b/main.cpp	Sun Jun 26 13:59:00 2016 +0000
@@ -1,122 +1,34 @@
-/*
- * An example showing how to use the CANnucleo library:
- *
- * Two affordable (less than $4 on ebay) STM32F103C8T6 boards (20kB SRAM, 64kB Flash), 
- * compatible with the NUCLEO-F103RB platform (20kB SRAM, 128kB Flash), 
- * are connected to the same CAN bus via transceivers (MCP2551 or TJA1040, or etc.). 
- * CAN transceivers are not part of NUCLEO boards, therefore must be added by you. 
- * Remember also that CAN bus (even a short one) must be terminated with 120 Ohm resitors at both ends.
- *
- * For more details see the wiki page <https://developer.mbed.org/users/hudakz/code/CANnucleo_Hello/>
- *
- * NOTE: If you'd like to use the official NUCLEO boards comment out line 25
- *
- * The same code is used for both NUCLEO boards, but:
- *      For board #1 compile the example without any change.
- *      For board #2 comment out line 26 before compiling 
- *
- * Once the binaries have been downloaded to the boards reset board #1.
- *
- */ 
-
 #include "mbed.h"
 #include "CAN.h"
 
-#define TARGET_STM32F103C8T6  1     // comment out this line when using official NUCLEO boards!                                    
-#define BOARD1                1     // comment out this line when compiling for board #2
-
-#if defined(TARGET_STM32F103C8T6) 
-    #define   LED_PIN   PC_13 
-    const int OFF = 1;
-    const int ON  = 0;
-#else
-    #define   LED_PIN   LED1
-    const int OFF = 0;
-    const int ON  = 1;
-#endif
+  //  const unsigned int TX_ID = 0x101;
+      const unsigned int TX_ID = 0x155;  //em binario: 101010101
 
-#if defined(BOARD1)
-    const unsigned int RX_ID = 0x100;
-    const unsigned int TX_ID = 0x101;
-#else
-    const unsigned int RX_ID = 0x101;
-    const unsigned int TX_ID = 0x100;
-#endif
-
-DigitalOut      led(LED_PIN);
+DigitalOut      led(PA_5);
 int             ledState;
-Timer           timer;
 CAN             can(PA_11, PA_12);  // CAN Rx pin name, CAN Tx pin name
-CANMessage      rxMsg;
 CANMessage      txMsg;
 int             counter = 0;
-volatile bool   msgAvailable = false;
 
-/**
- * @brief   'CAN receive-complete' interrup handler.
- * @note    Called on arrival of new CAN message.
- *          Keep it as short as possible.
- * @param   
- * @retval  
- */
-void onMsgReceived() {
-    msgAvailable = true;
-}
-
-/**
- * @brief   Main
- * @note
- * @param 
- * @retval
- */
 int main() {
-    can.frequency(1000000);                     // set bit rate to 1Mbps
-    can.attach(&onMsgReceived, CAN::RxIrq);     // attach 'CAN receive-complete' interrupt handler
-    
-#if defined(BOARD1)
-    led = ON;       // turn LED on
-    timer.start();  // start timer
-#else
-    led = OFF;      // turn LED off
-#endif
+    can.frequency(100000);                     // set bit rate to 1Mbps
+    led = 1;       // turn LED on
 
     while(1) {
-        if(timer.read() >= 1.0) {               // check for timeout
-            timer.stop();                       // stop timer
-            timer.reset();                      // reset timer
+            wait(10);
+
             counter++;                          // increment counter
-            ledState = led.read();              // get led state
-            txMsg.clear();                      // clear Tx message storage
-            txMsg.id = TX_ID;                   // set ID
-            txMsg << counter;                   // append first data item
-            txMsg << ledState;                  // append second data item (total data lenght must be <= 8 bytes!)
-            led = OFF;                          // turn LED off
+           // ledState = led.read();              // get led state
+           ledState = 1;
+           txMsg.clear();                      // clear Tx message storage
+           txMsg.id = TX_ID;                   // set ID   (9 bits)
+           txMsg << counter;                   // append first data item  (32? bits?=4bytes)
+           txMsg << ledState;                  // append second data item (total data lenght must be <= 8 bytes!) (=4bytes)
+            
             if(can.write(txMsg))                // transmit message
-                printf("CAN message sent\r\n"); 
+                led = 1;       // turn LED on 
             else
-                printf("Transmission error\r\n");
-        }
-        if(msgAvailable) {
-            msgAvailable = false;               // reset flag for next use
-            can.read(rxMsg);                    // read message into Rx message storage
-            printf("CAN message received:\r\n");
-            printf("  ID     = %#x\r\n", rxMsg.id);
-            printf("  Type   = %d\r\n", rxMsg.type);
-            printf("  Format = %d\r\n", rxMsg.format);
-            printf("  Length = %d\r\n", rxMsg.len);
-            printf("  Data   =");            
-            for(int i = 0; i < rxMsg.len; i++)
-                printf(" %x", rxMsg.data[i]);
-            printf("\r\n");
-            // Filtering performed by software:           
-            if(rxMsg.id == RX_ID) {             // See comments in CAN.cpp for filtering performed by hadware
-                rxMsg >> counter;               // extract first data item
-                rxMsg >> ledState;              // extract second data item
-                printf("counter = %d\r\n", counter);
-                led = ledState;                 // set LED
-                timer.start();                  // transmission lag
-            }
-        }
+                led = 0;       // turn LED off
+
     }
-}
-
+}
\ No newline at end of file