Hallo,
ich habe eine kleine Aufgabe von meinem Dozenten bekommen und hatte
diese meines Wissen richtig gelöst.
Allerdings, als ich die Aufgabe zurück bekam, war diese leider doch
nicht richtig. :(
Vom Dozenten bekam ich auch nicht die Auflösung, das wird nach den
Ferien in der Klasse besprochen.
Aber bevor ich ganz dumm dastehe, frage ich euch mal:
Es geht um den 8051er, immer mit 16MHz verwendet und dem Timer0 als
16bit-Zeitgeber.
Für diese Aufgabe wird aber die Frequenz von 20MHz verwendet.
Die Frage lautet: "Wie lauten die Werte für TL0 und TH0 bei 20MHz, damit
der 16bit Timer0 auf 28µs eingestellt wird?".
Hier meine Berechnung erstmal für 16MHz:
1 | // T0 auf 28µs einstellen: 65536 - 28 = 65508
|
2 | TH0 = 65508 / 256; // 0xFF
|
3 | TL0 = 65508 % 256; // 0xE4
|
Das war laut Dozent richtig.
Nun mein Versuch mit 20MHz:
(20MHz / 12) = 1,67MHZ = 600ns
16bit -> (65536 * 600ns) = 39321µs (ungefähr)
1 | // T0 auf 28µs einstellen: 39321 - 28 = 39293
|
2 | TH0 = 39293 / 256; // 0x99
|
3 | TL0 = 39293 % 256; // 0x7D
|
Dieser Code für 20MHz ist falsch.
Kann mir bitte jemand erklären, wie man das richtig rechnet?
Danke,
Arno