AT89C2051 + sériová linka + PC s Linuxem

Mám problém s komunikací po sériovém kanálu. Když pošlu byte dat z PC (Suse Linux), tak atmel (AT89C2051) ho bez problému přečte a zobrazí mě jej na displeji. Ale naopak když pošlu nejaký byte z atmelu tak to v PC nemůžu přečíst (čtu to pomocí /dev/ttyS0 v konzoli). Baud rate, stop bit a paritu mám v PC nastavenou správně. Tady sem vystavil schéma zapojení a kód programu - stud.fit.vutbr.cz/~xmicul05/ . Za jakékoli postřehy co tam mám špatně budu velmi vděčný… :unamused:

skus na tom kabli prepojit rx a tx a to co vysles z PC sa zaroven prijme - teda takto vylucis ze chyba nastava v posielani z atmelu

Prooblém v prohození RX - TX nebude, když oíše, že: “Když pošlu byte dat z PC (Suse Linux), tak atmel (AT89C2051) ho bez problému přečte a zobrazí mě jej na displeji.” Ten bude asi na straně příjmu PC, nebo vysílání Atmelem (knihovnu jsem zatím neviděl).

On nepisal prehodit RX - TX, ale prepojit na strane PC, kde zisti, ci mu komp prijme znak, ktory vysle, a moze skusit aj na strane uProc, kde zisti, ci mu uProc vysiela znak, ktory treba…

2 stanleyv: souhlasím s tebou :wink:

prostě na straně pc propoj txD a RxD dohromady, a zkus vyslat znak. Měl by se přijmout správně…
Nebo druhá varianta, kdy je lepší mít na tohle nějaký terminál (program) který je přímo určený na “hraní si” se sériovým portem, a ne používat konzoli z linuxu (na linuxy alenejsem odborník, tak nevim…) - problém by mohl být taky v nesprávném kódováním textu. Protože znak se musí odeslat ten co se odeslat má, ale pokud třeba přijmeš hodnotu 97 tak to nemusí znamenat že se ti opravdu zobrazí “a”… Zkus použít nějaký program - terminál který je na tyhle věci přímo určen…
Hodně úspěchu, Honza