Ich wurde leider drauf festgenagelt und muss den PA7 benutzen. Wenn er gedrückt wird, liegt keine Spannung mehr an.
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;
}
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.
Lesezeichen