www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Allgemeine Frage zu 'Capture Register High Byte'


Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Abend,

wenn ich einen Timer programmiere, kann ich doch mit Hilfe von
CCPRxH und CCPRxL meinen gewünschten Interrupt programmieren.
Dass CCPRxL die einzelnen Schritte darstellt(also zB bei 8bit max 255)
ist mir mittlerweile bewusst, aber welche Rolle spielt eigentlich dieses 
High Byte ?
Kann man damit die Interrupts verlängern?

Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu einem 16-Bit-Timer passt auch ein 16-bit Capture-Register. 
Dementsprechend kann dann auch der Zählzyklus von (fast) Null bis auf 
64K Takte eingestellt werden.

Da ein 8-bit-Kontroller schlecht mit 16 bit umgehen kann, erfolgt die 
Übergabe der 16 bit aufgeteilt in hibyte und lobyte.
Die Reihenfolge von hi und lo ist übrigens beim Schreiben/Lesen 
vorgeschrieben ( gut aufpassen !)

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort!
Das verstehe ich nicht ganz. Wie wird das aufgeteilt?
Wenn ich zB weiß, dass ein Takt 1us benötigt:
CCPR2H = 0;
CCPR2L = 255;

Dann braucht ein Interrupt ungefähr 0,26 ms...
Wenn ich jetzt ' CCPR2H = 40 ' schreibe, wie rechnet der uc dann?

Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ein Bit im hibyte entspricht 256 bits im lobyte.

Hibyte 40  + Lobyte 45 = gesamt: 40x 256 + 45 = 10285 Takte, ein 
Zählzyklus umfasst dann 10,285 ms.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke :)

Autor: Peter R. (pnu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das "bearbeiten" des Zählers im capture-Int ist allerdings nicht der 
optimale Weg. Besser ist eine Betriebsart des Zählers, wo beim Überlauf 
der Inhalt des capture-Registers automatisch an den Zähler übergeben 
wird.
(so etwas kann ein AVR )

also Zählfolge, wenn im cap-reg 2345 steht:

...65534, 65535, 2345, 2345...

Die Zählzeit ist dann  65535 - 2345 = 63191 Takte (oder 63192 ?)

Dann erspart man sich die ungenauen Zeitverluste beim Übergang in die 
Int-Routine.

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.