canbus rpm test

Dependencies:   mbed

Committer:
guigra
Date:
Wed Sep 29 20:40:07 2010 +0000
Revision:
0:2e70b895129c

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
guigra 0:2e70b895129c 1 #include "mbed.h"
guigra 0:2e70b895129c 2 #include "TextLCD.h"
guigra 0:2e70b895129c 3 //leemos el can a 500 kb/s y lo enviamos por el usb
guigra 0:2e70b895129c 4
guigra 0:2e70b895129c 5 DigitalOut led1(LED1);
guigra 0:2e70b895129c 6 DigitalOut led2(LED2);
guigra 0:2e70b895129c 7 DigitalOut led3(LED3);
guigra 0:2e70b895129c 8 DigitalOut led4(LED4);
guigra 0:2e70b895129c 9 Serial pc(USBTX, USBRX); // tx, rx
guigra 0:2e70b895129c 10 CAN can2(p30,p29);
guigra 0:2e70b895129c 11 CANMessage can_MsgRx;
guigra 0:2e70b895129c 12
guigra 0:2e70b895129c 13 TextLCD lcd(p18,p19,p20,p17,p16,p15,p14);
guigra 0:2e70b895129c 14 static char error=0;
guigra 0:2e70b895129c 15 int main() {
guigra 0:2e70b895129c 16 char buffer[20];
guigra 0:2e70b895129c 17 int engine_data;
guigra 0:2e70b895129c 18 //float
guigra 0:2e70b895129c 19 lcd.locate(0,0);
guigra 0:2e70b895129c 20 lcd.printf("C3 PICASSO v2");
guigra 0:2e70b895129c 21
guigra 0:2e70b895129c 22 lcd.locate(0,1);
guigra 0:2e70b895129c 23 lcd.printf("RICARDO GUILLEN");
guigra 0:2e70b895129c 24
guigra 0:2e70b895129c 25
guigra 0:2e70b895129c 26
guigra 0:2e70b895129c 27 wait(3);
guigra 0:2e70b895129c 28 lcd.cls();
guigra 0:2e70b895129c 29
guigra 0:2e70b895129c 30 //inicializamos el can a 500kb/s
guigra 0:2e70b895129c 31 can2.frequency(500000);
guigra 0:2e70b895129c 32
guigra 0:2e70b895129c 33 //bulce principal
guigra 0:2e70b895129c 34 while (1) {
guigra 0:2e70b895129c 35
guigra 0:2e70b895129c 36 if (can2.read(can_MsgRx)) {
guigra 0:2e70b895129c 37
guigra 0:2e70b895129c 38
guigra 0:2e70b895129c 39
guigra 0:2e70b895129c 40
guigra 0:2e70b895129c 41
guigra 0:2e70b895129c 42 switch(can_MsgRx.id){
guigra 0:2e70b895129c 43 case 0x208:
guigra 0:2e70b895129c 44 //engine_data = ((can_MsgRx.data[0]*256) + can_MsgRx.data[1])/4;
guigra 0:2e70b895129c 45 // sprintf(buffer,"%d rpm ",(int) engine_data);
guigra 0:2e70b895129c 46 // sprintf(buffer,"%d rpm ",can_MsgRx.id);
guigra 0:2e70b895129c 47 //unsigned long a=array[0]|(array[1]<<8);
guigra 0:2e70b895129c 48 /* engine_data=(can_MsgRx.data[0]|(can_MsgRx.data[1]<<8)/10);
guigra 0:2e70b895129c 49 lcd.locate(0,0);
guigra 0:2e70b895129c 50 lcd.printf(buffer);
guigra 0:2e70b895129c 51 lcd.printf("%d rpm %x%x ",(int) engine_data,can_MsgRx.data[0],can_MsgRx.data[1]);
guigra 0:2e70b895129c 52 */
guigra 0:2e70b895129c 53
guigra 0:2e70b895129c 54 //(s[ 0 ] << 8) +s[ 1 ]
guigra 0:2e70b895129c 55 /* engine_data=(can_MsgRx.data[0]<<8 + (can_MsgRx.data[1])/10);
guigra 0:2e70b895129c 56 sprintf(buffer,"0000%x%x",can_MsgRx.data[0],can_MsgRx.data[1]);
guigra 0:2e70b895129c 57 lcd.locate(0,0);
guigra 0:2e70b895129c 58 // lcd.printf(buffer);
guigra 0:2e70b895129c 59 lcd.printf("%d rpm %x%x %s",(int) engine_data,can_MsgRx.data[0],can_MsgRx.data[1],buffer);*/
guigra 0:2e70b895129c 60
guigra 0:2e70b895129c 61 unsigned char b[4];
guigra 0:2e70b895129c 62 b[0]=0x00;
guigra 0:2e70b895129c 63 b[1]=0x00;
guigra 0:2e70b895129c 64 b[2]=can_MsgRx.data[0];
guigra 0:2e70b895129c 65 b[3]=can_MsgRx.data[1];
guigra 0:2e70b895129c 66 int valor= (b[0] << 24) + ((b[1] & 0xFF) << 16)+ ((b[2] & 0xFF) << 8)+ (b[3] & 0xFF);
guigra 0:2e70b895129c 67 lcd.locate(0,0);
guigra 0:2e70b895129c 68 // lcd.printf(buffer);
guigra 0:2e70b895129c 69 lcd.printf("%d rpm ", (valor/10));
guigra 0:2e70b895129c 70
guigra 0:2e70b895129c 71
guigra 0:2e70b895129c 72 break;
guigra 0:2e70b895129c 73 //default:
guigra 0:2e70b895129c 74 //lcd.locate(0,1);
guigra 0:2e70b895129c 75 //lcd.printf("default:%x",can_MsgRx.id);
guigra 0:2e70b895129c 76 }
guigra 0:2e70b895129c 77
guigra 0:2e70b895129c 78 // pc.printf("id: 0x%x data:", can_MsgRx.id);
guigra 0:2e70b895129c 79 pc.printf("%x,",can_MsgRx.id);
guigra 0:2e70b895129c 80 for (char i=0; i<can_MsgRx.len; i++) {
guigra 0:2e70b895129c 81 if(i==can_MsgRx.len-1){
guigra 0:2e70b895129c 82 pc.printf("%x", can_MsgRx.data[i]);
guigra 0:2e70b895129c 83 }else{
guigra 0:2e70b895129c 84 pc.printf("%x,", can_MsgRx.data[i]);
guigra 0:2e70b895129c 85
guigra 0:2e70b895129c 86 }
guigra 0:2e70b895129c 87 }
guigra 0:2e70b895129c 88 pc.printf("\n\r");
guigra 0:2e70b895129c 89 // mensaje ok,
guigra 0:2e70b895129c 90 // led3 = !led3;
guigra 0:2e70b895129c 91 led3=1;
guigra 0:2e70b895129c 92 led4=0;
guigra 0:2e70b895129c 93
guigra 0:2e70b895129c 94
guigra 0:2e70b895129c 95
guigra 0:2e70b895129c 96
guigra 0:2e70b895129c 97
guigra 0:2e70b895129c 98
guigra 0:2e70b895129c 99
guigra 0:2e70b895129c 100
guigra 0:2e70b895129c 101
guigra 0:2e70b895129c 102
guigra 0:2e70b895129c 103
guigra 0:2e70b895129c 104
guigra 0:2e70b895129c 105
guigra 0:2e70b895129c 106
guigra 0:2e70b895129c 107 }else{
guigra 0:2e70b895129c 108 if(error==254){
guigra 0:2e70b895129c 109 // pc.printf("Errores: %x last: %x \n\r",error, can2.rderror());
guigra 0:2e70b895129c 110 error=0;
guigra 0:2e70b895129c 111 }
guigra 0:2e70b895129c 112
guigra 0:2e70b895129c 113 error++;
guigra 0:2e70b895129c 114 // led4 = !led4;
guigra 0:2e70b895129c 115 led4=1;
guigra 0:2e70b895129c 116 led3=0;
guigra 0:2e70b895129c 117
guigra 0:2e70b895129c 118 }
guigra 0:2e70b895129c 119 }
guigra 0:2e70b895129c 120
guigra 0:2e70b895129c 121 }