Forum: Mikrocontroller und Digitale Elektronik Probleme mit der Taktrate


von Andreas (Gast)


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

von Karl H. (kbuchegg)


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.

von Klaus (Gast)


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

von spess53 (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.