Hallo,
im Rahmen meines Aktuellem Projektes (Brushless-Motor Ansteuerung)möchte
ich dem Multiplexed AnalogComparator mit PC0-PC2 des Atmega8 verwenden.
Schilderung des Aufbaus:
am Referenz Pin PD6 (AIN0)lege ich eine Spannung von 3V an
Das Programm soll solange in einer while schleife warten, bis am am
Negativen Eingang sich die Spannung von unter 3V auf über 3V ändert(oder
andersherum), dann soll das selbe auf einem der andern Eingänge(PC0-PC2)
passieren.
Damit ich sehen kann was passiert und es die einfachste Möglichkeit ist
lasse ich jedes mal 2 LEDs blinken, sobald der Interrupt auslöst.
Mein Problem:
ich lege am PC0 3,5V an, der Interupt löst aus, dass Programm verlässt
die while schleife, die LEDs Blinken.
nun wird der Multiplexer wird auf PC1 gestellt.
obwohl ich PC1-2 auf GND Gehängt habe, löst nun auch der Interupt aus
und das selbe am PC2.
Teil des Codes
1 | //Comperrator Implementiern
|
2 | SFIOR= (1<<ACME);ADCSRA = (0<<ADEN); //Muliplext Comperrator einschalten
|
3 | ADMUX=(0<<MUX2)|(0<<MUX1)|(1<<MUX0);//port Konfiguration
|
4 | //cmperrator starten
|
5 | ACSR = (0<<ACD)|(1<<ACIE)|(0<<ACIS1)|(0<<ACIS0);
|
6 | interupt_comperrator = 0; //zum sicherstellen ^^
|
7 | sei(); //interupts einschalten
|
8 | while (interupt_comperrator == 0){_delay_us(1);} //warte solange
|
9 | // bis der Interupt die Variable auf 1 setzt
|
10 |
|
11 | cli(); //interupts ausschalten
|
12 |
|
13 | PORTB = 0xff; //test LED für die Interupts
|
14 | _delay_ms(1000);
|
15 | PORTB = 0x00;;
|
16 | _delay_ms(1000);
|
17 |
|
18 |
|
19 | //Comperrator Interupft
|
20 | ISR(ANA_COMP_vect){
|
21 | interupt_comperrator = 1;
|
22 | //im Falle des Interupts wird die Variable beschrieben
|
Die Variable interupt_comperrator wird während des Interupts auf 1
gestellt
volatile int interupt_comperrator = 0
Ich verwende immer wieder den Gleichen Codeteil bloß das ich die MUXe
ändre zur Port Konfiguration.
Es scheint so als würde im Prozessor irgendwas nicht zurück gestellt
werden, sodass die interuptts immer wieder ausgelöst werden.
Ich kann Elektrische Fehler (fast)ausschließen weil ich die “Tests“ auf
einem Entwicklungsbord durchführe.
genauer Infos zum A-comp sind im Datenblatt ab Seite 186.
es würde mich freuen, wen ihr mir helfen könts.
danke und grüße
Sebastian