foghíj
Piszkos Fred
fijjug at freemail.hu
Sun Jul 18 22:19:26 CEST 2004
Sziaztok Fijjug!
Jó volna ha valaki tudna segíteni egy olyan problémámban, hogy ccs
c-ben írt két programom soros kommunikációjában általam
ledönthetetlen falba ütköztem.
Van két teljesen azonos felépítésű nyák. Az egyikben fut a master
program, a másikon a slave egy-egy PIC microvezérlőben.
Utasítást küld a master, 3 bájtot egymás után. Ezt fogadja a slave,
válaszol is 3 bájtos csomaggal.
Ez az esetek úgy 98%-ban tökéletesen működik. Azonban azt vettem
észre, hogy az elküldött 3 bájtból valamikor csak a 2., ill csak a 3.
érkezik meg, tehát olyan, mintha
időnként egy-két bájt nem érkezne meg a címzett oldalára.
Az adatokat putc-vel küldöm a főprogramból // putc(p1);putc(p2);
putc(p3);
közvetlenül egymás után, adat érkezését pedig megszakítás jelzi
int_RDA, itt vett_adat=getc() után
értelem szerűen az elsőként vett adat p1, a 2. p2, a 3. p3 lesz, majd a
számlálót nullázom
Ezen a megszakításom kívül még egy TMR0 megszakítás fut le időnként,
hogy a kártyák bemeneteit beolvassa a PIC
Mondjuk ezzel már az elején is volt problémám, merthogy a ccs c ugye
alapból automatikusan állítgatja a TRIS biteket.
PORTC:0 lábon van a bemeneteket beolvasó 74HC165 IC-k CLK lába.
Azt vettem észre, hogy azért nem olvas be az RX lábon semmit a
PIC, mert amikor TMR0-ban meghívja a 165-ös ICket kezelő
alprogramot, akkor utána kell egy
set_tris_c(128); //ez csak azért kellett, mert ez után a read 165
után nem tudott beolvasni soros adatot
pedig ezt semmi sem indokolná, már csak azért sem mert ez a program
a C port 0. és 7. lábát használja csak.
formátumnak az alábbit állítottam, és a proci PIC16F877, 20MHz-n
#use rs232(baud=19200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
Segítsetek! Én nem látok valamit? Vagy másképpen csinálnátok?
Köszi: Fred
More information about the Elektro
mailing list