Bonjour je ne sais pas si je suis sur le forum adéquat mais j'ai quelques questions sur une interruption I2C programmée en C. Est ce que je peux posé ça ici?
Pitch
-----
27/12/2006, 09h31
#2
f6bes
Date d'inscription
février 2005
Localisation
Nimes Age: 78700 millions de kms autour du soleil !!
Messages
70 256
Re : Interruption I2C
Bjr picht....
"Pose " toujours !! Le modés "redigirent" au bon endroit si cela ne correspond au forum.
Vas y donc.
Cordialement
18/01/2007, 12h10
#3
inviteb44153e1
Date d'inscription
janvier 1970
Messages
8
Re : Interruption I2C
En fait j'ai un programme avec une interruption I2C. C'est pour savoir si on est obligé de désactiver l'interruption quand on a tout recu. Voici le code que j'ai dans l'interruption I2C :
Code:
switch(TWSR)
{
case 0x60: // Esclave appele en mode ecriture -> ACk est retourne
g_TWI_CompteurDonneeRx = 0;
break;
case 0x80: // Reception d'une donnee (un ACK a été envoyé)
g_TWI_BufferRx[g_TWI_CompteurDonneeRx] = TWDR;
g_TWI_CompteurDonneeRx++;
break;
case 0xA0: // Reception d'un stop donc validation des donnees
break;
case 0xA8: // Esclave appele en mode lecture -> ACK est retourne
g_TWI_CompteurDonneeTx = 0x00;
// on envoi alors une donnee donc pas de break
case 0xB8: // envoi d'une donnee, un ACK est envoye
TWDR = g_TWI_BufferTx[g_TWI_CompteurDonneeTx];
//g_TWI_BufferTx[0] = g_TWI_CompteurDonneeTx;
g_TWI_CompteurDonneeTx++;
break;
case 0xC0: // Reception d'un NACK donc fin de la transmission
break;
}
TWCR = (1<<TWINT) | (1<<TWEA) | (1<<TWEN) | (1<<TWIE);
Car en fait mon code va bien ( mais il y a surement des erreurs pour l'I2C), mais quand il ya des parasites dans les alentours, mon interruption perd les pedales....
Merci
18/01/2007, 22h02
#4
RISC
Date d'inscription
novembre 2006
Messages
3 793
Re : Interruption I2C
PITCH,
Et si tu nous disais quel micro tu utilises ;=)
Il semble que ton problème vienne plutot du hardware puisque tu parles de PB de parasites...
Aujourd'hui
A voir en vidéo sur Futura
19/01/2007, 11h20
#5
inviteb44153e1
Date d'inscription
janvier 1970
Messages
8
Re : Interruption I2C
Oups pardon j'avais oublié. L'I2C se fait entre des ATMega 8. Et le compilateur utilisé est CodeVision AVR Standard. J'ai un ATMega8 qui fait master et qui utilise les fcts ttes faites de CodeVision et 2 ATMega 8 en Slave. Les 2 slaves fonctionnent avec interruption.
POur ce qui est de l'hardware je ne pense pas que cela vienne de la, car j'ai repris le projet et avant il y avait du code deja fait et il n'y a jamais eu de soucis. J'ai du reprendre et j'ai voulu faire avec interruption et depuis voila....
Donc en gros de temps en temps j'ai l'I2C qui se bloque jusqu'a ce qu'un coup de watchdog me relance un des slaves. Le probleme peut venir des 2slaves...
J'espere que tt cela vous aidera a regler mon soucis