Ich wurde leider drauf festgenagelt und muss den PA7 benutzen. Wenn er gedrückt wird, liegt keine Spannung mehr an.
Das habe ich soweit rausgesucht, um mittels Comparator vergleichen zu können. Nach meinem Verständnis nach vergleicht er jetzt die Referenzspannung 2.56V mit der Spannung am PA7 ( ADC7) und sollte bei einer steigenden Flanke (Button gedrückt) einen Interrupt generieren und die grüne LED für 1 sek leuchten.Code:#define GREEN_LED_on PORTA |= (1<<PA3) #define GREEN_LED_off PORTA &= ~(1<<PA3) int main() { DDRA &= ~(1<<PA7); //PA7 als Eingang cli(); // Interrupt deaktivieren ADCSRA&=~(1<<ADEN); // ADC deaktivieren ACSR |= (1<<ACIE); // Enable analog comparator interrupt ADMUX |= ((1<<MUX1)|(1<<MUX2)|(1<<MUX0)); // Multiplexer auf ADC7 setzen ACSR |= (1<<ACIS1); // Interrupt soll bei steigender Flanke auslösen ACSR |= (1<<ACIS0); ACSR |= (1<<ACBG); // Auf Referenzspannung 2.56V setzen sei(); // Interrupt aktivieren while(1){} } // Grüne LED für 1 Sek leuchten lassen ISR(ANA_COMP_vect){ GREEN_LED_on; _delay_ms(1000); GREEN_LED_off; }







Zitieren

Lesezeichen