Bonjour,
j'ai du mal à comprendre cette partie de code (qui fonctionne), plus précisément la ligne :
ByteData[i] = (Command[0] & (0x01 << i)) && 1;
on est d'accord que command est un pointeur qui pointe sur une adresse dont la valeur contient 8 bit ?
donc command[0] contient la valeur du 1er bit de gauche?
mais du coup mapper ne fonctionnerai pas?
en fait pour que ça marche il faudrait que command[0] soit égal à l'octet complet par ex à 10011001 et dans ce cas " 0x01 << i " mapperait chaque bit en partant de la droite ver la gauche non?
le programme complet :
https://github.com/UsefulElectronics...e/Src/TM1637.c
Merci pour vos explications
Code:void tm1637_TxCommand(uint8_t *Command) { //Handles high level (bit by bit) transmission opération uint8_t ByteData[8] = {0}; for(uint8_t i = 0; i < PACKET_SIZE; i++) { ByteData[i] = (Command[0] & (0x01 << i)) && 1; //Convert from byte to bit per array element } tm1637_StartPacket(); //Send start packet bit tm1637_DataOut(ByteData); //Send one byte tm1637_CLKlow(); //Send one CLK for acknowledgment tm1637_CLKhigh(); tm1637_ACKcheck(); //wait for acknowledgment. if((Command[0] & 0xC0) != (0xC0)) //Check if the received packet is not an address. tm1637_EndPacket(); } }
-----