Timer mehrfach Overflow, dann erst Interrupt?

Gast #2597013
Lesenswert?

Hallo und einen Guten Abend,

ich beschäftige mich momentan mit dem Timer eines 8051er und weiß wie er 
geht, ein Interrupt kann ich mit ihm beim Overflow auslösen, jetzt habe 
ich eine Frage dazu, da es ja sehr schnell ist, wenn er von 0 auf seine 
16 bit kommt und überläuft, kann man da etwas bei den SFR einstellen, 
das er z.B. erst beim 10. mal Überlaufen das Interrupt auslöst?

ich habe es jetzt so gemacht das ein Register hoch zählt und bei der 
bestimmten Anzahl an überläufen die Interrupt-Routine ausführt.

Kann mir jemand helfen?


Danke schon mal an alle!
Gast #2597093
Lesenswert?

Reinhard B. schrieb:
> Einfach in der ISR eine Variable runterzählen. Nennt sich dann Software
> Timer.

Ist vom Ansatz das Gleiche wie

Simon schrieb:
> ich habe es jetzt so gemacht das ein Register hoch zählt und bei der
> bestimmten Anzahl an überläufen die Interrupt-Routine ausführt.

Ich kenne mich mit dem 8051 nicht aus, aber ich denke nicht, dass das 
geht. Das übliche Vorgehen ist das Zählen einer Variable. Alternativ 
kann man auch vielleicht noch den Vorteiler runterstellen.
Gast #2597103
Lesenswert?

> ich habe es jetzt so gemacht das ein Register hoch zählt und bei der
> bestimmten Anzahl an überläufen die Interrupt-Routine ausführt.

So macht man das (oder eine Variable).

Hardware ist hardware weil hwardware so hard ist daß du dir bei ihr 
nicht einfach was wünschen kannst.
Gast #2597112
Lesenswert?

Hi

>> ich habe es jetzt so gemacht das ein Register hoch zählt und bei der
>> bestimmten Anzahl an überläufen die Interrupt-Routine ausführt.

>So macht man das (oder eine Variable).

Es ist aber sinnvoller herunter zu zählen. Bei Null wird das Zero-Flag 
gesetzt und ein zusätzlicher Vergleich entfällt.

MfG Spess
Gast #2597135
Lesenswert?

Okey, jetzt habe ich da was gefunden, finde jedoch nichts dazu, bzw. 
blick das nicht so ganz, kann mir jemand weiterhelfen mit dem 
"MC8048-Timer"??

(Funktion als MC8048-Timer. Das Low-Byte arbeitet als 5-bit-Vorteiler 
(max, interner Systemtakt/32))
#2597210
Lesenswert?

spess53 schrieb:
> Es ist aber sinnvoller herunter zu zählen. Bei Null wird das Zero-Flag
> gesetzt und ein zusätzlicher Vergleich entfällt.

Der 8051 hat kein Zero-Flag. JZ bzw. JNZ prüfen direkt, ob ACC = 0 ist.

Allerdings hat der 8051 den Befehl DJNZ, der bei != 0 springt und keine 
Flags beeinflußt. Man muß also nichts pushen, wenn man ihn in der ISR 
benutzt.

Der 8051-Befehlssatz ist sehr gut auf Steuerungen optimiert worden.


Peter
Gast #2597227
Lesenswert?

Hi

>Der 8051 hat kein Zero-Flag. JZ bzw. JNZ prüfen direkt, ob ACC = 0 ist.

Ich hatte erst vor kurzem bei verschiedenen Controllern nach den 
verfügbaren Flags nachgesehen, und die hatten alle ein Z-Flag. 8051 habe 
ich allerdings nicht in meiner Datenblatt-Sammlung. Daher ist mir dieser 
Unterschied entgangen. DJNZ ist mir vom Z80 ein Begriff.

MfG Spess
Gast #2597676
Lesenswert?

Danke für eure Hilfe, ich weiß jetzt, das der Controller den ich 
verwende auf 13 bit gestellt, steht net im Datenblatt, aber Keil 
µVision4 hats mir im Debug-Mode gezeigt, hab mit dem Mode noch nie 
wirklich gearbeitet, aber Trotzdem danke ich werde mich damit dann noch 
weiter auseinander setzen, ist ein sehr interessantes Thema =D
#2597799
Lesenswert?

Simon schrieb:
> das der Controller den ich
> verwende auf 13 bit gestellt, steht net im Datenblatt

Manchmal lagern die Hersteller die Peripheriebeschreibung in extra PDFs 
aus.
Z.B. bei Atmel in das "8051 Microcontrollers Hardware Manual".

Der 13Bit-Mode wird wirklich sehr selten verwendet, wenn das zufällig ne 
günstige Interruptrate ergibt.
Häufiger ist der 16 oder 8Bit-Mode.


Peter

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