komparator am tiny2313

Gast #485406
Lesenswert?
• ▲
▼
hi,
ich will als vorstufe zur ad-wandlung den komparator im tiny2313 mal 
testen.
dazu habe ich folgende zeilen geschrieben:
int main(void)
{
    DDRB=0xc0;  /* PIN 7 und 6 von B wird auf output gesetzt
               und alle anderen als Eingang, also auch AIN0 und AIN1 */
    PORTB=0x00;
  // Modus setzen falling edge (10)
    ACSR   &=   ~(1<<ACIS0);
    ACSR   |=   (1<<ACIS1);

  while(1)
  {
  if ((ACSR & (1<<5))) {PORTB=0b01111111;} else {PORTB=0b1011111;}
   }
    return 0;
  }
(die include-files sind da).
Ich habe zwei LEDs an B6 und B7 sowie einen spannungsteiler (1:) 
zwischen Vcc und GND eingebaut.
Meinen bescheidenen kenntnissen nach müsste jetzt die  LEDs ihren 
zustand ändern, wenn ich mit B0 = AIN0 und B1 = AIN1 am spannungsteiler 
antippe (z.b. mit B0 an die Mitte und B1 an Vcc bzw GND).
Ständig leuchtet aber nur die LED an B7.
Was mache ich falsch??
jürgen riehle (jr)
Gast #485546
Lesenswert?
• ▲
▼
>  if ((ACSR & (1<<5))) {PORTB=0b01111111;} else {PORTB=0b1011111;}
Ist das 1:1 kopiert Dein Code? Dann zähl mal die Nullen und Einsen in 
dem else-Block... Dann weißt Du auch warum PORTB.7 immer Low-Pegel 
hat...
Gast #485570
Lesenswert?
• ▲
▼
BTW:
Solche Fehler lassen sich vermeiden, wenn man immer die (1 << 
IRGENDWAS)-Schreibweise benutzt. Wenn von 8 Nullen und Einsen eine 
fehlt, dann muss man schon genau hinsehen, um den Fehler zu finden. 
Hättest Du oben geschrieben
1
if ((ACSR & (1 << ACO))) 
2
    PORTB = ~(1 << PB7); 
3
else 
4
    PORTB = ~(1 << PB6);
oder (kürzer):
1
PORTB = (ACSR & (1 << ACO)) ? ~(1 << PB7) : ~(1 << PB6);
dann wäre Dir der Fehler gar nicht unterlaufen...

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.