Formula Student / Mbed 2 deprecated Canbus_test

Dependencies:   mbed

Revision:
2:373260769485
Parent:
1:12ddbe69b6e6
Child:
3:7530a7aca1ab
--- a/main.cpp	Mon Nov 27 12:34:44 2017 +0000
+++ b/main.cpp	Wed Dec 06 07:52:44 2017 +0000
@@ -1,7 +1,6 @@
 /*** Thread: CAN ***
  * Test CAN to controller
- *TODO
- *2 Ints samenvoegen zodat we naar het juiste register kunnen sturen, register is fixed, de waardes voor de controller zijn afhankelijk van een sensor.
+ *
  */
 #include "mbed.h"
 #include "CAN.h"
@@ -10,8 +9,11 @@
 CAN can(PA_11, PA_12);
 
 DigitalOut canEN(PA_10);
-/* Heartbeat */
-DigitalOut led(LED1);
+
+DigitalIn safety(PB_1);
+DigitalOut buzzer(PB_0);
+
+AnalogIn analog_value(PA_0);
  
 /* Structures to help pack and unpack the 8 CAN data bytes */
 typedef struct bytes_64 {
@@ -30,42 +32,61 @@
     bytes_64 bytes;
 } data_packed;
  
- 
-/* main */
+long map(long x, long in_min, long in_max, long out_min, long out_max)                                                      //MAP functie voor verschalingen.
+{
+  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
+}
 int main() {
     
     printf("\r\n---Start---\r\n");
  
-    data_packed send_data;      //struct for send message
-    data_packed receive_data;   //struct for rcv message
-    CANMessage msg;             //message object for rcv
-    int send_id = 513;                                       //Id motorcontroller   0x201 -> 513
+    data_packed send_data;                                                                                                  //struct for send message
+    data_packed receive_data;                                                                                               //struct for rcv message
+    CANMessage msg;                                                                                                         //message object for rcv
+    int send_id = 513;                                                                                                      //Id motorcontroller   0x201 -> 513
     int send_status = 0;
+   /* int ADC_Torque_Filter[8];
+    int ADC_Torque_Value;
+    int i;    */                                                                                                              //Voor moving average te berekenen
+    canEN = 0;                                                                                                              //Voor de tranceiver
     
-    canEN = 0;                                              //Voor de tranceiver
-    
-    //send_data.data = 0x0CCD31;                              //0CCD snelheid motor, 31 register in controller.             WERKT
+    //send_data.data = 0x0CCD31;                                                                                            //0CCD snelheid motor, 31 register in controller.             WERKT
     send_data.data = 0;
-    can.frequency(1000000);                                 //1m freq
+    can.frequency(1000000);                                                                                                 //1m freq
     can.mode(CAN::LocalTest);
-    //can.mode(CAN::Normal);                                //1vd2 comment
-    /* Loop */
-    int x = 0x0CCD;
-    int y = 0x31;
-    /*/////////////////////////////////////////////////////////////
-    int Result;
-    Result = a[5];
-    Result = Result << 8;
-    Result = Result | b[2];
-    *//////////////////////////////////////////////////////////////
-    
-    unsigned pow = 10;
-    while(y >= pow)
-        pow *= 10;
-    send_data.data = x * pow + y;
-    
+    //can.mode(CAN::Normal);                                                                                                //1vd2 comment
+    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+    int speed = 0;                                                                                                          //Snelheid naar de motor
+    int reg = 0x31;                                                                                                         //register in de controller
+    float meas_r;
+    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     while (true) {
- 
+        meas_r = analog_value.read() * 100;
+        speed = map(meas_r, 0, 100, 0, 0x7FFF);                                                                             //waarde schommelt niet
+        
+   /*     for (i = 0; i < 7; i++)
+        {
+            ADC_Torque_Filter[i] = ADC_Torque_Filter[i+1];
+            //wait(0.005);                                                                                                  //wacht 5 ms
+        }
+        ADC_Torque_Filter[7] = speed;                                                                                       //gas waarde berekenen via 8point moving average
+        ADC_Torque_Value = ((   ADC_Torque_Filter[0]+
+                                ADC_Torque_Filter[1]+
+                                ADC_Torque_Filter[2]+
+                                ADC_Torque_Filter[3]+
+                                ADC_Torque_Filter[4]+
+                                ADC_Torque_Filter[5]+
+                                ADC_Torque_Filter[6]+
+                                ADC_Torque_Filter[7]
+                            ) / 8);
+   //      for (i = 0; i < 7; i++)                                                                                            //data van array leegmaken
+     //   {
+       //     ADC_Torque_Filter[i] = 0;
+            //wait(0.005);                                                                                                
+        //}*/
+        
+               
+        send_data.data = (speed << 8) + reg;                                                                       //shiften en optellen
         send_status = can.write(CANMessage(send_id, (char*) &send_data, 3));
  
         if (send_status == true) {
@@ -87,10 +108,6 @@
  
             printf("Message received ID,Msg: %d, %llu\r\n", msg.id, receive_data.data);
         }
- 
-        /* Heartbeat */
-        led = !led;
- 
         wait(0.5);
-    } //while
+    } 
 }
\ No newline at end of file