Hallo!
mit folgendem Fragment sendet ein AtMega8 mit einem Max485 Daten:
Mir geht es nun um die zwei Zeilen "Waitms 10"
Angeblich reichem dem Max485 zum umschalten 30ns (maximal 60ns)
Alles unter Waitms 5 geht nur mit vielen Fehlern; Waitms 10 ist stabil. Bei 1MHz Taktfrequenz des Mega8 (er macht sonst nichts) verstehe ich das nicht.
Viel gravierender ist aber die zweite Zeile mit "Waitms 10"
Diese Wartezeit benötige ich, da sonst der Datenstrom abreist. Ist ja auch logisch, da zum senden der gepufferten Daten etwas Zeit benötigt wird, der Max485 aber schon wieder in den "Lese" Modus gesetz wird.
Diese 10ms sind aber jetzt nur geschätzt und laufen derzeit bei mir stabil (aber: der Datenstrom hat immer die selbe Länge)
Nun stellt sich mir die Frage, woran man erkennen kann, dass alles komplett gesendet wurde und der Datenpuffer leer ist.
Eigentlich soll das so funktionieren:
Aber gerade das funktioniert nicht: Das Programm bleibt in der schleife hängen.
Und nu?
Grüße
mit folgendem Fragment sendet ein AtMega8 mit einem Max485 Daten:
Code:
Rs485_senden = 1
Waitms 10
Print "@" + Geraete_adresse_str + Datastring
Waitms 10
Rs485_senden = 0
Mir geht es nun um die zwei Zeilen "Waitms 10"
Angeblich reichem dem Max485 zum umschalten 30ns (maximal 60ns)
Alles unter Waitms 5 geht nur mit vielen Fehlern; Waitms 10 ist stabil. Bei 1MHz Taktfrequenz des Mega8 (er macht sonst nichts) verstehe ich das nicht.
Viel gravierender ist aber die zweite Zeile mit "Waitms 10"
Diese Wartezeit benötige ich, da sonst der Datenstrom abreist. Ist ja auch logisch, da zum senden der gepufferten Daten etwas Zeit benötigt wird, der Max485 aber schon wieder in den "Lese" Modus gesetz wird.
Diese 10ms sind aber jetzt nur geschätzt und laufen derzeit bei mir stabil (aber: der Datenstrom hat immer die selbe Länge)
Nun stellt sich mir die Frage, woran man erkennen kann, dass alles komplett gesendet wurde und der Datenpuffer leer ist.
Eigentlich soll das so funktionieren:
Code:
Rs485_senden = 1
Waitms 10
Print "@" + Geraete_adresse_str + Datastring
While USR.TXC <> 1
Wend
Rs485_senden = 0
Aber gerade das funktioniert nicht: Das Programm bleibt in der schleife hängen.
Und nu?
Grüße