www.mikrocontroller.net

Forum: Compiler & IDEs komparator am tiny2313


Autor: jr (jürgen riehle) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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
if ((ACSR & (1 << ACO))) 
    PORTB = ~(1 << PB7); 
else 
    PORTB = ~(1 << PB6);
oder (kürzer):
PORTB = (ACSR & (1 << ACO)) ? ~(1 << PB7) : ~(1 << PB6);
dann wäre Dir der Fehler gar nicht unterlaufen...

Autor: Ulrich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vorallem kann man den code auch auf compilern compilieren die nicht 
diesen bytepatch drin haben.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.