Probleme mit der Taktrate

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren