Seite 1 von 1
Timer1 Interrupt-time Pause im state-machine erklaeren?
Verfasst: 9. Sep 2015, 13:38
von asdfg
im Methode "void X1_int(void) __interrupt (2)" gibt es eine Pause sagt "Timer laden so dass in state 2 bei 75us abgefragt wird", aber "TH1=128 TL1=53" mit "8-Bit autoreload", so die Pause ist 203*0.27127us=55us.
wieso??
Re: Timer1 Interrupt-time Pause im state-machine erklaeren?
Verfasst: 9. Sep 2015, 16:46
von oldcoolman
ohne jetzt genau nachzudenken....
zum einen vergeht ja vom Ereignis bis zur codestelle bereits Zeit...
zum anderen wird im reload nicht der Wert des nächsten sondern des
übernächsten Wertes geladen. wir ändern den reload, nicht den laufenden timer.
Re: Timer1 Interrupt-time Pause im state-machine erklaeren?
Verfasst: 10. Sep 2015, 01:45
von asdfg
Hallo
zum einem, ja, du hast recht. Wie kann Man diese Zeit erwarten/berechnen?
Und du meinst die Zeit ist:
(256-53+128)*0.27127??
Re: Timer1 Interrupt-time Pause im state-machine erklaeren?
Verfasst: 10. Sep 2015, 07:43
von oldcoolman
Um zu wissen wie viel Zeit bis dahin vergeht gibt es 2 Möglichkeiten:
1. Man schaut sich den ASM output an und zählt Befehlszyclen.
2. Man gibt den laufenden timer auf den uart aus.
Also so ähnlich:
uchar temp = THL;
SBUF = temp;
while ! TI;
vom ausgebenen Wert sind die für die Ausgabe verbrauchten Zyclen noch ab zu ziehen.
Da die Warteschleife TI in den Empfang reinpfuscht ist nur der erste empfangene Wert gültig.
Das ist jetzt Theorie, wir hatten damals zyclen gezählt. Ferner zum Abfragezeitpunkt einen Portpin gesetzt und mit Oszilloscope mit dem Bussignal verglichen.
Re: Timer1 Interrupt-time Pause im state-machine erklaeren?
Verfasst: 10. Sep 2015, 11:26
von asdfg
aber wieso im "void init_rx(void)" die Zeit sagt
"// busfree Zeit = 15 Bit (auf ACK) + 11 Bit (ACK) + 53 Bit=79bit"
und TH1=0x89, TL1=0xAF
also t=(0xFFFF-0x89AF)*0.27127=8216us=79bit
Re: Timer1 Interrupt-time Pause im state-machine erklaeren?
Verfasst: 10. Sep 2015, 13:40
von oldcoolman
Zwischen den Telegrammen ist eine gewisse Zeit einzuhalten. Hier wird der T1
auf 16 bit umgestellt.
Re: Timer1 Interrupt-time Pause im state-machine erklaeren?
Verfasst: 11. Sep 2015, 10:39
von asdfg
die Frage ist:
wieso hier im "init_rx" muss Man auf 79bit warten?
die Zeit ist zwischen den Telegrammen order
zwischen ACK and der Telegramme (50 bit order 53 bit sein?)
?
Re: Timer1 Interrupt-time Pause im state-machine erklaeren?
Verfasst: 22. Sep 2015, 15:51
von asdfg
Keine Antwort??