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

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.