Bonjour,
J'utilise le can de l'Atmega16 avec le logiciel CodeVision AVR et le compilateur qui va avec.
j'ai fait plusieurs conversions analogique->numérique sur deux entrées différentes, mais en testant je me suis rendu compte que la tension d'une entrée influe sur le résultat de la conversion sur l'autre entrée.
Ainsi lorsque la tension d'une entrée est assez éloignée de la tension de l'autre entrée (par rapport à la tension de référence du can), alors le résultat de la seconde entrée est faussé : si je fais varier la tension d'une des entrées, a partir d'un moment, la valeur en sortie pour l'autre entrée commence à varier, sans variation de tension pour l'entrée correspondante.
Voici le code que j'ai utilisé pour mes tests :
Code:#include <atmega16.h> #define ADLAR (1<<5) #define ADEN (1<<7) #define ADSC (1<<6) #define ADIF (1<<4) int adc (int port) { int a; ADCSRA |= ADEN; // SFIOR = 0x00; ADMUX = ADLAR | port; ADCSRA |= ADSC; while ((ADCSRA & ADSC) == ADSC); a = ADCH; return a; } void main (void) { DDRC = 0xFF; DDRD = 0xFF; while (1) { PORTC=adc(2); PORTD=adc(3); } }
Donc si vous trouvez d'où viens ce problème ou si vous avez connu un
problème similaire, merci de répondre.
Merci pour votre aide.
-----