mikrocontroller.net

Forum: Compiler & IDEs komparator mit timer verbinden


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

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

Autor: johnny.m (Gast)
Datum:

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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
BTW:
Wenn Du unbedingt eine Wartezeit brauchst, dann nimm die Funktionen aus 
der util/delay.h. Die können nicht wegoptimiert werden...

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

Bewertung
0 lesenswert
nicht lesenswert
in der endlosschleife bleibt das progi bei wait hängen - wenn ich 
nämlich wait auskommentiere, geht die led an pb2 an (nächste zeile) - 
und sonst bleibt sie aus!!

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.