Timer1 Interrupt-time Pause im state-machine erklaeren?

Fragen und Diskussionen zur Entwicklung von neuen Geräten. Sowohl Hardware als auch Software. English is welcome.
Antworten
asdfg
Beiträge: 8
Registriert: 9. Sep 2015, 13:28

Timer1 Interrupt-time Pause im state-machine erklaeren?

Beitrag 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??
oldcoolman
Beiträge: 645
Registriert: 17. Mai 2013, 20:57
Kontaktdaten:

Re: Timer1 Interrupt-time Pause im state-machine erklaeren?

Beitrag 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.
liebe Grüße
Andreas
asdfg
Beiträge: 8
Registriert: 9. Sep 2015, 13:28

Re: Timer1 Interrupt-time Pause im state-machine erklaeren?

Beitrag 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??
oldcoolman
Beiträge: 645
Registriert: 17. Mai 2013, 20:57
Kontaktdaten:

Re: Timer1 Interrupt-time Pause im state-machine erklaeren?

Beitrag 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.
liebe Grüße
Andreas
asdfg
Beiträge: 8
Registriert: 9. Sep 2015, 13:28

Re: Timer1 Interrupt-time Pause im state-machine erklaeren?

Beitrag 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
oldcoolman
Beiträge: 645
Registriert: 17. Mai 2013, 20:57
Kontaktdaten:

Re: Timer1 Interrupt-time Pause im state-machine erklaeren?

Beitrag von oldcoolman »

Zwischen den Telegrammen ist eine gewisse Zeit einzuhalten. Hier wird der T1
auf 16 bit umgestellt.
liebe Grüße
Andreas
asdfg
Beiträge: 8
Registriert: 9. Sep 2015, 13:28

Re: Timer1 Interrupt-time Pause im state-machine erklaeren?

Beitrag 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?)
?
asdfg
Beiträge: 8
Registriert: 9. Sep 2015, 13:28

Re: Timer1 Interrupt-time Pause im state-machine erklaeren?

Beitrag von asdfg »

Keine Antwort??
Antworten