Bonjour a tous !
Voila, j'ai fait l'aquisition d'une rtc, ainsi que d'un atmega.
Je cherche donc a realiser la liaison pour recuperer toute les donner de l'horloge.
J'ai donc été voire la documentation de l'atmel ( http://www.atmel.com/dyn/resources/p...ts/doc8271.pdf pages 216), ainsi que la documentation de la rtc ( http://www.nxp.com/documents/data_sheet/PCF8563.pdf )
Suite à cela, j'ai commencé a composer mon programme, et voila un petit bout de temps que je bloque, et que je ne vois pas trop ou est l'erreur.
Voici mon bout de code permettant cette fonction :
TWCR = 0xA4; //Mes en fonction le bus de com TWEN, la condition de start TWSTA, et met à 0 le bit d'interuption TWINT (mis a un lorsqu'un job est fini)
while(!(TWCR & 0x80)); // Attend que la condition de start soit ben faite
TWDR = 0xA2; //Mise en memoire de l'adresse de l'esclave
TWCR |= 0x84; //remet a 0 le bit d'interuption et active le module com
while(!(TWCR & 0x80)); // Attend que TWDR soit transmis, et un ACK ou NACK
TWDR = 0x02; // Met dans TWDR l'adresse des secondes
TWCR |= 0x84; //remet a 0 le bit d'interuption et active le module com
while(!(TWCR & 0x80)); // Attend que TWINT soit a 1, et que ack ou nack soit present sur l'esclave
TWDR = 0xA3; //Met dans TWDR l'adresse de l'esclave, mais en mode lecture cette fois ci
TWCR |= 0xA4;//comme d'hab", a la difference que l'on relance un bit de start
while(!(TWCR & 0x80)); // Attend l'aquitement
for(a=0;a<7;a++) //Stock les données recu dans un tableau
{
recu[a]=TWDR;
TWCR |= 84;
}
TWCR = 0x94; // Met fin a toute communication
Peut etre vous trouverez ce qui ne marche pas, je vais continuer a chercher.
Merci
-----