Atmega16 Analog Komparator

Gast #2290456
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
Gast #2290716
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren