Forum: Mikrocontroller und Digitale Elektronik Analog Comparator Multiplexed Input löst immer wieder aus


von Basti (Gast)


Lesenswert?

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

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.