Biblio à utiliser pour communiquer avec la carte moteur
Dependents: Asserv_mot Asserv_mot
Diff: Asservissement.cpp
- Revision:
- 2:dc3ec8d77b6a
- Parent:
- 1:162aa6608ffe
diff -r 162aa6608ffe -r dc3ec8d77b6a Asservissement.cpp --- a/Asservissement.cpp Wed Apr 19 17:41:35 2017 +0000 +++ b/Asservissement.cpp Mon May 27 09:54:41 2019 +0000 @@ -1,5 +1,5 @@ + #include "Asservissement.h" -#include "My_ident.h" /*********************************************************************************************************/ /* FUNCTION NAME: SendRawId */ @@ -10,8 +10,8 @@ CANMessage msgTx=CANMessage(); msgTx.id=id; msgTx.len=0; - can1.write(msgTx); - //wait_us(200); + can.write(msgTx); + wait_us(200); } /*********************************************************************************************/ @@ -29,9 +29,55 @@ msgTx.data[0]=(unsigned char)from; msgTx.data[1]=(unsigned char)(from>>8); - can1.write(msgTx); + can.write(msgTx); +} + + +void Send2Short(unsigned short id, unsigned short d1, unsigned short d2) +{ + CANMessage msgTx=CANMessage(); + msgTx.id=id; + msgTx.len=4; + msgTx.format=CANStandard; + msgTx.type=CANData; + // from sur 2 octets + msgTx.data[0]=(unsigned char)d1; + msgTx.data[1]=(unsigned char)(d1>>8); + msgTx.data[2]=(unsigned char)d2; + msgTx.data[3]=(unsigned char)(d2>>8); + + can.write(msgTx); } +void SendMsgCan(unsigned short id, unsigned char* data, int len) +{ + CANMessage msgTx=CANMessage(); + msgTx.id=id; + msgTx.len=len; + msgTx.format=CANStandard; + msgTx.type=CANData; + // from sur 2 octets + for(int i = 0; i<len; i++) + { + msgTx.data[i]=data[i]; + } + + can.write(msgTx); +} +void SendCharCan(unsigned short id, unsigned char data) +{ + CANMessage msgTx=CANMessage(); + msgTx.id=id; + msgTx.len=1; + msgTx.format=CANStandard; + msgTx.type=CANData; + msgTx.data[0]=data; + + can.write(msgTx); +} + + + /*********************************************************************************************/ /* FUNCTION NAME: GoToPosition */ /* DESCRIPTION : Transmission CAN correspondant à un asservissement en position (x,y,theta) */ @@ -56,14 +102,14 @@ msgTx.data[5]=(unsigned char)(theta>>8); msgTx.data[6]=sens; - can1.write(msgTx); + can.write(msgTx); } /****************************************************************************************/ /* FUNCTION NAME: Rotate */ /* DESCRIPTION : Transmission CAN correspondant à une rotation */ /****************************************************************************************/ - void Rotate (signed short angle) +void Rotate (signed short angle) { CANMessage msgTx=CANMessage(); msgTx.id=ASSERVISSEMENT_ROTATION; // Tx rotation autour du centre du robot @@ -74,7 +120,7 @@ msgTx.data[0]=(unsigned char)angle; msgTx.data[1]=(unsigned char)(angle>>8); - can1.write(msgTx); + can.write(msgTx); } @@ -108,7 +154,7 @@ //Enchainement sur 1 octet msgTx.data[5]=isEnchainement; - can1.write(msgTx); + can.write(msgTx); //wait_ms(500); } @@ -134,7 +180,7 @@ // Enchainement sur 1 octet msgTx.data[5]=enchainement; - can1.write(msgTx); + can.write(msgTx); } void SetOdometrie (unsigned short canId, unsigned short x,unsigned short y,signed short theta) @@ -155,7 +201,7 @@ msgTx.data[4]=(unsigned char)theta; msgTx.data[5]=(unsigned char)(theta>>8); - can1.write(msgTx); + can.write(msgTx); } /****************************************************************************************/ @@ -172,25 +218,95 @@ // Angle signé sur 2 octets msgTx.data[0]=(unsigned char)((enable==0)?0:1); - can1.write(msgTx); + can.write(msgTx); } /****************************************************************************************/ +/* FUNCTION NAME: SendSpeed accel decel */ +/* DESCRIPTION : Envoie un asservissement paramètre retournant à une vitesse */ +/****************************************************************************************/ +void SendSpeedAccelDecel (unsigned short vitesse, unsigned short acceleration,unsigned short deceleration) +{ + CANMessage msgTx=CANMessage(); + msgTx.id=ASSERVISSEMENT_CONFIG; + msgTx.format=CANStandard; + msgTx.type=CANData; + msgTx.len=8; + msgTx.data[0]=(unsigned char)(vitesse&0x00FF); + msgTx.data[1]=(unsigned char)((vitesse&0xFF00)>>8); + + msgTx.data[2]=(unsigned char)(acceleration&0x00FF); + msgTx.data[3]=(unsigned char)((acceleration&0xFF00)>>8); + + msgTx.data[4]=(unsigned char)(deceleration&0x00FF); + msgTx.data[5]=(unsigned char)((deceleration&0xFF00)>>8); + + msgTx.data[6]=(unsigned char)(acceleration&0x00FF);//cloto + msgTx.data[7]=(unsigned char)((acceleration&0xFF00)>>8);//cloto + + can.write(msgTx); + +} + +/****************************************************************************************/ /* FUNCTION NAME: SendSpeed */ /* DESCRIPTION : Envoie un asservissement paramètre retournant à une vitesse */ /****************************************************************************************/ -void SendSpeed (unsigned short vitesse, unsigned short acceleration) +void SendSpeed (unsigned short vitesse) +{ + CANMessage msgTx=CANMessage(); + msgTx.id=ASSERVISSEMENT_CONFIG_VIT; + msgTx.format=CANStandard; + msgTx.type=CANData; + msgTx.len=2; + msgTx.data[0]=(unsigned char)(vitesse&0x00FF); + msgTx.data[1]=(unsigned char)((vitesse&0xFF00)>>8); + + can.write(msgTx); + +} + +/****************************************************************************************/ +/* FUNCTION NAME: SendSpeed */ +/* DESCRIPTION : Envoie un asservissement paramètre retournant à une vitesse */ +/****************************************************************************************/ +void SendAccel(unsigned short acceleration,unsigned short deceleration) { CANMessage msgTx=CANMessage(); - msgTx.id=ASSERVISSEMENT_CONFIG; + msgTx.id=ASSERVISSEMENT_CONFIG_ACCEL; + msgTx.format=CANStandard; + msgTx.type=CANData; + msgTx.len=4; + msgTx.data[0]=(unsigned char)(acceleration&0x00FF); + msgTx.data[1]=(unsigned char)((acceleration&0xFF00)>>8); + + msgTx.data[2]=(unsigned char)(deceleration&0x00FF); + msgTx.data[3]=(unsigned char)((deceleration&0xFF00)>>8); + + can.write(msgTx); + +} + +/****************************************************************************************/ +/* FUNCTION NAME: SendSpeedDecel */ +/* DESCRIPTION : Envoie un asservissement paramètre retournant à une vitesse */ +/****************************************************************************************/ + /* +void SendSpeedDecel (unsigned short vitesse, unsigned short deceleration) +{ + CANMessage msgTx=CANMessage(); + msgTx.id=ASSERVISSEMENT_CONFIG_DECEL; msgTx.format=CANStandard; msgTx.type=CANData; msgTx.len=4; msgTx.data[0]=(unsigned char)(vitesse&0x00FF); msgTx.data[1]=(unsigned char)((vitesse&0xFF00)>>8); - msgTx.data[2]=(unsigned char)(acceleration&0x00FF); - msgTx.data[3]=(unsigned char)((acceleration&0xFF00)>>8); - - can1.write(msgTx); -} \ No newline at end of file + msgTx.data[2]=(unsigned char)(deceleration&0x00FF); + msgTx.data[3]=(unsigned char)((deceleration&0xFF00)>>8); + + can.write(msgTx); + +}*/ + + \ No newline at end of file