Do you have a question? Post it now! No Registration Necessary
January 22, 2021, 6:22 pm

J'essaie de me faire la main sur un CAN AD7715 et j'avoue
rester perplexe.
uint8_t
spi_send8(int8_t device, uint8_t data)
{
spi_set_device(device);
SPDR = data;
while(!(SPSR & (1 << SPIF)));
spi_set_device(spi_none);
return(SPDR);
}
uint16_t
spi_send16(int8_t device, uint16_t data)
{
uint16_t tmp;
spi_set_device(device);
SPDR = data >> 8;
while(!(SPSR & (1 << SPIF)));
tmp = SPDR << 8;
SPDR = data & 0xFF;
while(!(SPSR & (1 << SPIF)));
tmp |= SPDR;
spi_set_device(spi_none);
return(tmp);
}
spi_set_device() est une fonction qui permet de programmer un 74HCT138
bus de 3 Mhz (mais il faut vraiment bien lire, c'est en tout petit dans
la section interface avec un DSP). 250 kHz devrait donc fonctionner.
SPI en polling.
bien ce qu'il faut. Il me comprend donc.
Mais je lis n'importe quoi. De temps en temps une valeur non nulle (16384)
dans le datasheet :
void
ad7715_rcan_init()
{
spi_send8(spi_rcan, 0x11);
// Setup : # 01 111 1 0 0
spi_send8(spi_rcan, 0x7C);
// On attend la fin de la calibration automatique
while(PINC & (1 << DDC5));
return;
}
uint16_t
ad7715_read_rcan_data()
{
while(PINC & (1 << DDC5));
spi_send8(spi_rcan, 0x39);
return(spi_send16(spi_rcan, 0x0000));
}
DDRB |= 1 << DDB5;
DDRB &= ~(1 << DDB6);
DDRB |= 1 << DDB7;
SPCR = (1 << SPE) | (1 << MSTR) | ( 1 << SPR1);
Bien cordialement,
JKB
--
Si votre demande me parvient en code 29, je vous titiouillerai volontiers
Si votre demande me parvient en code 29, je vous titiouillerai volontiers
Site Timeline
- » La folie des mesures ?
- — Next thread in » Electronics (French)
-
- » ST7066U et 'busy flag'
- — Previous thread in » Electronics (French)
-
- » Recherché : Schéma du circuit du Metrix MX 528
- — Newest thread in » Electronics (French)
-
- » TLV431 obudowa przewlekana TO-92, poszukiwane
- — The site's Newest Thread. Posted in » Electronics (Polish)
-
- » Recherché : Schéma du circuit du Metrix MX 528
- — The site's Last Updated Thread. Posted in » Electronics (French)
-