Saša Radosavljevic / Mbed 2 deprecated Lecture_os_2

Dependencies:   mbed

Committer:
higepi
Date:
Fri Feb 28 11:43:14 2020 +0000
Revision:
3:ac6eead48a9d
Parent:
1:6554c60faa06
Child:
4:4160376d7d69
test 1 avec mbed os2;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bcostm 0:d5bd863b2036 1 #include "mbed.h"
bcostm 0:d5bd863b2036 2
higepi 3:ac6eead48a9d 3 //AX12 myax12 (PC_4, PC_5, 1,115200);
higepi 3:ac6eead48a9d 4 Serial myserial_ax12(PC_4,PC_5,115200);
higepi 3:ac6eead48a9d 5 char tata[10];
higepi 3:ac6eead48a9d 6 int position;
higepi 3:ac6eead48a9d 7 Ticker fonction_10ms;
bcostm 0:d5bd863b2036 8
higepi 3:ac6eead48a9d 9 void Rx_Irq_fonction(void)
bcostm 0:d5bd863b2036 10 {
higepi 3:ac6eead48a9d 11 static int i_rx;
higepi 3:ac6eead48a9d 12 tata[i_rx]=myserial_ax12.getc();
higepi 3:ac6eead48a9d 13 if (tata[0]!=0xFF)
higepi 3:ac6eead48a9d 14 i_rx=0;
higepi 3:ac6eead48a9d 15 else i_rx++;
higepi 3:ac6eead48a9d 16 if ((tata[0]==0xFF) && (tata[1]==0xFF) && (tata[2]==0x01) && i_rx==7)
higepi 3:ac6eead48a9d 17 {
higepi 3:ac6eead48a9d 18 i_rx=0;
higepi 3:ac6eead48a9d 19 if(tata[4]==00) //si erreur est nulle
higepi 3:ac6eead48a9d 20 position = tata[5]+((uint16_t)tata[6]<<8);
higepi 3:ac6eead48a9d 21 tata[0]=0;
higepi 3:ac6eead48a9d 22 }
higepi 3:ac6eead48a9d 23 if (i_rx>9)
higepi 3:ac6eead48a9d 24 {
higepi 3:ac6eead48a9d 25 for(int i=0;i<10;i++)
higepi 3:ac6eead48a9d 26 tata[i]=0;
higepi 3:ac6eead48a9d 27 i_rx=0;
higepi 3:ac6eead48a9d 28 }
higepi 3:ac6eead48a9d 29 }
higepi 3:ac6eead48a9d 30
higepi 3:ac6eead48a9d 31 void fonction_10ms(void)
higepi 3:ac6eead48a9d 32 {
higepi 3:ac6eead48a9d 33 for(i=0;i<=7;i++)
higepi 3:ac6eead48a9d 34 {
higepi 3:ac6eead48a9d 35 myserial_ax12.putc(trame_demande_pos[i]);
bcostm 0:d5bd863b2036 36 }
bcostm 0:d5bd863b2036 37 }
higepi 3:ac6eead48a9d 38
higepi 3:ac6eead48a9d 39 int main(){
higepi 3:ac6eead48a9d 40 //myax12.SetMode(1); //passage en Continuous rotation
higepi 3:ac6eead48a9d 41 char trame_demande_pos[8]={0xFF,0xFF,0x01,0x4,0x2,0x24,2,0xD2};
higepi 3:ac6eead48a9d 42 char trame_cmd_speed[9]={0xFF,0xFF,0x01,0x5,0x3,0x20,0x10,0x0,0xC6};
higepi 3:ac6eead48a9d 43 float Angle;
higepi 3:ac6eead48a9d 44 short speed;
higepi 3:ac6eead48a9d 45 char data[10];
higepi 3:ac6eead48a9d 46 char s=0;
higepi 3:ac6eead48a9d 47 float temp;
higepi 3:ac6eead48a9d 48 int position_old=0,i,a;
higepi 3:ac6eead48a9d 49
higepi 3:ac6eead48a9d 50 //myax12.SetCRSpeed(0.05);
higepi 3:ac6eead48a9d 51
higepi 3:ac6eead48a9d 52 for(i=0;i<=8;i++)
higepi 3:ac6eead48a9d 53 {
higepi 3:ac6eead48a9d 54 myserial_ax12.putc(trame_cmd_speed[i]);
higepi 3:ac6eead48a9d 55 }
higepi 3:ac6eead48a9d 56
higepi 3:ac6eead48a9d 57 for(i=0;i<=7;i++)
higepi 3:ac6eead48a9d 58 {
higepi 3:ac6eead48a9d 59 myserial_ax12.putc(trame_demande_pos[i]);
higepi 3:ac6eead48a9d 60 }
higepi 3:ac6eead48a9d 61 myserial_ax12.attach(&Rx_Irq_fonction, Serial::RxIrq);
higepi 3:ac6eead48a9d 62
higepi 3:ac6eead48a9d 63
higepi 3:ac6eead48a9d 64 while(1) {
higepi 3:ac6eead48a9d 65 if (position != position_old)
higepi 3:ac6eead48a9d 66 {
higepi 3:ac6eead48a9d 67 printf("\n\rposition = %d\n\r mot recu :",position);
higepi 3:ac6eead48a9d 68 for(i=0;i<=7;i++)
higepi 3:ac6eead48a9d 69 {
higepi 3:ac6eead48a9d 70 printf("%X ",tata[i]);
higepi 3:ac6eead48a9d 71 }
higepi 3:ac6eead48a9d 72 position_old=position;
higepi 3:ac6eead48a9d 73 }
higepi 3:ac6eead48a9d 74 wait(0.01);
higepi 3:ac6eead48a9d 75 a++;
higepi 3:ac6eead48a9d 76 if(!(a % 20))
higepi 3:ac6eead48a9d 77
higepi 3:ac6eead48a9d 78 }
higepi 3:ac6eead48a9d 79
higepi 3:ac6eead48a9d 80 }
higepi 3:ac6eead48a9d 81
higepi 3:ac6eead48a9d 82 void set_speed(ID,speed)
higepi 3:ac6eead48a9d 83 void demande_lecture_pos(ID)
higepi 3:ac6eead48a9d 84
higepi 3:ac6eead48a9d 85
higepi 3:ac6eead48a9d 86 /*
higepi 3:ac6eead48a9d 87 #include "mbed.h"
higepi 3:ac6eead48a9d 88
higepi 3:ac6eead48a9d 89 //AX12 myax12 (PC_4, PC_5, 1,115200);
higepi 3:ac6eead48a9d 90 Serial myserial_ax12(PC_4,PC_5,115200);
higepi 3:ac6eead48a9d 91 char tata[10];
higepi 3:ac6eead48a9d 92 int position;
higepi 3:ac6eead48a9d 93
higepi 3:ac6eead48a9d 94 void Rx_Irq_fonction(void)
higepi 3:ac6eead48a9d 95 {
higepi 3:ac6eead48a9d 96 static int i_rx;
higepi 3:ac6eead48a9d 97 tata[i_rx]=myserial_ax12.getc();
higepi 3:ac6eead48a9d 98 if (tata[0]!=0xFF)
higepi 3:ac6eead48a9d 99 i_rx=0;
higepi 3:ac6eead48a9d 100 else i_rx++;
higepi 3:ac6eead48a9d 101 if ((tata[0]==0xFF) && (tata[1]==0xFF) && (tata[2]==0x01) && i_rx==7)
higepi 3:ac6eead48a9d 102 {
higepi 3:ac6eead48a9d 103 i_rx=0;
higepi 3:ac6eead48a9d 104 if(tata[4]==00) //si erreur est nulle
higepi 3:ac6eead48a9d 105 position = tata[5]+((uint16_t)tata[6]<<8);
higepi 3:ac6eead48a9d 106 tata[0]=0;
higepi 3:ac6eead48a9d 107 }
higepi 3:ac6eead48a9d 108 if (i_rx>9)
higepi 3:ac6eead48a9d 109 {
higepi 3:ac6eead48a9d 110 for(int i=0;i<10;i++)
higepi 3:ac6eead48a9d 111 tata[i]=0;
higepi 3:ac6eead48a9d 112 i_rx=0;
higepi 3:ac6eead48a9d 113 }
higepi 3:ac6eead48a9d 114 }
higepi 3:ac6eead48a9d 115
higepi 3:ac6eead48a9d 116 int main(){
higepi 3:ac6eead48a9d 117 //myax12.SetMode(1); //passage en Continuous rotation
higepi 3:ac6eead48a9d 118 char trame_demande_pos[8]={0xFF,0xFF,0x01,0x4,0x2,0x24,2,0xD2};
higepi 3:ac6eead48a9d 119 char trame_cmd_speed[9]={0xFF,0xFF,0x01,0x5,0x3,0x20,0x10,0x0,0xC6};
higepi 3:ac6eead48a9d 120 float Angle;
higepi 3:ac6eead48a9d 121 short speed;
higepi 3:ac6eead48a9d 122 char data[10];
higepi 3:ac6eead48a9d 123 char s=0;
higepi 3:ac6eead48a9d 124 float temp;
higepi 3:ac6eead48a9d 125 int position_old=0,i,a;
higepi 3:ac6eead48a9d 126 //myax12.SetCRSpeed(0.05);
higepi 3:ac6eead48a9d 127
higepi 3:ac6eead48a9d 128 for(i=0;i<=8;i++)
higepi 3:ac6eead48a9d 129 {
higepi 3:ac6eead48a9d 130 myserial_ax12.putc(trame_cmd_speed[i]);
higepi 3:ac6eead48a9d 131 }
higepi 3:ac6eead48a9d 132
higepi 3:ac6eead48a9d 133 for(i=0;i<=7;i++)
higepi 3:ac6eead48a9d 134 {
higepi 3:ac6eead48a9d 135 myserial_ax12.putc(trame_demande_pos[i]);
higepi 3:ac6eead48a9d 136 }
higepi 3:ac6eead48a9d 137 myserial_ax12.attach(&Rx_Irq_fonction, Serial::RxIrq);
higepi 3:ac6eead48a9d 138
higepi 3:ac6eead48a9d 139
higepi 3:ac6eead48a9d 140 while(1) {
higepi 3:ac6eead48a9d 141 if (position != position_old)
higepi 3:ac6eead48a9d 142 {
higepi 3:ac6eead48a9d 143 printf("\n\rposition = %d\n\r mot recu :",position);
higepi 3:ac6eead48a9d 144 for(i=0;i<=7;i++)
higepi 3:ac6eead48a9d 145 {
higepi 3:ac6eead48a9d 146 printf("%X ",tata[i]);
higepi 3:ac6eead48a9d 147 }
higepi 3:ac6eead48a9d 148 position_old=position;
higepi 3:ac6eead48a9d 149 }
higepi 3:ac6eead48a9d 150 wait(0.01);
higepi 3:ac6eead48a9d 151 a++;
higepi 3:ac6eead48a9d 152 if(!(a % 20))
higepi 3:ac6eead48a9d 153 for(i=0;i<=7;i++)
higepi 3:ac6eead48a9d 154 {
higepi 3:ac6eead48a9d 155 myserial_ax12.putc(trame_demande_pos[i]);
higepi 3:ac6eead48a9d 156 }
higepi 3:ac6eead48a9d 157 }
higepi 3:ac6eead48a9d 158
higepi 3:ac6eead48a9d 159 }
higepi 3:ac6eead48a9d 160
higepi 3:ac6eead48a9d 161 void set_speed(ID,speed)*/