Realtidsproblem med FTDI 232 R - och lösning.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
MattisLind
Inlägg: 775
Blev medlem: 27 maj 2011, 20:27:12
Ort: Älvsjö
Kontakt:

Realtidsproblem med FTDI 232 R - och lösning.

Inlägg av MattisLind »

Jag har hållit på med ett kort för att styra en remsläsare / stans med en ATmega processor. Den ska kommunicera seriellt och för att styra läsaren ska man skicka en signal "Reader Run" som får läsaren att skicka tillbaka en byte. Allt detta för att vara kompatibel med den PDP-11 jag håller på med. När jag skulle testa detta på en PC (MAC9 så fick jag problem. Det visade sig att jag alltid fick overrun i läsaren och att reader run bara inträffade ungefär var 16:e ms. Mycket felsökande i både Atmega kod och i C-koden för MACen. Ingen lösning tills jag upptäckte att problemet nog hade att göra med USB-dongeln. Efter lite sökande hittade jag den här artikeln.

Sätter jag ned "LatencyTimer" till 1 ms så fungerar det mycket bättre och för att vara helt säker så förändrade jag också ATmega koden så att den har en räknande semafor på reader run. På så sätt så fungerar det både för PDP-11 med bra realtime response och PC / MAC med USB dongle.

Detta är kanske är allmänt känt, men om inte: Kolla "LatencyTimer" om du får problem med USB donglar.
opatagio
Inlägg: 236
Blev medlem: 24 maj 2005, 20:19:21

Re: Realtidsproblem med FTDI 232 R - och lösning.

Inlägg av opatagio »

Ahh sedär! Mycket tacksamt för denna notis. För en månad sedan försökte jag använda PC:n att simulera slav till ett styrkort med, i mitt fall, högt pollningsinterval (20ms) vilket fallerade stenhårt när PC:n inte hann svara styrkortet i tid, dvs inom 20ms efter pollning. Detta testades med en orginal FTDI TTL-232-3V3 kabel. Ska göra föreslagen ändring i Windows och prova igen och se om jag kan få det att fungera denna gången. Bör påpekas dock att jag fick min simulerade slav att fungera på en linux burk (eller ja, en mini-pc med buildroot för att vara exakt). Kan också vara klantig hantering av SerialPort-klassen i C# från min sida hehehe. I vilket fall ska det bli roligt att se om det funkar även på Windows-burken genom att sänka latencytimer som beskrivs i länken.
Skriv svar