Console CAN 2.0 update du code testcan1

Dependencies:   mbed

Fork of testCAN1 by RaC2018

Fonctionnement

/!\/!\/!\Il est conseillé d'utiliser putty ou un terminal acceptant la touche entée comme un caractère, sinon il sera nécessaire de changer le code en remplaçant '\r' par un caractère de votre choix /!\/!\/!\

1 - La console vous demande la valeur de l'identificateur en hexadécimal(il faut donc entrer la valeur et valider par entrée)

2 - Elle demande le nombre d'octets à envoyer, il faut choisir le nombre d'octets à envoyer entre 0(pas d'octets) et 8 octets. Il n'y a pas besoin de valider, la validation se fait une fois le chiffre appuyé.

3 (si il y a plus de 0 octets) - Elle vous demandera la valeur à attribuer à chaque octets.

4 - Elle demande quel sera l'état du bit du RTR(0-1) 1 ==> Requête 0 ==> Donnée.

La validation se fait automatiquement

5 - Envoie les données et fait une capture de retour(à améliorer car ce n'est pas encore au point)

6 - Fait un résumé des trames capturées.

7 - Retour au point de départ (1)

main.cpp

Committer:
LouisReynier
Date:
2018-02-09
Revision:
0:1ab5fdb4fa56
Child:
1:4d70e593345f

File content as of revision 0:1ab5fdb4fa56:

#include "mbed.h"
 // LR 9/02/18
 //
 // bus CAN
 //
 // Ce programme genere une trame 
 // id=00, data= 01 20 , longueur = 2, can standard (11 bits id)
 //
 // testé à l'analyseur logique = OK !!
 
Ticker ticker;
DigitalOut led1(LED1);
DigitalOut led2(LED2);
CAN can1(p9, p10,1000000);// on definit pin et debit
CAN can2(p30, p29, 1000000);
char counter = 0;
char octet_emis[8]  = "ABCD";
int id = 0x539 ;
  
void send() {
    
    printf("send()\n");
    id = 0x00 ;
    octet_emis[0] = 0x01 ;
    octet_emis[1] = 0x20 ;
    if(can1.write(CANMessage(id, octet_emis, 2,  CANData, CANStandard ))) {
        printf("wloop()\n");
        counter++;
        printf("Message sent: %d\n", counter);
    } 
    led1 = !led1;
}
 
int main() {
    
    printf("main()\n");
    ticker.attach(&send, 1);
    CANMessage msg;
    while(1) {
        printf("loop()\n");
        if(can2.read(msg)) {
            printf("Message received: %d\n", msg.data[0]);
            led2 = !led2;
        } 
        wait(0.2);
    }
}