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