Probleme mit der Taktrate

Gast #1292884
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
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.
Gast
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
Gast
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

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