[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[DDL-ML] RS232 und NMRA protokoll
Ich bin jetzt mit meinen Versuchen das NMRA Protokoll ohne Pausen zur
Serialport rauszuschicken etwas weiter gekommen. Wenn man
waitUARTempty so ändert, daß man statt auf einen leeren Sendbuffer zu
warten ungefär immer ein paar hundert bytes im Sendbuffer hält indem
man mit nanosleep "ungefär kurz genug" wartet, kan man im Leerlauf
schon konstant 19kbit erzeugen. Wenn aber erddcd nicht im Mainloop
ist, gibt es Aussetzer, die sich als Gleichtromimpulse am Gleis
bemerkbar machen. Analoge Loks ruckeln dann an. Da der UART der
meisten PC sowieso nur einen Sendbuffer vol 16 Bytes hat muß man sich
etwas anderes einfallen lassen. UARTs mit 1 Byte Sendbuffer kann man
hoffentlich heutzutage ignorieren. Ich dachte da an einen Treiber, der
konstant den UART (Interrupt wenn leer) mit den nächsten 16 Bytes aus
einem Ringbuffer versorgt. Der Ringbuffer wird dann von erddcd gefüllt
und das ist dann gar nicht mehr so zeitkritisch.
Kommentare? Was ich doch nicht weiß ist wie sich das mit dem M-Protokoll
vertragen würde. (Ist das nicht auch eine andere Bitrate?)
Harald.