RS485 a přesné časování v Linuxu

MP

Re: RS485 a přesné časování v Linuxu
« Odpověď #15 kdy: 09. 02. 2011, 11:29:57 »
2 msec su problem na linuxe? To je nejaka embedded doska alebo nadupany intel?

mala ludra. hlavne je problem v tom, ze nevime jak zjistit, kdy skutecne odesel posledni byte, abychom mohli zmenit stav RTS. nekteri to resi treba tim, ze zpetne ctou co poslali, ovsem i tak reakce driveru na zmenu RTS je docela promenna. a staci malo a uz se ztraci odpoved od druhe strany.

S tim ctenim odeslaneho jsme to kdysi taky pouzivali a celkem to fungovalo. Jedinej problem byl s tim ze se musel nastavit trigger prijimaciho bafru na 1 byte. Jinak posila seriovej brouk interupty az po nejakym timeoutu a to byl problem.
Jeste by slo zapinat a vypinat RTS rucne. Vypinalo by se presnym casovacem po dobe (pocet bytu * 10/BAUDRATE). I staricke 386 s jadrem 2.4 stacily plnit vysialci bafr a k prodlevam mezi vysilanymi byty nedochazelo. Jeste by to slo posychrovat prectenim posledniho prijateho resp vyslaneho bytu.


MilanK

Re: RS485 a přesné časování v Linuxu
« Odpověď #16 kdy: 09. 02. 2011, 18:33:03 »
Trocha grepování ve zdrojácích 2.6.37:

- ioctl TIOC{S,G}RS485 je podporován pouze ovladačem atmel_serial (CONFIG_SERIAL_ATMEL) a crisv10.c (CONFIG_ETRAX_SERIAL)
- sériové ovladače implementují funkci tx_empty(), kterou sériový subsystém (serial_core.c) používá pro struct tty_operations.wait_until_sent (ta se volá např. přes ioctl TCSETSW2) -- takže ten TCSETSW2 je asi nejrychlejší obecný způsob

Jaký ovladač se používá pro tu komunikaci s RS485 převodníkem?