atomic 16-bit operation in analog.c
This commit is contained in:
parent
3606952096
commit
d56ff39cb3
12
analog.c
12
analog.c
|
|
@ -50,5 +50,15 @@ ISR(ADC_vect) {
|
|||
}
|
||||
|
||||
uint16_t analog_read(uint8_t channel) {
|
||||
return adc_result[channel];
|
||||
uint8_t sreg;
|
||||
uint16_t r;
|
||||
// save interrupt flag
|
||||
sreg = SREG;
|
||||
// disable interrupts
|
||||
cli();
|
||||
// atomic 16-bit copy
|
||||
r = adc_result[channel];
|
||||
// restore interrupt flag
|
||||
SREG = sreg;
|
||||
return r;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue