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!
Einfach in der ISR eine Variable runterzählen. Nennt sich dann Software Timer. Manche Timer bieten auch die Möglichkeit, einen Prescaler einzustellen.
Reinhard B. schrieb: > Einfach in der ISR eine Variable runterzählen. Sry für die Frage, aber was heißt ISR?
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.
> 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.
Okey, danke, dann mache ich das wohl doch so, danke =)
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
Mir fällt grade auf, das es noch TCon und TMOD gibt, ist der Timer standardmäßig auf 16 oder 8 bit gestellt, weiß einer das?
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))
Simon schrieb: > Mir fällt grade auf, das es noch TCon und TMOD gibt, ist der Timer > standardmäßig auf 16 oder 8 bit gestellt, weiß einer das? Ja, das Datenblatt. Und Tante Google liefert es sogar auf deutsch: http://www.goblack.de/desy/mc8051chip/datenblatt/register/tcon01.html
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
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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.