komparator mit timer verbinden

Gast #500951
Lesenswert?
• ▲
▼
hallo community:
ich stehe vor einem rätsel. Beim Versuch, den ad-wandler beim tiny2313 
so zu implementieren wie im avr-gcc-skript:
13.1.2.2 ADC über Komparator
kam ich nicht weiter, weil ein merkwürdiges verhalten auftrat.
Im folgenden programm:
...
void wait() {uint32_t j; for (j=0;j<320000;j++) {};};

int main(void)
{
    DDRB=0xc4;  /* PIN 7 und 6 und 2 von B werden auf output gesetzt*/
    PORTB=0xFF; // alle drei LEDs aus, alle PullUps aktiv

  // auch im Timer1 muss der richtige Modus gesetzt sein:
(A)  TIMSK |= (1<<ICIE1);  // input capture interrupt enable am Timer1

  // Modus setzen für den komparator
  ACSR |=  (1<<ACIS0); ACSR &= ~(1<<ACIS1);
(B)  ACSR |=  (1<<ACIC);  // verbindet den komparator mit dem timer1
(C)  sei();

    while(1)
(D)  { wait();
    PORTB &= ~(1<<PB2);
  }
    return 0;
}

blieb das Programm in Zeile (D) stecken - außer wenn eine der Zeilen (A) 
bis (C) auskommentiert war.
Welchen Einfluß haben diese Zeilen auf die Funktion wait()????
thx
jürgen riehle
Gast #501139
Lesenswert?
• ▲
▼
Woher weißt Du, dass das Programm in der besagten Zeile "steckenbleibt"? 
Ich könnte mir eher vorstellen, dass der Optimizer Deine "Warteschleife" 
einfach wegoptimiert hat (weil sie leer ist) und deshalb die Anweisung 
"PORTB &= ~(1<<PB2);" permanent ausgeführt wird.

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.