Hallo liebe AVR-Freunde,
ich lese hier zwar schon eine ganze Weile und habe bis jetzt auch immer
alles gefunden, leider komme ich jetzt aber mit den schon verhandenen
Threads nicht weiter.
Ich hoffe einer von euch kann mir die Richtung weisen :-)
Also, ich experimentiere gerade mit dem AnalogComparator meines
Atmega32U4 rum.
Leider bekomme ich es nicht hin, dass er mir den Interrupt schmeißt.
Mein Code sieht folgendermaßen aus:
1 | ISR (ANA_COMP_vect)
|
2 | {
|
3 | PORTD ^= (1 << 5); //toggle LED on every call
|
4 | }
|
5 |
|
6 | void main()
|
7 | {
|
8 | cli(); // disable interrupt
|
9 | DDRD |= (1 << 5);
|
10 | ACSR = 0; //set everything to 0
|
11 | ADMUX = 0; //set everything to 0
|
12 | ADCSRA &= ~(1 << ADEN); // deactivate ADC
|
13 | ADCSRB |= (1 << ACME);// activate multiplexer
|
14 | ACSR |= (1 << ACIE); // activate analog comparator interrupt
|
15 | // ADIN1 is AIN+ for MUX2:0 --> 0 AIN- should be ADC0
|
16 | // ACIS0 and ACIS1 are 0 --> Interrupt Mode = Toggle Mode
|
17 | sei(); // global interrupt enable
|
18 |
|
19 | while(1)
|
20 | {
|
21 | //nothing here
|
22 | }
|
23 | }
|
Der Atmega32 hat keine AIN1, daher muss immer der Multiplexer verwendet
werden. Der AIN+ ist entweder der AIN0 oder interne Referenz, bei meiner
Einstellung sollte der AIN0 gewählt sein.
Bin für jeden Tipp mehr als Dankbar!!