can amk

Dependencies:   mbed

Revision:
2:306861df19f5
Parent:
1:41d392ac86e9
--- a/main.cpp	Fri Apr 05 08:02:30 2019 +0000
+++ b/main.cpp	Thu Apr 11 08:23:20 2019 +0000
@@ -1,16 +1,97 @@
 #include "mbed.h"
 
-CAN can1(PA_11, PA_12, 100000);
+CAN can(PA_11, PA_12, 500000);
 Serial pc(PC_10,PC_11,19200);
 CANMessage msg;
+int flag;
 
+int counter=1;
+char sen[8]={0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00};
+char reset[8]={0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00};
+char niz[8]={0x00,0x07,0x1e,0x00,0xE8,0x03,0x00,0x00};
+
+CANMessage can283;
+CANMessage can285;
+
+Ticker ticker;
+
+Ticker ticker2;
+
+Ticker ticker3;
+
+void CANMsgReceive(){                     // CAN RX Interrupt Function
+    CANMessage tmpMsg;
+    if (can.read(tmpMsg)) {                 //Detect message
+        //pc.printf("%x\n",tmpMsg.id); 
+        if(tmpMsg.id==0x283) {
+            can283=tmpMsg;   
+            //pc.printf("id: %x %x %x \n",tmpMsg.id,tmpMsg.data[0],tmpMsg.data[1]);
+            }
+        else if (tmpMsg.id==0x285) can285=tmpMsg;
+        //pc.printf("%x %x \n",can283.data[0],can283.data[1]);
+        }
+};
+
+void send_reset() {
+    //printf("send()\n");
+    if(can.write(CANMessage(0x184, reset, 8))) {
+        //pc.printf("wloop()\n");
+        //counter++;
+        pc.printf("Message sent: %d\n", 1);
+    }
+}
+void send_en() {
+    //printf("send()\n");
+    if(can.write(CANMessage(0x184, sen, 8))) {
+        //pc.printf("wloop()\n");
+        //counter++;
+        pc.printf("Message sent: %d\n", 2);
+    }
+}
+void send_setpoint() {
+    //printf("send()\n");
+    if(can.write(CANMessage(0x184, niz, 8))) {
+        //pc.printf("wloop()\n");
+        //counter++;
+        pc.printf("Message sent: %d\n", 3);
+    }
+}
+ 
 int main() {
-    pc.printf("PILETINA SE ZA PRSTE LEPI!\n");
+    can.attach(&CANMsgReceive,CAN::RxIrq);
+    
+    //ticker.attach_us(send_reset,5000);
+    while(1){
+        can.write(CANMessage(0x184,reset,8));
+        wait_ms(10);
+        pc.printf("cao\n");
+        pc.printf("id:%x %x %x \n",can283.id,can283.data[0],can283.data[1]);
+        if((can283.data[1])==1){
+            //pc.printf("%x %x \n",can283.data[0],can283.data[1]);
+            //ticker.detach();
+            //ticker.attach_us(send_en,5000);
+            break;
+            }
+        }
+         while(1){
+             can.write(CANMessage(0x184,sen,8));
+             wait_ms(10);
+             pc.printf("ej\n");
+             pc.printf("id:%x %x %x \n",can283.id,can283.data[0],can283.data[1]);
+        if((can283.data[1])==0x79){
+            //ticker.detach();
+            //ticker.attach_us(send_setpoint,5000);
+            break;
+            }
+        }
+    
+    
     while(1) {
-        //printf("loop()\n");
-        if(can1.read(msg)) {
-            pc.printf("Mmmmmm, jarac kazes?");
-            pc.printf(" Id: %d\n",msg.data[0]);
-        };  
+        can.write(CANMessage(0x184,niz,8));
+        wait_ms(10);
+        pc.printf("ooj\n");
+        pc.printf("id:%x %x %x \n",can283.id,can283.data[2],can283.data[3]);
+        pc.printf("id:%x %x %x \n",can283.id,can283.data[4],can283.data[5]);
+        pc.printf("id:%x %x %x \n",can283.id,can283.data[6],can283.data[7]);
     };
 };
\ No newline at end of file