Skicka kommando till F877 över RS-232 i C

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
tops
Inlägg: 93
Blev medlem: 13 januari 2004, 08:46:51
Ort: Sollentuna

Skicka kommando till F877 över RS-232 i C

Inlägg 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
Användarvisningsbild
Icecap
Inlägg: 26736
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg 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?
sodjan
EF Sponsor
Inlägg: 43266
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det är väldigt luddigt här...
Är det *PIC* sidan du har problem med ?
Eller Windows sidan ??
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg 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.
Användarvisningsbild
tops
Inlägg: 93
Blev medlem: 13 januari 2004, 08:46:51
Ort: Sollentuna

Inlägg 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
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg 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?)
Användarvisningsbild
tops
Inlägg: 93
Blev medlem: 13 januari 2004, 08:46:51
Ort: Sollentuna

Inlägg 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.
sodjan
EF Sponsor
Inlägg: 43266
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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 !?
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg 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 :D

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.
Senast redigerad av Seven11 20 september 2006, 11:02:13, redigerad totalt 1 gång.
sodjan
EF Sponsor
Inlägg: 43266
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg 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...
Skriv svar