Forum: Mikrocontroller und Digitale Elektronik Atmega16 Analog Komparator


von Curby (Gast)


Lesenswert?

Hallo,

ich bin ein bisschen stutzig, weil mein Analog Komparator scheinbar 
nicht läuft. Natürlich habe ich mir die anderen Codebeispiele angesehen 
und entdecke jetzt keinen Fehler im Code. Dieser folgendermaßen aus:

int main(){
  DDRA = 0xFF;
  DDRB = 0b11110011;
  DDRC = 0xFF;
  DDRD = 0xFF;

  PORTD = 0;

  ACSR = (0<<ACD)|(1<<ACBG);

  while(1){

    if(ACSR & (1<<ACO)) PORTD = 1;
    else PORTD = 0;
  }

  return 0;
}

Die LED ist jedoch die ganze Zeit aus. Ich benutze ein einfaches Kabel 
zum testen und lege AIN1 mal auf Masse, mal auf +5V.

Bei Masse müsste doch eigentlich AC0 gesetzt sein, da 0V < 1,3V ist.

mfg
Nils

von Justus S. (jussa)


Lesenswert?

meine Glaskugel sagt: LED am falschen Pin angeschlossen...

von Curby (Gast)


Lesenswert?

Nein, die LED liegt an PORTD 0, so wie es im Datenblatt steht.
Ich hab auch schon einen zweiten Atmega probiert, geht ebenfalls nicht.

von Curby (Gast)


Lesenswert?

Um das nochmal auf einen anderen Code zu übersetzen:

loop_until_bit_is_set(ACSR,ACO);

Diese Stelle wird nie verlassen.
 AIN0 und AIN1 sind Eingänge, auf AIN0 liegt über n Spannungsteiler ne 
Spannung an und an AIN0 die zu überprüfende Spannung. Das ACP Register 
is komplett 0.

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.