Frågor om PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Blizzard
Inlägg: 6
Blev medlem: 5 augusti 2005, 23:04:11

Frågor om PIC

Inlägg av Blizzard »

Okej, ska erkänna right away att jag inte har någon vidare stor erfarenhet av PIC:ar eller microprocessorer i allmänhet. Det är så att jag undrar hur pass svårt det är att skriva någon typ av programvara för en PIC som kan köra självständigt och kommunicera med datorn över t.ex. serieporten. Jag kan tänka mig att man behöver en MAX2** för att sköta kommunikationen?

Vore det omöjligt för mig som är relativt grön att bygga en krets med låt oss säga en PIC16F876A (förslå gärna en mer lämpad då 16F8xx är ganska dyra), en MAX202 och ett serielt eeprom (typ M24C) som plockar data från EEPROM:et och skickar datan till serieporten?

Som ni kanske ser så har jag inga jätteerfarenheter, men en brinnade experimentlust och vilja att lära mig. Hoppas någon här kan komma med några bra tips och vägledning.
Användarvisningsbild
Schnegelwerfer
Inlägg: 1863
Blev medlem: 8 november 2004, 13:46:56

Inlägg av Schnegelwerfer »

Projektet är absolut ingen omöjlighet, bara man tar det stegvis.

Mycket hänger ju på hur stor programmeringserfarenhet du har sedan tidigare, men det är ju bara att börja blinka med lysdioder och lära sig allteftersom! :)

Angående vilken typ av PIC du ska använda så får någon annan svara på den frågan. Hårdvaru I2C/SPI vore ju önskvärt, samt givetvis en UART.
Blizzard
Inlägg: 6
Blev medlem: 5 augusti 2005, 23:04:11

Inlägg av Blizzard »

Jag har ganska mycket erfarenhet i många typer av programmering. Både HTML och Javascript. Nejdå, jag skojar :lol:

Jag har iaf. grundläggande kunskaper i Assembler och jag vet hur hexdecimaler funkar.

Jodå, det kanske inte är så smart att ge sig på något för svårt på en gång. Men ni får gärna komma med förslag på vad jag ska köpa för pic:ar. Om någon har ett bra kopplingschema till en programmerare så är jag också intresserad, men jag har redan hittat ett schema som jag modifierat lite för mina egna behov.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Den stora skillnaden här jämfört med traditionell programmering på t.ex en PC eller större datorer, är att i en mikrokontroler måste man hela tiden tänka på *hårdvaran* på ett sätt som man kanske inte är van vid. En stor del av det som man måste tänka på och "begripa" handlar om helt vanlig traditionell elektronik.

Den PIC som du nämner har både ett asynkron interface (USART) och hårdvara för I2C eller SPI kommunikation till t.ex ett externt EEPROM. SPI är något enklare eftersom man har separata "trådar" för varje rikting, I2C har en data linje som byter rikting efter behov.

Med lite "kreativ" programmering så skulle man mycket väl kunna använda en billigare som t.ex enbart har en USART (16F628A t.ex) och köra SPI "manuellt" ("bit-banging" kallas det också) i programvaran.

Men för ett "one-off" (?) projekt så finns det ingen anledning att vara dum-snål, använd en processor som ger ordentligt hårdvarustöd till det du vill göra. T.ex den du nämner. Men om du kan också t.ex välja PIC16F88 som har lika mycket funktioner till (nästan) halva priset. Dock i en mindre kapsel, men vi vet ju inte hur många I/O linjer du behöver utöver du du har beskrivit...

(Det bör vara "MAX232", för övrigt, och den "sköter" igentligen ingenting, den fixar nivåkonvertering mellan CMOS och RS232 spänningsnivåer).

Sen hur "svårt" det är ? Tja, för vem ?? :-)

Generellt kan man väll säga att det inte hör till den "högre skolan" direkt...

Det jag frågar mig när jag ser din beskrivning, är hur datat kom *IN* i EEPROM'et från början ? Sker det med någon helt annan utrustning ? Eller ska det ske med samma PIC ?

Slutligen, om detta är ditt *första* PIC projekt, så undrar man ju hur du har med programmerings utrustningför PICar o.s.v.
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

Först så bör du bestämma vad du skall ha för programmerare. Ska du bygga en ICSP i din krets så du kan programmera direkt eller ska du ha en speciell programmerare?

Vilken PIC du ska ha måste du bestämma beroende på vilka egenskaper du vill den skall ha. Du nämner seriell överföring, då bör du ha en med inbyggd USART, t.ex 16F628 som är lite billigare än 16F87X du nämner, men du måste också avgöra hur mycket programkod du skall ha, 16F628 tar 2048 instruktioner, har inbyggt 224 byte RAM och 128 bytes inbyggt EEPROM.

Du har även andra modeller med inbyggda A/D, USB m.m.

Kan du programmera? Kan du digitalteknik? Det underlättar att kunna hexadecimala och binära talsystemet (inte så komplicerat som det låter egentligen).

Dom som kommer från högnivåspråk (andra än C-familjen) är inte alltid så insatta i optimering, hårdvaruregister, pekare och I/O portar. Högnivåspråk är oftast mer abstrakta och försöker "skydda" programmeraren från det smutsiga jobbet att vränga bitar och att "get down and dirty" med hårdvaruregister. :)

Har själv börjat plockat ihop ett litet projekt med en (för tillfället) 16F627 krets (som följde med Vellemans programerare), ett 95640W SPI EEPROM och en MAX 202 (fråga mig inte varför) krets för RS232 ut/in nivåer. Konstigt nog är en MAX232 krest dyrare än många PIC processorer, vet ej varför. Tänkte bygga den som en modul av den anledningen, så man kan använda den till andra projekt.

Rutinen för att skicka seriellt är busenkel med inbyggd USART (OBS! Kan skilja på andra modeller än 16F627):

För att sätta upp:

Kod: Markera allt

	banksel	TXSTA		; Ställ in för USART för asynkron sändning 9600 baud.
	movlw	D'25'
	movwf	SPBRG		; Baudrate 9600 med BRGH=1 (highspeed mode)

	bsf	TXSTA,BRGH	; sätt BRGH=1
	bcf	TXSTA,SYNC	; sätt SYNC=0 (aynkront läge)
	bcf	TXSTA,TX9	; sätt TX9=0 (Använd ej 9 bitar)
	bsf	TXSTA,TXEN	; Slå på TX (sändning)
För att skicka:

Kod: Markera allt

	; Funktion för att skicka ett tecken via
	; inbyggda USART:en
	; Tecknet som skall skickas skall ligga
	; i W-registret.
_RS232_SEND
	banksel	TXSTA
_RS232_WAIT
	btfss	TXSTA,TRMT	; Vänta på att föregående tecken
	goto	_RS232_WAIT	; sänts klart.

	banksel	TXREG
	movwf	TXREG		; Skicka in aktuellt tecken
	return
Nåväl, lycka till!

mvh Mats
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

USART koden gäller för den gamla typen av USART/AUSART. Värdet för SPBRG gäller naturligtsivs bara för en viss klockfrekvens.

Många nyare processorer har en EUSART (E = "Enhanced"), där buadrate registret är 16 bitar iställt för 8 för mycket bättre nogranhet. Det blir *lite* skillnad i koden, men i princip samma.

(MAX202 eller MAX232 går väll på ett ut, MAX202 verkar klara sig med lite mindre kondingar, min gissning är att dess spänningsomvndlare kör med högre frekvens än MAX232. Jag har en svag aning om att ha läst att detta kan ge upphov til mer störningar om man använder ADC'n, men jag kan minnas fel...)

> "Konstigt nog är en MAX232 krest dyrare än många PIC processorer, vet ej varför."

Maxim kretsar är dyra och PIC kretsar är billiga, helt enkelt... :-)

Det finns "second sourced" xxx232 (NIM232, ST232 t.ex) som ofta är billigare, ibland halva priset.

> "Ska du bygga en ICSP i din krets..."

Menar du att *bygga in* en komplett programmerare i konstruktioner ?
Inte så vanligt kanske, men fullt tekniskt möjligt... :-)
Kaggen
Inlägg: 432
Blev medlem: 29 januari 2005, 03:06:02

Inlägg av Kaggen »

> Jag har en svag aning om att ha läst att detta kan ge upphov til mer störningar om man använder ADC'n, men jag kan minnas fel...)

Ajdå! Jag som tänkte byta till 16F870 för att jag behöver en A/D. Iofs kommer jag inte att använda seriell överföring samtidigt.

> Maxim kretsar är dyra och PIC kretsar är billiga, helt enkelt...

He! Jo, men det känns som man betalar mycket för bara märket. Visste inte om "kopiorna" du nämnde, skall tänka på det nästa gång.

> Menar du att *bygga in* en komplett programmerare i konstruktioner ?

Jo, precis. Slant lite på tangentbordet där. :)

mvh Mats
Blizzard
Inlägg: 6
Blev medlem: 5 augusti 2005, 23:04:11

Inlägg av Blizzard »

Jag har varit registrerad här på forumet ett par timmar och gillar det redan.

sodjan: Jag hittar bara PIC16F84 på ELFA, vad skiljer 4 från 8? I övrigt verkar 4:an ha tillräckligt med I/O-linjer för mina behov, då jag inte tänkt mig något rafinerande. Men det är det här sättet att använda microprocessorer som verkligen intresserar mig, visst är det säkert en bra start att lära sig att blinka lysdioder eller nått, men för det kan jag ju lika gärna använda en 555:a ;)

Vad gäller MAX-kretsarna så har jag egentligen 0-koll. Jag borde läsa lite mer datablad och liknande innan jag kastar mig in i nått.

Min ursprungliga tanke var att programmera EEPROM:et externt men det vore ju helt klart intressantare att mata det med data genom serieporten.

Jag hade faktiskt tänkt ge mig på att bygga en programmerare.

Kaggen: Jag hade tänkt bygga en speciell programmerare med en ICSP-"kontakt" eller vad man ska kalla det.

Eftersom att detta mest är ett projekt för att lära mig hur hela grejen med PIC fungerar så behöver jag ingen monstergrej, jag vill bara lära mig använda saker som ett EEPROM och att upprätta en seriell kommunikation.

Ja, jag kan programmera. Jag kan det hexdecimala och binära talsystemet. Vad gäller digitalteknik så är det ett ganska brett begrepp.

Finns det någonstans man kan läsa på om programmeringsbiten, då jag mest har grundläggande kunskaper i Assembler.

Tack allihopa för era mycket informativa svar... men jag känner på mig att jag kommer behöva mer hjälp :oops:
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

"Jag hittar bara PIC16F84 på ELFA,"

ELFA ? He he, deras PIC sortiment är ett stort skämt !! :-)

Glöm att du någonsin såg 16F84'an, det är en gammal fullständning omodern variant. Och *dyr* !

16F88 däremot, är en av de nyaste och häftigaste modellerna i PIC16 serien.

Förvirrande ? Visst 17 är det det ! :-) :-)

> "visst är det säkert en bra start att lära sig att blinka lysdioder eller nått..."

Poängen är inte att lära sig blinka med lysdioder, utan att lära sig programmera mikrokontrollers, och då kan det vara nog med problem att få en LED att blinka...

Hela frågan kring EEPROM'et handlar ju om vad *hela* lösningen igentligen skall göra ?

> "Jag hade faktiskt tänkt ge mig på att bygga en programmerare."

Gör dig själv en stor tjänst och betrakta programmeraren som ett "verktyg", ungefär som snickaren ser på sin hammere. Skaffa en som fungerar och fokusera på det du *igentligen* vill göra (vilket väll inte är att felsöka "hammaren" ?)

"Grundläggande kunskaper om assembler", från vadå ? Det är stor skillnad på en mikrokontroller och en IBM mainframe, men båda kan programmeras i assembler...

Angående 232 kretsar, kollade just hos Farnell (ca pris/st ex moms):

MAX232 : 66:-
ICL232 : 25:-
HIN232 : 15:20
ST232 : 15:72

Samma krets. Det kan finnas mindre skillnader, men för "hobby" ändamål fungerar alla normal OK.
Blizzard
Inlägg: 6
Blev medlem: 5 augusti 2005, 23:04:11

Inlägg av Blizzard »

Jag är van att köpa mina komponenter på ELFA. Hehe... jag ska nog kolla mig runt efter andra återförsäljare. Förslag?

Okej... så den är dålig. Ska titta på 16F88:an

Jag tänkte nog inte riktigt på vad jag sa, jag inser att det var ganska dumt sagt av mig.

Hela lösningen ska bestå av att lära mig ;D. Jag har inga egentliga planer, jag skulle lika gärna kunna skippa EEPROM om det inte vore för att jag mycket gärna vill kunna använda ett EEPROM för att lagra data i framtida projekt.

Jag är snål och en programmerare är dyr. Jag hittade ett enkelt kopplingschema med komponentlista och allt färdigt. Att löda ihop det verkar väldigt enkelt, men jag kanske misstar mig. (http://wiki.gudinna.com/420)

Jodå, men jag inbillar mig att det finns en liten fördel i att ha programmerat assembler förut. Det är en fördel att kunna cykla om man ska lära sig köra motorcykel.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> "Förslag på återförsäljare ? :-)"

Tja, när det gäller PIC kretsarna i sig, så planerar jag att sälja ett antal modeller som jag bedömmer vara bra typer för "hemma pulare".

Du kan kolla : http://www.jescab.se/Prod_PIC.html

Obs att sidan bara är "uppladad" just nu, den är inte länkad från mina vanliga menyer, det kommer att ske om ett par dagar efter lite justeringar.

De kretsar som står i "standardsortimentet" kom hem från Microship i dag (eller igentligen fredag...), så de är i princip tillgängliga bums (har inte "sprättat" paketet än... :-) ).

> "Jag är snål och en programmerare är dyr."

Både "snål" och "dyr" är *väldigt* rellativa begrepp !

Säg istället vad den får kosta i *kronor*, så blir det mycket enklare !

Utan att veta vad din budget är, så kan du i alla fall kolla här : http://www.jescab.se/Wisp628.html.

Jag vill bara göra det absolut klart att det alltså är jag själv som säljer den och det är min egen websida, så det inte blir några missförstånd... :-)
Du bör inte fråga *mig* om en Wisp628 är "rätt"... :-)

> "Ska titta på 16F88:an"

Det vara bara ett exempel. Det finns flera nyare PIC som är trevliga.

16F628A, bra F84-ersättare. Billig.
16F688, trevlig 14-pinnare.
16F88, 18-pinnare som "har allt".

Sedan så klart de olika 8-pinnars i 12F-serien. För små konstruktioner.

Det finns även många trevliga modeller i PIC18 serien, men det är en annan historia. Lite annorlunda instruktioner (men fler och kraftfullare), bättre och enklare minneshantering ("banking" och "paging").
Blizzard
Inlägg: 6
Blev medlem: 5 augusti 2005, 23:04:11

Inlägg av Blizzard »

Ok, vi leker med tanken att jag köper en PIC16F628A och Wisp628 från dig

Wisp628 (225kr)
PIC (44kr)
Frakt (40kr)
Postförskottafgift (40kr?)
----------------------------------
384kr (+ ev 31,25kr för ett EEPROM = 415,25 )

Utöver det behöver jag kristall, kondingar och experimentkort

Kristall (~12kr)
Kondesator (~2kr/st)
Experimentkort (80kr)
Frakt (60kr)
Postförskottsavgift (40kr)
------------------------------------
205kr

Totalt hamnar hela kalaset på 620kr, bara för att ha en liten krets för att lära sig hur det funkar. 620kr är mer än vad jag tjänar under en arbetsvecka :oops:
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Har skickat ett PM...
Senast redigerad av sodjan 6 augusti 2005, 14:34:10, redigerad totalt 1 gång.
Maalobs
Inlägg: 1304
Blev medlem: 3 februari 2005, 14:35:15
Ort: Stockholm

Inlägg av Maalobs »

Ja, men när du ska lära dig nästa krets behöver du bara lägga ut några tior för den kretsen.
Viss grund-utrustning kan man inte komma ifrån..

Annars, för att inte få så mycket lösa smågrejer hemma, kan du skaffa ett komplett utvecklingsverktyg för ca 1000 kr inkl frakt: http://www.mikroelektronika.co.yu/engli ... sypic3.htmDär får du med en 16F877A också.
På EasyPIC 2'an kom PIC'en förprogrammerad med kod som steppar igenom alla dioderna och tickar upp siffror på 7-segmentsdisplayen.
Johan.o
EF Sponsor
Inlägg: 2387
Blev medlem: 18 juni 2003, 01:08:50
Ort: Jönköping

Inlägg av Johan.o »

Du kan ju spara några kronor genom att bygga en
JDM programmerare..
Sedan Kan JDM programmeraren vara lite gnällig beroende på villken
serieport man hänger den på, bara så man tänker på att det kan bli lite strul..

TIPS (från en bekant)
----
http://www.qsl.net/dl4yhf/winpicpr.html

http://www.jdm.homepage.dk/newpics.htm

Men i slutändan handlar det bara om kanske 175 kronor du sparar, mendans det krävs mer jobb.

Det kan bli en liten slant om man ska börja från noll, svårt att komma ifrån..
Skriv svar