Seriele communicatie met OM32 probleem bij aansturen met eigen software
Achtergrond:
Ik wil met een Arduino mijn seinen, aangesloten aan mijn OM32's graag aansturen. Ik heb me verdiept in de datastructuur zoals die door Leon beschreven is en snap prima wat er gebeurt.
Ik ben zo eenvoudig mogelijk begonnen: OM32config die via de seriele poort de data verzend: een max232 converter die er 5V van maakt zodat een Arduino het op kan pakken en vervolgens terugstuurt.
Wat goed gaat is als ik een loop back maak op de converterprint. Dus de seriele poort verzend de data, de 5Vrx stuurt hem door naar de 5V txt en de max232 maakt er weer een RS232 signaal van en stuurt de OM32 en voila, de LED gaat aan of uit.
Echter zodra ik het via de Arduino binnen laat komen en weer terug stuur (if Serial.available() { Serial.wiite(Serial.read()) }, dan zwijgt de led in alle kleuren.. Ik heb op beide kanalen een scope gehangen met en zie keurig zowel de signalen binnenkomen als (een korte tijd later) de zelfde bytes ook weer naar buiten gaan. Ik stuur 1 van de eerste 3 leds aan, dus de reeks 0x0385818AED, 0x0385808AEE en 0x0385828AEC komen dan voorbij. Inhoudelijk kloppen ze. Maar gaan niet aan of uit..
Uiteraard staat de baudrate goed, net als start en stopbits 19k2, N,8,1.
Heb ook nog geprobeerd om met het programma Termite, waarmee je binaire data naar je com poort kan sturen de genoemde byte reeks ook te sturen. Dus zonder Arduino tussenkomst of de Max232 converter, dus helemaal kaal de Windows die met een Compoort aan de OM32 hangt, waar de eerder genoemde OM32config prima mee werkt.
In dat geval doet de OM32 kaart ook niets, hoewel ik de genoemde bytes ook weer prima helder en duidelijk op de scope zie.. Vergelijk ik de timing tussen dat wat om32config naar buten stuurt en wat Termite doet, zie ik qua timing niet of nauwelijks verschillen, hooguit in de uS.
Lange inleiding op de vraag (wellicht aan Leon): moet ik iets bijzonders doen voor de seriële communicatie qua timing oid? Zit er ergens nog een handigheidje die je zou moeten weten?
Groet,
Leendert