PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 8051 Timer frage



sebastian.heyn
24.07.2005, 09:22
Hallo,

mal ne frage zu den 8051ern: ist es richtig, das sie nur einen 8 bit timer haben, und somit timer im sekundenbereich nur durch zusätzliche zählervariablen machbar sind? oder nehm ich (ich habe einen baustein mit & gliedern) lieber ne externe takterzeugung wenns nicht auf genauigkeit ankommt?

Sandro
24.07.2005, 18:22
Jein.
Der ursprüngliche 8051 hat zwei 16-bit Timer.
Bei größeren Zeitspannen benutzt man aber für gewönlich einen Timer als
Zeitbasis. Dazu konfiguriert man ihn auf den Auto-reload-Modus. In diesem
Modus arbeitet er als 8-bit Timer, wird aber bei jedem Überlauf automatisch
nachgeladen. Durch zusätzliche Zählvariablen kann man die gemessene Zeit
abbilden.
Neuere 8051 Derivate haben meist noch einen dritten Timer. Dieser kann
auch als 16-bit Timer im Auto-reload-Modus arbeiten.
Einen externen Tackt würde ich nicht zuführen. Dadurch wird nur die
Schaltung vergrößert. Der Controller hat genug RAM um einige register als
Zähler opfern zu können.

sebastian.heyn
25.07.2005, 07:21
danke für die antwort. ich habe noch nichts näheres zu den MODES gefunden mode=2 ist auto reload (8bit) aber was ist mode=1 und mode=3

wenn 16bit nicht autoreload ist, dann muss ich doch nur nochmal load timer in der timer routine verwenden.

Sandro
25.07.2005, 21:07
Mode0: 8-bit Timer mit 5-bit Vorteiler.
Den Modus kannst du gleich wieder vergessen. Das ist ein Relikt aus dem 8048.

Mode1: 16-bit Timer

Mode2: 8-bit Auto-reloade

Mode3: Timer0 wird in zwei 8-bit Timer geteilt. Dies beeinflusst aber Timer1 da dessen Kontrollbits benutzt werden.

Du kannst natürlich den Timer auch im 16-bit Modus benutzen und im Timerinterupt selbst mit einem Wert nachladen. Ist hohe Genauigkeit gefragt solltest du aber die reaktionszeit des Interupts berücksichtigen. Diese ist nicht immer gleich lang. Läuft der Timer über zählt er einfach wieder von 0 an weiter. Dadurch steht die Reaktionszeit im Timer. Diese Zeit und die Zeit die benötigt wird den Timer zu beschreiben musst du auf den gewünschten Reloadwert addieren.

sebastian.heyn
27.07.2005, 12:12
Danke. Hat mir seeehr geholfen. So zeitkritisch ist die anwendung nicht.