v1.0

Dependencies:   CAN_CONSOLE_v3 mbed

Fork of CAN_CONSOLE_v3 by RaC2018

Committer:
protongamer
Date:
Tue Mar 27 09:54:04 2018 +0000
Revision:
3:86e21a36eecb
Parent:
2:1e06fd49ea7b
1 moteur un bp; probl?me sur la requete pour la demande de postiion

Who changed what in which revision?

UserRevisionLine numberNew contents of line
LouisReynier 0:1ab5fdb4fa56 1 #include "mbed.h"
protongamer 3:86e21a36eecb 2 #include "can_parameters.h"
protongamer 3:86e21a36eecb 3 /*
protongamer 3:86e21a36eecb 4 Projet BTS SN - Robot à câbles - Lycée Georges Cabanis
protongamer 3:86e21a36eecb 5 Enzo Niro - Erwin Sazio
protongamer 3:86e21a36eecb 6 Transmission par Bus CAN(protocol CANOpen)
protongamer 3:86e21a36eecb 7
protongamer 3:86e21a36eecb 8 */
LouisReynier 0:1ab5fdb4fa56 9
protongamer 1:4d70e593345f 10
protongamer 3:86e21a36eecb 11
protongamer 3:86e21a36eecb 12
protongamer 3:86e21a36eecb 13
protongamer 3:86e21a36eecb 14
protongamer 3:86e21a36eecb 15 DigitalOut MOTOR1_OP(LED1);
protongamer 3:86e21a36eecb 16 DigitalOut MOTOR2_OP(LED2);
protongamer 3:86e21a36eecb 17 DigitalOut DEB_MOD_DEG(LED3);
protongamer 3:86e21a36eecb 18 DigitalOut DEB_MOD_NOR(LED4);
protongamer 3:86e21a36eecb 19 DigitalOut MOD_DEG(p26);
protongamer 3:86e21a36eecb 20 DigitalOut MOD_NOR(p25);
protongamer 3:86e21a36eecb 21 DigitalIn SWH(p5);
protongamer 3:86e21a36eecb 22 DigitalIn SWV(p6);
protongamer 3:86e21a36eecb 23 DigitalIn BPO(p7);
protongamer 3:86e21a36eecb 24
LouisReynier 0:1ab5fdb4fa56 25 CAN can1(p9, p10,1000000);// on definit pin et debit
LouisReynier 0:1ab5fdb4fa56 26 CAN can2(p30, p29, 1000000);
protongamer 1:4d70e593345f 27 Serial pc(USBTX, USBRX);
protongamer 1:4d70e593345f 28 //AnalogIn pot_1(p19); // potard pour selection
protongamer 1:4d70e593345f 29
protongamer 1:4d70e593345f 30
protongamer 1:4d70e593345f 31
protongamer 1:4d70e593345f 32 void send(int id, char octet_emis[], char RouD, char longueur )
protongamer 1:4d70e593345f 33 {
protongamer 1:4d70e593345f 34 int emis_ok = 0 ;
LouisReynier 0:1ab5fdb4fa56 35
protongamer 1:4d70e593345f 36 if (RouD == 'D')
protongamer 1:4d70e593345f 37 { emis_ok = can2.write(CANMessage(id, octet_emis, longueur, CANData, CANStandard )) ;
protongamer 3:86e21a36eecb 38 //pc.printf("id: %x, %c L = %d, \nData : %x:%x:%x:%x ... \n", id,RouD,longueur,octet_emis[0],octet_emis[1], octet_emis[2], octet_emis[3] );
protongamer 1:4d70e593345f 39 }// c'ets la valeur retournée par la fonction write
protongamer 1:4d70e593345f 40 else
protongamer 1:4d70e593345f 41 { emis_ok = can2.write(CANMessage(id, octet_emis, longueur, CANRemote, CANStandard ));
protongamer 3:86e21a36eecb 42 //pc.printf("id: %x, %c L = %d, \nData : %x:%x:%x:%x ... \n", id,RouD,longueur,octet_emis[0],octet_emis[1], octet_emis[2], octet_emis[3] );
protongamer 1:4d70e593345f 43 }
protongamer 1:4d70e593345f 44 //lcd.locate(0,10);
protongamer 1:4d70e593345f 45 //lcd.printf("id: %x, %c L = %d, \nData : %x:%x:%x:%x ... \n", id,RouD,longueur,octet_emis[0],octet_emis[1], octet_emis[2], octet_emis[3] );
protongamer 3:86e21a36eecb 46 /*if(emis_ok) {
protongamer 1:4d70e593345f 47 // ici octet emis n'a pas de sens car trame remote !
protongamer 3:86e21a36eecb 48 //pc.printf("send \r \n");
protongamer 3:86e21a36eecb 49 } */
LouisReynier 0:1ab5fdb4fa56 50 }
protongamer 1:4d70e593345f 51
protongamer 1:4d70e593345f 52
protongamer 1:4d70e593345f 53
LouisReynier 0:1ab5fdb4fa56 54
LouisReynier 0:1ab5fdb4fa56 55 int main() {
protongamer 1:4d70e593345f 56
protongamer 3:86e21a36eecb 57 CANMessage msg;
protongamer 3:86e21a36eecb 58 uint8_t ping = 0;
protongamer 3:86e21a36eecb 59 char command[8]; //word to send command
protongamer 3:86e21a36eecb 60 //define Pullup switch
protongamer 3:86e21a36eecb 61 SWH.mode(PullUp);
protongamer 3:86e21a36eecb 62 SWV.mode(PullUp);
protongamer 3:86e21a36eecb 63 BPO.mode(PullUp);
protongamer 3:86e21a36eecb 64 pc.printf("starting...\r\n");
protongamer 3:86e21a36eecb 65 MOD_DEG = 1;
protongamer 3:86e21a36eecb 66 wait(0.1);
protongamer 3:86e21a36eecb 67 MOD_DEG = 0;
protongamer 3:86e21a36eecb 68 wait(0.1);
protongamer 3:86e21a36eecb 69 MOD_DEG = 1;
protongamer 3:86e21a36eecb 70 wait(0.1);
protongamer 3:86e21a36eecb 71 MOD_DEG = 0;
protongamer 3:86e21a36eecb 72 wait(0.1);
protongamer 3:86e21a36eecb 73 MOD_DEG = 1;
protongamer 3:86e21a36eecb 74 wait(0.1);
protongamer 3:86e21a36eecb 75 MOD_DEG = 0;
protongamer 3:86e21a36eecb 76 wait(0.1);
protongamer 3:86e21a36eecb 77
protongamer 3:86e21a36eecb 78 command[0] = DRIVER_R1;
protongamer 3:86e21a36eecb 79 command[1] = DRIVER_R2;
protongamer 3:86e21a36eecb 80
protongamer 3:86e21a36eecb 81 while(ping == 0){
protongamer 3:86e21a36eecb 82 pc.printf("ping...\r\n");
protongamer 3:86e21a36eecb 83 send(INITOP, command, 'D', 2); //send word to put pluto driver in operational mode
protongamer 3:86e21a36eecb 84 MOD_NOR = 1;
protongamer 3:86e21a36eecb 85 if(can2.read(msg)) {
protongamer 3:86e21a36eecb 86 pc.printf("Done\r\n");
protongamer 3:86e21a36eecb 87 ping = 1;
protongamer 1:4d70e593345f 88 }
protongamer 3:86e21a36eecb 89 wait(0.1);
protongamer 3:86e21a36eecb 90 MOD_NOR = 0;
protongamer 3:86e21a36eecb 91 wait(0.9);
protongamer 1:4d70e593345f 92
protongamer 3:86e21a36eecb 93 }
protongamer 1:4d70e593345f 94
protongamer 1:4d70e593345f 95
protongamer 1:4d70e593345f 96
protongamer 3:86e21a36eecb 97 while(1){
protongamer 3:86e21a36eecb 98 if(SWH == 0){
protongamer 3:86e21a36eecb 99 wait(1.0);
protongamer 3:86e21a36eecb 100 send(0x0195, command, 'R', 0); //send word to put pluto driver in operational mode
protongamer 3:86e21a36eecb 101 wait(1);
protongamer 3:86e21a36eecb 102 if(can2.read(msg)) {
protongamer 3:86e21a36eecb 103 for(int i = 0; i < msg.len; i++){
protongamer 3:86e21a36eecb 104 pc.printf("0x%x ",msg.data[i]);
protongamer 3:86e21a36eecb 105 }//end of for
protongamer 3:86e21a36eecb 106 pc.printf("\r \n");
protongamer 3:86e21a36eecb 107 }//can.read(len)
protongamer 3:86e21a36eecb 108 }//end of SWH == 0
protongamer 3:86e21a36eecb 109
protongamer 3:86e21a36eecb 110 switch(BPO){
protongamer 3:86e21a36eecb 111 case 0:
protongamer 3:86e21a36eecb 112
protongamer 3:86e21a36eecb 113 switch(SWV){
protongamer 3:86e21a36eecb 114 case 0:
protongamer 3:86e21a36eecb 115 command[0] = 0x00;
protongamer 3:86e21a36eecb 116 command[1] = 0x00;
protongamer 3:86e21a36eecb 117 command[2] = 0xBF;
protongamer 3:86e21a36eecb 118 command[3] = 0x00;
protongamer 3:86e21a36eecb 119 send(RPDO1_R, command, 'D', 4); //send word to put pluto driver in operational mode
protongamer 3:86e21a36eecb 120 break;
protongamer 3:86e21a36eecb 121
protongamer 3:86e21a36eecb 122 case 1:
protongamer 3:86e21a36eecb 123 command[0] = 0xFF;
protongamer 3:86e21a36eecb 124 command[1] = 0xFF;
protongamer 3:86e21a36eecb 125 command[2] = 0x40;
protongamer 3:86e21a36eecb 126 command[3] = 0xFF;
protongamer 3:86e21a36eecb 127 send(RPDO1_R, command, 'D', 4); //send word to put pluto driver in operational mode
protongamer 3:86e21a36eecb 128
protongamer 3:86e21a36eecb 129 break;
protongamer 3:86e21a36eecb 130
protongamer 3:86e21a36eecb 131
protongamer 3:86e21a36eecb 132
protongamer 3:86e21a36eecb 133 }
protongamer 3:86e21a36eecb 134
protongamer 3:86e21a36eecb 135 break;
protongamer 3:86e21a36eecb 136
protongamer 3:86e21a36eecb 137 case 1:
protongamer 3:86e21a36eecb 138
protongamer 3:86e21a36eecb 139 command[0] = 0x00;
protongamer 3:86e21a36eecb 140 command[1] = 0x00;
protongamer 3:86e21a36eecb 141 command[2] = 0x00;
protongamer 3:86e21a36eecb 142 command[3] = 0x00;
protongamer 3:86e21a36eecb 143 send(RPDO1_R, command, 'D', 4); //send word to put pluto driver in operational mode
protongamer 3:86e21a36eecb 144 break;
protongamer 3:86e21a36eecb 145
protongamer 3:86e21a36eecb 146 }
protongamer 1:4d70e593345f 147
protongamer 1:4d70e593345f 148
protongamer 1:4d70e593345f 149 }// fin while(1)
protongamer 1:4d70e593345f 150
protongamer 1:4d70e593345f 151 } // fin main
protongamer 1:4d70e593345f 152
protongamer 3:86e21a36eecb 153