www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit der Taktrate


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nabend,
ich versuche meiner kleinen Schaltung beizubringen in einem bestimmten 
Takt zu blinken.
Zum Erzeugen der Taktrate nehme ich einen Warteschleifengenerator.

Mir ist aufgefallen, das zwischen der Taktrate im Code und dann der 
tatsächlichen Rate (meist langsamer) ein Unterschied besteht.


Beispiel 10hz.

.include "tn13def.inc"
;
start:
  ldi r16, $1f
  out DDRB, r16
  ldi r16, $00
  out PortB, r16
;
Loop:
  sbi PortB, 0
  rcall Warte
  cbi PortB, 0
  rcall Warte
        rjmp Loop

Warte:

; =============================
;   Warteschleifen-Generator
;     400000 Zyklen:
; -----------------------------
; warte 399999 Zyklen:
          ldi  R17, $97
WGLOOP0:  ldi  R18, $06
WGLOOP1:  ldi  R19, $92
WGLOOP2:  dec  R19
          brne WGLOOP2
          dec  R18
          brne WGLOOP1
          dec  R17
          brne WGLOOP0
; -----------------------------
; warte 1 Zyklus:
          nop
; =============================

ret

Im Generator läßt sich die Taktrate von 1,0000 bis 11,059 auswählen.
Da 4,000 voreingestellt war, habe ich damit gearbeitet.
Dazu noch die Zeit (z.B 0,1 für 10 hz).

Ich benutze einen tiny13.

Ich hoffe mir kann da jemand einen Tipp geben, was ich ändern muss.

Grüße
Andreas

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas schrieb:

> Im Generator läßt sich die Taktrate von 1,0000 bis 11,059 auswählen.
> Da 4,000 voreingestellt war, habe ich damit gearbeitet.

Das macht absolut Sinn.

Wenn dein Tiny mit 1Mhz arbeitet (die meisten AVR µC arbeiten fabrikneu 
mit ca 1Mhz), dann ist sehr sinnig, dem Generator vorzulügen dass dein 
µC mit 4Mhz getaktet ist.

> Ich hoffe mir kann da jemand einen Tipp geben, was ich ändern muss.

Sag dem Generator was Sache ist.

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit der Warteschleife irgendwas Blinken zulassen ist eigentlich ne 
ziemliche Zeitverschwendung für den µC.
Der µC macht in dieser Zeit sonst nichts anderes mehr.

Du kannst deinen Takt auch über Timer steuern. Setzt aber voraus das Du 
mit der Timerprogrammierung vertraut bist.

Gruß
Klaus

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Das mit der Warteschleife irgendwas Blinken zulassen ist eigentlich ne
>ziemliche Zeitverschwendung für den µC.

Ja. Aber als Übung OK. In einem richtigen Programm falsch.

MfG Spess

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.