Stránka 1 z 1

pic16f628 uart + linux

Napsal: 10 čer 2009, 18:51
od Krida
Zdravím, snažím se už jak dlouho rozjet komunikaci procesoru s počítačem přes COM port a pořád se mi nedaří. Používám hardwarové uart. Když pošlu z počítače do procesoru pomocí příkazu

Kód: Vybrat vše

echo -ne "a" > /dev/ttyS0
procesor přijme hodnotu 0x4F místo 0x61, když pošlu z procesoru do počálu hodnotu právě 0x4F tak přijde 0x61. To by ještě nebylo tak hrozny, v přenosu z počítače do procesoru jsem našel souvislosti a napsal si algoritmus který ty hodnoty převede na správny.
Když ale pošlu z počítače znak b (0x62) procesor přijme 0x27 (to by můj algoritmus převedl na 0x62), když pošlu těch 0x27 zpátky do počálu tak přečte hodnotu 0xb1.

Když sem nechal posílat procesor do počítače všechny hodnoty 0-255 u žádné jsem nepřečetl hodnotu b,d,f,h..... takže tady mi už žádné přepočet nepomuže, můžete mi někdo pls poradit co dělám špatně? diky moc

Napsal: 10 čer 2009, 18:56
od rnbw
Mas spravne nastavene parametre serioveho portu (setserial)?

Napsal: 10 čer 2009, 19:00
od Krida
jestli mysliš nastaveni portu v počálu tak mám přesně takovy a myslim že by to mohlo byt správně

Kód: Vybrat vše

speed 9600 baud; rows 0; columns 0; line = 0;
intr = <undef>; quit = <undef>; erase = <undef>; kill = <undef>; eof = <undef>; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = <undef>; stop = <undef>; susp = <undef>; rprnt = <undef>;
werase = <undef>; lnext = <undef>; flush = <undef>; min = 1; time = 5;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
ignbrk -brkint ignpar -parmrk inpck -istrip -inlcr -igncr -icrnl -ixon ixoff -iuclc -ixany imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
-isig -icanon -iexten -echo -echoe -echok -echonl -noflsh -xcase -tostop -echoprt -echoctl echoke
a ještě k tomu sem zkoušel všechno možny měnit vypinat zapinat a chodilo to furt stejny

Napsal: 11 čer 2009, 01:54
od honza_jan
Podívej se, jakou nadefinovanou komunikaci očekává procesor a podle toho nadefinuj port na počitači. Definuje se obvykle pro asynchronní přenos rychlost, počet datových bitů, parita a stopbity. Záleží na tom, co která strana chce a umí. Jakmile je něco špatně, tak to je stejná komunikace, jako když mluví "ostravak" s "vyhodňarom" :lol: Podle toho vypadá i výsledek. Taky je dobré ošetřit handshaking. Víc ti toho ale neprozradím, protože od dob osmibitů jsem to nepotřeboval řešit. To je víc jak 20 let a poločas zapomínání funguje v mém věku už perfektně.

edit: Tady je pro tebe část zajímavých informací: http://www.dhservis.cz/dalsi_1/bc_prace.htm

Napsal: 11 čer 2009, 13:13
od Atlan

Napsal: 11 čer 2009, 19:00
od Krida
přesně z toho jsem vycházel

Napsal: 11 čer 2009, 19:10
od Andrea
A jak to máš zadrátované na straně toho PICu, co tam máš za převodník na RS-232?

Napsal: 14 čer 2009, 12:19
od meereck
odpoj PIC a na TTL vystupu z prevodniku (napr. MAX232) propoj TX a RX piny a zjisti, jestli to zapojeni prevodniku funguje.