Kommunicera mellan pic och pc
Kommunicera mellan pic och pc
Hej!
Jag har lite funderingar hur man smidigast kan kommunicera mellan tex en pic och pc. Jag hade tänkt bygga mig en liten fläktstyrning till datorn som styrs via en pic18. Dock kom jag på tanken att det vore fint om man kunde skicka lite värden till datorn och kanske skriva ett litet program så man kan se temperatur mm på skärmen. Problemet är att jag inte riktigt vet hur jag skall göra. Jag har fått fram lite värden från en pic på skärmen i en lab jag gjorde i skolan men dels hade man då ett färdigt lab-kort samt att jag inte kommer ihåg vad vi gjorde. Så min fråga är nu hur man kan läsa in värden till datorn, gärna med nått litet tips på hur man läser av lämplig port också?
Mvh Johan
Jag har lite funderingar hur man smidigast kan kommunicera mellan tex en pic och pc. Jag hade tänkt bygga mig en liten fläktstyrning till datorn som styrs via en pic18. Dock kom jag på tanken att det vore fint om man kunde skicka lite värden till datorn och kanske skriva ett litet program så man kan se temperatur mm på skärmen. Problemet är att jag inte riktigt vet hur jag skall göra. Jag har fått fram lite värden från en pic på skärmen i en lab jag gjorde i skolan men dels hade man då ett färdigt lab-kort samt att jag inte kommer ihåg vad vi gjorde. Så min fråga är nu hur man kan läsa in värden till datorn, gärna med nått litet tips på hur man läser av lämplig port också?
Mvh Johan
Välkommen till forumer! 
Vanligtvis finns det två portar att välja på. RS232 (com-porten) eller USB. Du verkar vara nybörjare, så jag skulle råda dig att köra RS232.
Då är det tre grejer du måste göra.
1) Skaffa ett interface som gör om TTL-signalerna från PIC:en till rätt späning så datorn kan tolka dom. MAX232 är en vanlig krets för det, den kräver endast 4st kondingar extra om jag inte minns fel nu.
2) Mecka igång någon form av UART (eller vad det kallas på PIC-språk) i PIC:en för att hantera seriell kommunikation.
3) Fixa ett datorprogram som läser av serieporten. Jag är lite osäker på hur man gör det, men det finns nog många exempel ute om du googlar på typ "c++ serial port" eller något liknande. Det är mycket möjligt att DLPortIO går att använda här.

Vanligtvis finns det två portar att välja på. RS232 (com-porten) eller USB. Du verkar vara nybörjare, så jag skulle råda dig att köra RS232.
Då är det tre grejer du måste göra.
1) Skaffa ett interface som gör om TTL-signalerna från PIC:en till rätt späning så datorn kan tolka dom. MAX232 är en vanlig krets för det, den kräver endast 4st kondingar extra om jag inte minns fel nu.
2) Mecka igång någon form av UART (eller vad det kallas på PIC-språk) i PIC:en för att hantera seriell kommunikation.
3) Fixa ett datorprogram som läser av serieporten. Jag är lite osäker på hur man gör det, men det finns nog många exempel ute om du googlar på typ "c++ serial port" eller något liknande. Det är mycket möjligt att DLPortIO går att använda här.
>>>Det är mycket möjligt att DLPortIO går att använda här.
DLPortIO använder du bara om du ska skriva och läsa direkt från hårdvaran i windows. När det gäller seriell kommunikation på PC så är det mycket bättre att använda siga av operativsystemet.
CreateFile() för att öppna porten.
GetCommState() hämta parametrar
SetCommState() sätta parametrar
ReadFile() för att läsa från porten
EDIT:
Exempel: http://msdn.microsoft.com/library/defau ... source.asp
DLPortIO använder du bara om du ska skriva och läsa direkt från hårdvaran i windows. När det gäller seriell kommunikation på PC så är det mycket bättre att använda siga av operativsystemet.
CreateFile() för att öppna porten.
GetCommState() hämta parametrar
SetCommState() sätta parametrar
ReadFile() för att läsa från porten
EDIT:
Exempel: http://msdn.microsoft.com/library/defau ... source.asp
> en liten fläktstyrning till datorn som styrs via en pic18.
En PIC18 (vilken modell förresten ?) känns "way overkill" för detta.
Men har du den endå och du känner dig lite van att programmera den, så OK...
Som andra har sagt, häng på en MAX232 (eller ekvivalent) och kör
vanligt serie kom. Vill du ha en enkel lösning kan du använda en sådan
här : http://www.jescab.se/RSlink.htm .Om man plockar bort skruvarna
på D-sub'en så kan man sätta den direkt i COM1 eller COM2 och bara dra
en enkel sladd med UART-signarna till ditt kort med processorn.
Och som sagt, att läsa/skriva serieporten från Windows är inget hokuspokus...
En PIC18 (vilken modell förresten ?) känns "way overkill" för detta.
Men har du den endå och du känner dig lite van att programmera den, så OK...
Som andra har sagt, häng på en MAX232 (eller ekvivalent) och kör
vanligt serie kom. Vill du ha en enkel lösning kan du använda en sådan
här : http://www.jescab.se/RSlink.htm .Om man plockar bort skruvarna
på D-sub'en så kan man sätta den direkt i COM1 eller COM2 och bara dra
en enkel sladd med UART-signarna till ditt kort med processorn.
Och som sagt, att läsa/skriva serieporten från Windows är inget hokuspokus...

Ingen dum länk, RS-link verkar ju vara rätt smidig. Jag tänker nog ändå ge mig in på att försöka bygga en egen (fast jag vet inte riktigt hur än så länge). Tack för tipset.
Det blir en PIC18F452-I/P, kör den för att jag har nyttjat den tidigare med gott resultat.
Det blir en PIC18F452-I/P, kör den för att jag har nyttjat den tidigare med gott resultat.
Senast redigerad av Johel572 18 juli 2006, 10:13:30, redigerad totalt 1 gång.
452 är en 40-pinnars kapsel. Du behöver kanske 4-5 I/O pinnar...
Visst, om du redan har den, men köp inte en ny bara för det här !
Ta t.ex en i 18F1220 eller 1320 i 18-pinnars kapsel så blir allt
mycket enklare att bygga. Programmeringen är väldigt lik mellan dessa.
> Jag tänker nog ändå ge mig in på att försöka bygga en egen (fast jag vet inte riktigt hur än så länge).
Jag har lösa MAX232 med kondingar om du är intresserad.
RS-linken är mest tänkt för snabba uppkopplingar på labbplattor...
Visst, om du redan har den, men köp inte en ny bara för det här !
Ta t.ex en i 18F1220 eller 1320 i 18-pinnars kapsel så blir allt
mycket enklare att bygga. Programmeringen är väldigt lik mellan dessa.
> Jag tänker nog ändå ge mig in på att försöka bygga en egen (fast jag vet inte riktigt hur än så länge).
Jag har lösa MAX232 med kondingar om du är intresserad.
RS-linken är mest tänkt för snabba uppkopplingar på labbplattor...
Förtillfället äger jag ingen programerings enhet men jag skall införskaffa en så snart det blir lön. Alltså drar inte bygget igån förens om ett par veckor. ajgg kanske skall förtydliga mig lite också. Själva fläktstyrningen har jag ganska bra koll på hur jag skall lösa (tror jag iallafall
) men sen dök det upp en tanke på att göra ett program som man kan se vad som händer på datorskärmen. Bekymret är att jag inte vet ett skvatt om uart eller vad det nu heter. Jag skulle uppskatta en liten genomgång om hur man skall bete sig för att bara läsa värden från en (i det här fallet) pic18 till en PC (och eventuellt skriva värden också) kontinuerligt. Observera på att jag är helt novis på hur detta skulle tänkas gå till. Tack för att tips jag fått hitils (även om jag inte riktigt förstår allt).
Johan

Johan
> Förtillfället äger jag ingen programerings enhet...
http://www.jescab.se/Wisp628.html
(Jo, det är jag som säljer den...
)
> Bekymret är att jag inte vet ett skvatt om uart eller vad det nu heter.
Konstigt, du skrev i ett tidigare inlägg :
> Det blir en PIC18F452-I/P, kör den för att jag har nyttjat den tidigare med gott resultat.
OK, men då måste du ha läst databladet och kan knappast ha missat
att det finns en USART... Vad menar du igentligen !?
> hur man skall bete sig för att bara läsa värden från en pic18 till en PC...
1. Koppla upp hårdvaran som behövs.
2. Skriv tecken till "Send" delen av USART i PIC'en (databladet har detaljerna)
3. Läs tecken från COMx-porten på PC'n (www.microsoft.com har detaljerna...)
> (och eventuellt skriva värden också)
Då kör du bara åt andra hållet, skriv till COMx porten och läs från
"Receive" delen av USART'en...
För detaljer får du vara tydligare om vad som är problem.
http://www.jescab.se/Wisp628.html
(Jo, det är jag som säljer den...

> Bekymret är att jag inte vet ett skvatt om uart eller vad det nu heter.
Konstigt, du skrev i ett tidigare inlägg :
> Det blir en PIC18F452-I/P, kör den för att jag har nyttjat den tidigare med gott resultat.
OK, men då måste du ha läst databladet och kan knappast ha missat
att det finns en USART... Vad menar du igentligen !?
> hur man skall bete sig för att bara läsa värden från en pic18 till en PC...
1. Koppla upp hårdvaran som behövs.
2. Skriv tecken till "Send" delen av USART i PIC'en (databladet har detaljerna)
3. Läs tecken från COMx-porten på PC'n (www.microsoft.com har detaljerna...)
> (och eventuellt skriva värden också)
Då kör du bara åt andra hållet, skriv till COMx porten och läs från
"Receive" delen av USART'en...
För detaljer får du vara tydligare om vad som är problem.
Hm, jag trodde att man behövde någon extra typ av hårdvara för att nyttja usart men såg nu (igår) att det finns inbygt i pic:en, känner mig så där lite små dum
.
Om jag nu har förstått det rätt så behöver jag utöver en (i mitt fall) pic18 i princip en max232 samt 4 st 1,0uF kondensatorer som skall (rätta mig om jag har fel) anpassar signalnivåerna till COM-portens dito. Efter det så blir det hela ett mjukvaruproblem. Är jag med i matchen då?
Johan

Om jag nu har förstått det rätt så behöver jag utöver en (i mitt fall) pic18 i princip en max232 samt 4 st 1,0uF kondensatorer som skall (rätta mig om jag har fel) anpassar signalnivåerna till COM-portens dito. Efter det så blir det hela ett mjukvaruproblem. Är jag med i matchen då?
Johan
- PHermansson
- EF Sponsor
- Inlägg: 4340
- Blev medlem: 22 december 2004, 00:46:38
- Ort: Särestad Grästorp
- Kontakt:
Själv skulle jag valt en annan variant, nämligen PIC med USB. Visst är USB generellt krångligt, men det är enkelt att koppla upp kretsen och programmeringen enkel med hjälp av den exempelkod Microchip bjussar på.
Programmeringen är dessutom smidig, har man en gång lagt in bootloadern kan man uppgradera programmet via USB-anslutningen.
Lite svensk info - http://wiki.gudinna.com/503
Wiki, bra som startpunkt - http://pic18fusb.online.fr/wiki/wikka.p ... a=WikiHome
Mer bra info - http://www.create.ucsb.edu/~dano/CUI/
Programmeringen är dessutom smidig, har man en gång lagt in bootloadern kan man uppgradera programmet via USB-anslutningen.
Lite svensk info - http://wiki.gudinna.com/503
Wiki, bra som startpunkt - http://pic18fusb.online.fr/wiki/wikka.p ... a=WikiHome
Mer bra info - http://www.create.ucsb.edu/~dano/CUI/
PHermansson> Själv skulle jag valt en annan variant, nämligen PIC med USB....
Mycket möjligt, men det är knappast något att rekomendera för en
PIC-nybörjare !!
Innan man har hunnit *läsa* dokumentationen för USB-kopplingen,
har man sannolikt en RS232 lösning igång flera gånger om...
Så kör RS232 !
(Länkarna var dock bra, *om* man tänker börja titta på USB...)
Mycket möjligt, men det är knappast något att rekomendera för en
PIC-nybörjare !!
Innan man har hunnit *läsa* dokumentationen för USB-kopplingen,
har man sannolikt en RS232 lösning igång flera gånger om...
Så kör RS232 !
(Länkarna var dock bra, *om* man tänker börja titta på USB...)