
Zitat von
radbruch
Am Ende der ADC-Messung wird PD3 dann wieder auf Interrupteingang geschaltet und das Spielchen beginnt von vorne, solange ein Taster gedrückt ist.
So sollte es ja auch sein
Aber bei mir bleibt er im Interrupt obwohl der Taster losgelassen wurde...
Der ADC wird so initialisiert:
Code:
init_adc:
ldi R16, (1 << ADEN) | (1 << ADPS1) | (1 << ADPS2)
out ADCSRA, R16
Und dann wird im Interrupt, oder auch außerhalb der ADC Eingang eingestellt:
Code:
.macro SET_BUMPER_TO_ADC_SOURCE
push R16 ;save R16
ldi R16, (1 << REFS0)|(1 << MUX2)|(1 << ADLAR);set ADC4 to source
;ldi R16, (1 << REFS0)|(1 << MUX2) ;set ADC4 to source
out ADMUX, R16 ;send the definition to ADMUS
pop R16; restore R16
.endm
Der Interrupt ist auch auf eine fallende Flanke gestellt:
Code:
init_interupt:
in R16 , MCUCR
SBR R16, (1 << ISC11)
CBR R16, (1 << ISC10) ;faling will trigger an interrupt
out MCUCR, R16
in R16, GICR
sbr R16, (1 << INT1);activate interupt1
out GICR, R16
Lesezeichen