mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timerprobleme mit ATMega128 und AVR Studio 4


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,
vieleicht hat ja schon jemand von euch dieses Problem gehabt:

Ich bin in der Programmierung von µC ein Neuling und habe mir gedacht 
mit dem AVR-Studio4 und einem ATMEGA 128 anzufangen. Da ich aber noch 
keine Hardware habe, wollte ich mit dem Simulator von AVR-Studio 
arbeiten. Hier jetzt mein Problem:
Bei Verwendung des 16Bit Timer1 und des 16BitTimer3 treten seltsame 
Registerverschiebungen auf. Jetzt weiß ich nicht ob das am 
Studio-Simulator liegt oder an meinem Source-Code. Ich habe hoffentlich 
alle Forenbeiträge gelesen, aber nirgends ein ähnliches Problem 
gefunden.
  // Timer/Counter 1 initialization
  // Clock source: System Clock
  // Clock value: Timer 1 Running, Not Using Prescaler
  // Mode: Normal top=FFFFh
  // OC1A output: Discon.
  // OC1B output: Discon.
  // OC1C output: Discon.
  // Noise Canceler: Off
  // Input Capture on Falling Edge
  TCCR1A=0x00;
  TCCR1B=0x19;
  TCNT1H=0x00;
  TCNT1L=0x00;
  ICR1H=0xff;
  ICR1L=0xff;
  OCR1AH=0x00;
  OCR1AL=0x00;
  OCR1BH=0x00;
  OCR1BL=0x00;
  OCR1CH=0x00;
  OCR1CL=0x00;

  // Timer/Counter 3 initialization
  // Clock source: System Clock
  // Clock value: Timer 3 Running, Not Using Prescaler
  // Mode: Normal top=FFFFh
  // Noise Canceler: Off
  // Input Capture on Falling Edge
  // OC3A output: Discon.
  // OC3B output: Discon.
  // OC3C output: Discon.
  TCCR3A=0x00;
  TCCR3B=0x19;
  TCNT3H=0x00;
  TCNT3L=0x00;
  ICR3H=0xff;
  ICR3L=0xff;
  OCR3AH=0x00;
  OCR3AL=0x00;
  OCR3BH=0x00;
  OCR3BL=0x00;
  OCR3CH=0x00;
  OCR3CL=0x00;
Nach der Initialisierung erscheint im HighByte beider Timer des TCNT3 
Registers der Hexwert des TCCR_B Registers.
Beide Timer zählen nur das LowByte hoch, anschliessend wird das 
Overflowflag gesetzt und der Zähler beginnt wieder von vorne.
Das interessanteste ist allerdings dann der Timer3, in diesem Timer wird 
das OCR3 Register mit irgendwelchen Zählwerten vollgeschrieben.
Achso, bei beiden Timern verwende ich den CaptureInterrupt um eine 
Variable hochzuzählen, also nix besonderes, für den Anfang.

Ansonsten eine echt geile Site für Anfänger, Neulinge und ich denke auch 
für Profies. Weiter so!

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz vergessen zu sagen, das die 8Bit Timer funktionieren.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht war ich mit meinem Urteil über die freundlichkeit der 
hiesigen User doch etwas voreilig.
Vielen Dank für die vielen Hilfen und Beiträge.
Und Tschüß

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.