diff --git a/simavr/sim/avr_adc.c b/simavr/sim/avr_adc.c index 09ec66d4..425d5d33 100644 --- a/simavr/sim/avr_adc.c +++ b/simavr/sim/avr_adc.c @@ -31,16 +31,16 @@ avr_adc_int_raise( { avr_adc_t * p = (avr_adc_t *)param; if (avr_regbit_get(avr, p->aden)) { - // if the interrupts are not used, still raised the UDRE and TXC flag - avr_raise_interrupt(avr, &p->adc); - avr_regbit_clear(avr, p->adsc); - if( p->adts_mode == avr_adts_free_running ) - avr_raise_irq(p->io.irq + ADC_IRQ_IN_TRIGGER, 1); if (!p->read_status) { /* Update I/O registers. */ avr_core_watch_write(avr, p->r_adcl, p->result & 0xff); avr_core_watch_write(avr, p->r_adch, p->result >> 8); } + // if the interrupts are not used, still raised the UDRE and TXC flag + avr_raise_interrupt(avr, &p->adc); + avr_regbit_clear(avr, p->adsc); + if( p->adts_mode == avr_adts_free_running ) + avr_raise_irq(p->io.irq + ADC_IRQ_IN_TRIGGER, 1); } return 0; }