J'utilise un ATmega328. Je fais actuellement plusieurs mesures en utilisant l'ADC 10 bits. Je voudrais stocker les valeurs qu'il convertit en variables afin de pouvoir fonctionner avec elles. Par exemple:AVR in C - Enregistrement de la valeur du registre dans la variable
int a;
(...)
ADMUX = 0b01000011; //Vref = 5V, ADC3
ADCSRA |= (1<<ADSC); //Starts conversion
while(!(ADCSRA & (1<<ADIF))); //Wait until it finishes
ADCSRA |= (1<<ADIF); //Clear flag
Supposons que l'ADC stocké dans la valeur 576
ADCH:ADCL
. Est-il possible de réaliser, d'une manière ou d'une autre, la variable a
pour prendre cette même valeur? (c'est-à-dire a=576;
).
Ceci est susceptible de corruption. Voir la réponse ci-dessous. – TomServo
@JLH, point. Notez cependant que le texte dans la note d'application va "Si la fonction d'interruption accède aux mêmes ressources, l'accès doit être fait une opération atomique". S'il n'y a pas d'interruptions qui accèdent à l'ADC, il n'y a pas de problème. – ilkkachu
À partir du code OP, il n'est pas clair si un autre ADC - ou autre chose - pourrait être lancé pendant que celui-ci est stocké. Mieux vaut prévenir que guérir. – TomServo