LED OCR1A hochzählen funktioniert nicht

Gast #1590697
Hallo Forum,

ich möchte eine LED einfaden lassen und wollte dazu den Vergleichswert 
hoch bzw. runterfahren lassen. Leider funktioniert das Ganze nicht so, 
wie ich es mir vorstelle.

Die LED flackert.

Im Debugmodus zählt der TCNT1 nur bis 0x01FF. Sprich das High Bit ist 
und bleibt 0x01 obwohl ich es 3F gesetzt habe.

Habt ihr vielleicht eine Idee?

Gruß,

Katharina

P.S.
Hier der Code:

#include <avr/io.h>

int main(void)

{
  DDRD = (1<<PD5);

  TCCR1A = (1<<COM1A1)|(1<<WGM11);
  TCCR1B = (1<<WGM13)|(1<<WGM12)|(1<<CS10);

  ICR1 = 0x6FFF;
  OCR1A= 0x3FFF;

  while(1);
  OCR1A++;

}
#1590715
Katharina schrieb:

> Im Debugmodus zählt der TCNT1 nur bis 0x01FF. Sprich das High Bit ist
> und bleibt 0x01 obwohl ich es 3F gesetzt habe.
Wo?


>   while(1);
>   OCR1A++;

Nö.
Dieses OCR1A++ wird nie erreicht, weil das Programm aus der unmittelbar 
davor stehenden Endlosschleife nicht mehr herauskommt.
Gast #1590764
Bin da wohl ein wenig durcheinander gekommen. Hier nochmal der 
"richtige" Code. Problem nach wie vor: OCR1A = 0x01FF

#include <avr/io.h>

volatile char i;

int main(void)
{
  DDRD = (1<<PD5);

  TCCR1A = (1<<COM1A1)|(1<<WGM11);
  TCCR1B = (1<<WGM13)|(1<<WGM12)|(1<<CS10);

  ICR1 = 0x6FFF;
  OCR1A= 0x3FFF;

  while(1)
  i++;

}
#1590771
Katharina schrieb:
> Bin da wohl ein wenig durcheinander gekommen. Hier nochmal der
> "richtige" Code. Problem nach wie vor: OCR1A = 0x01FF

Datenblatt lesen.
Der Update von OCR1A erfolgt erst wenn der Timer wieder seinen BOTTOM 
Wert erreicht hat.

Moral von der Geschichte:
Erst den Timer und alle Hilfsregister einstellen
und erst dann den Timer durch Setzen eines Vorteilers starten.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 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.