Sida 1 av 1
Skicka kommando till F877 över RS-232 i C
Postat: 18 september 2006, 08:48:29
av tops
Hej.
Jag behöver lite hjälp med att läsa av datorns comport.
Jag behöver implementera en funktion i min PIC f877. Tanken är att
skicka ett kommando från datorn via hyperterminal (RS232) och beroende
på vilket värde jag skicka med så skall det styra respektive utgång på PICen. Jag tänkte mig att man i terminalfönstret får upp en text >Command:
Efter : skriver man @2 tex, där @ visar att det finns data att hämta och 2 är den utgån jag skall driva (i det här fallet en lysdiod som är kopplad på denna utgång. Jag har gläömt mycket av mina C kunskaper, var ett tag sen sist. Har nyss kommit igång och har inte riktigt koll på vilka filer som behöver inkluderas, just nu har jag bara 15f877.h inkluderad.
Hoppas nån kan hjälpa till
/Tobbe
Postat: 18 september 2006, 08:55:10
av Icecap
På min hensida under "Freebies" finns det ett projekt som tar emot seriella data till en PIC16F628A och i sin tur styr RC-servo utgångar. Källkod finns med i C och det kanske kan ge lite tips?
Postat: 18 september 2006, 09:49:06
av sodjan
Det är väldigt luddigt här...
Är det *PIC* sidan du har problem med ?
Eller Windows sidan ??
Postat: 18 september 2006, 11:02:07
av Seven11
kolla denna sida:
http://www.microchipc.com/sourcecode/index.htm#serial
Med HiTecH PICC så inkluderar du bara pic.h och definerar vilken PIC processorer projektet avser så inkluderar den själv rätt filer. Det finns även sample code för avbrottsdriven överföring av seriell data.
Postat: 19 september 2006, 17:26:43
av tops
Hej.
Tack för era svar. Har nu kommit igång lite med min seriella överföring.
Dock har jag lite nya funderingar.
Jag använder PortC för RS-232 överföringen (RC6&RC7). Jag vill kunna använda resterande portar ,dvs RC0-RC5. Problemet är när jag skriver till portC så händer även saker på de sista bitarna som används för rs232 och överföringen funkar inte.
Jag har gjort följande:
set_tris_B(192); RC0-RC5 output, RC6-7 Input
..
..
..
när jag skall skriva till port C använder jag output_C(värde) men här
måste jag få till att inde RC6 och RC7 påverkas.
Tips??
edit:
Jag använder PIc C compiler (30day ev. version) och kommunikationen har jag definerat så här:
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
Kanske inte den bästa, men det var ett exempel jag hitta....
/edit
Postat: 19 september 2006, 17:37:22
av cyr
Då använder du inte USARTen som finns i F877 antar jag?
Det är kanske lite dumt, när den trots allt finns där... undviker ditt problem gör det också.
Borde väl rimligtvis finnas stöd för USART i din kompilator också.
edit: inlägg 2^11!
(är man skadad om man tycker 2048 är ett jämnare tal än 2000?)
Postat: 19 september 2006, 17:48:03
av tops
Nja, sitter å läser lite om compilatorns komando, och är inte riktigt säker på om jag använder usarten eller inte. trodde från början att kompilatorn gjorde nödvändiga inställningar via det kommando jag skrev, men det är nog inte så. Får leta upp exempel på usart istället.
Postat: 19 september 2006, 19:24:57
av sodjan
> set_tris_B(192);
Inget bra radix om man vill verifiera hur du sätter TRIS.
Använd gärna hex eller (bäst och tydligast) binära värden för TRIS konstanter.
> #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
Låter som en mjukvaru-usart, och då hälper inte *hårdvaran* till att
"skydda" pinnarna från klumpig programmering. Och jag skulle
inte tro att kompilatorn gör det heller. När du gör "output_C(värde)"
så skriver den säkert helt glatt till alla 8 pinnarna, inklusive de som
mjukvaru-usart'en använder...
> och är inte riktigt säker på om jag använder usarten...
Om det *var* hårdvaru usart'en som används, så förstår jag inte
varför man ska ange pin-nummer i "#use rs232()" direktivet !?
Postat: 19 september 2006, 19:30:25
av Seven11
satan vilken fin kompilator du måste ha om den optimerar så fint att du bara behöver ange portar och om du råkar ha valt en PIC med UART och rätt portar är valt så slänger den in kod för att hantera den inbyggda istället för bitbanging
kolla
HiTech PICC istället, Lite versionen är gratis och har ingen tidsbegräningen men på en del PIC modeller så kan du inte använda alla minnesbankar men jag har än så länge inte haft något problem med det.
Då kan du dessutom använda den kod jag har länkat till ovan (visst det borde gå att porta den väldigt enkelt men då du bara kan använda din kompilator i 30 dagar så vore det ju nästan bättre att byta till en du kan köra med en längre tid.
Postat: 19 september 2006, 19:33:14
av sodjan
> den kod jag har länkat till nedan
Observera att "nedan" blir "ovan" efter att du har klickat på "Skicka"...

Lite förvirrande när det finns många senare inlägg...