www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie realisiert man einen 16 Bit-Timer?


Autor: MikroMan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

helft mir doch mal bitte kurz bei folgenden Fragen mit ein paar Tipps,
Beispielcode oder Links weiter.

Wie realisiert man einen 16 Bit-Timer, wenn man

a) nur einen 8-Bit-Timer hat?
b) zwei 8 Bit-Timer/Counter hat?

Wie schafft man es am sinnvollsten, daß man beim implementierten
16-Bit-Timer eine compare Funktion hat? Ließe sich ein
Compare-Interrupt auslösen?

Kann man bei b) den einen Timer(z.B. 0) als Timer laufen lassen und den
anderen als Counter benutzen, der jedesmal beim Überlauf von Timer0
weiterzählt?


Vielen Dank für Eure Hilfe!!!

Autor: Ronny F. (ronny)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also zu b): ja,bei einigen Mikrocontroller Arten ist das sogar so
vorgesehen.Häufig kann man dann auch 2 16 Bittimer zu 32 Bit zusammen
fassen.Nur beim Auslesen musst du dann halt aufpassen,das der untere
Timer nicht gerade überläuft.Sonst wäre der obere Timer schon um eins
höher als er eigentlich sein sollte.

Und mit einem einzelnen 8 Bit Timer kann man dann per Software höhere
Stufen simulieren.Dazu wird dann im Überlauf-Interrupt eine Variable
hochgezählt.Wenn die überläuft dann wieder eine andere und so
weiter.Wird dann nur programmiertechnisch etwas komplizierter,aber das
sollte man hinbekommen.Eine Uhr ist ja nix anderes,nur laufen da einige
Variablen schon bei 24 bzw 60 über...

Autor: MikroMan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, so ähnlich habe ich mir das vage vorgestellt.

Gibts dafür irgendwo fertigen Code?

Was mir noch nicht klar ist, ist die Realisierung von compare mit
Interruptauslösung im Fall a)

Wie würde man das machen?

Autor: Ronny F. (ronny)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja,man löst den Interrupt aus indem man die unteren 8 Bit ins
Compareregister schreibt.Im Interrupt prüft man dann,ob die oberen auch
stimmen.Bei sehr grossen Compare-Werten kann man vielleicht auch etwas
an den Vorteilern drehen.Dann ist die Auflösung nichtmehr soo gut,dafür
kann sinkt aber die Rechenlast deutlich

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Gibts dafür irgendwo fertigen Code?"

Könnte sein.
Dazu müßte man aber erstmal den MC-Typ wissen und welche
Programmiersprache.


Ob und was die Timer können, hängt hauptsächlich von der Architektur
ab. Wenn Du keinen Compareinterrupt hast, dann geht auch kein
Compareinterrupt.

Wenn Du aber nur ne bestimmte Zeitdauer haben willst, gehe umgekehrt
vor. Setze den Timer auf die negative Zeitdauer und nimm den
Überlaufinterrupt.

Soll die Zeitdauer aber periodisch sein, dann muß man die negative Zeit
zu der bereits vergangen Zeit addieren, sonst gibts Fehler durch die
Interrupteintrittszeit und eventuelle andere Interrupts.


Peter

Autor: MikroMan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als Controller kommen ATtiny 13 oder 15 in Frage.

Programmiersprache wäre C oder Assembler.

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.