Skillnader PIC-familjer, 18F - 16F?
Skillnader PIC-familjer, 18F - 16F?
Hej!
Jag har gjort några olika projekt med PIC under några år, startade med F84 och har senare använt en del andra varianter, alla i 16F familjen.
Mest har jag kört med 16F628A, 16F870 och 16F877.
Nu ska jag göra ett lite större projekt, värmereglering i villa, och funderar på om man kanske skulle köra med någon 18F variant?
Har läst en del från Microchip men saknar någon lite närmare jämförelse mellan familjerna.
En anledning till att jag började fundera var att jag ville komma ifrån problemet med att behöva byta page i minnet när koden blir lite större.
Har fått för mig att 18F hanterar minnet annorlunda, det kan ju vara fel förstås...
Jag skriver enbart program i assembler, använder Mplab och programmeraren heter picstart plus.
Synpunkter och vägledning i mörkret är välkommet!
---- Jonas
Jag har gjort några olika projekt med PIC under några år, startade med F84 och har senare använt en del andra varianter, alla i 16F familjen.
Mest har jag kört med 16F628A, 16F870 och 16F877.
Nu ska jag göra ett lite större projekt, värmereglering i villa, och funderar på om man kanske skulle köra med någon 18F variant?
Har läst en del från Microchip men saknar någon lite närmare jämförelse mellan familjerna.
En anledning till att jag började fundera var att jag ville komma ifrån problemet med att behöva byta page i minnet när koden blir lite större.
Har fått för mig att 18F hanterar minnet annorlunda, det kan ju vara fel förstås...
Jag skriver enbart program i assembler, använder Mplab och programmeraren heter picstart plus.
Synpunkter och vägledning i mörkret är välkommet!
---- Jonas
Använd AVR för att slippa paging
Åkej, allvarligare. Visst är det så att alla PIC18 har hårdvarumultiplikator, det saknar alla ( ? ) PIC16.
Det är alltså främst instruktionsuppsättningen som är annorlunda. Men det borde du ju veta om du kör asm. Sen är det självklart minne och lite hårdvarufunktioner som skiljer. Eftersom 18-serien generellt är större har de även fler fuktioner att leka med.

Åkej, allvarligare. Visst är det så att alla PIC18 har hårdvarumultiplikator, det saknar alla ( ? ) PIC16.
Det är alltså främst instruktionsuppsättningen som är annorlunda. Men det borde du ju veta om du kör asm. Sen är det självklart minne och lite hårdvarufunktioner som skiljer. Eftersom 18-serien generellt är större har de även fler fuktioner att leka med.
$tiff> Visst är det så att alla PIC18 har hårdvarumultiplikator,
Varför valde du att nämna just *den* detaljen ?
Det är knappast p.g.a. av den som man väljer PIC18.
Inte så att du har fel, bara nyfiken på varför du fastnade på just den
detaljen...
$tiff> Det är alltså främst instruktionsuppsättningen som är annorlunda.
Inte speciellt "annorlunda", utan i stort sätt samma som PIC16 men med
en (hel) del tillägg (vilka bara gör programmeringen enklare)..
Den *stora* skillnaden (speciellt om man kör assembler) är den mycket
smidigare minneshanteringen. "Pages" i programminnet är helt borta.
GOTO och CALL fungerar över hela 2 Mb programminnet.
SFR/GPR minnet är i och för sig "bankat", men det finns några enkla
sätt att undvida att det är något problem. Läs på om "Access Bank", den
gör att man kommer åt 256 bytes och alla SFR'er utan bank hantering.
Vissa instruktioner (t.ex MOVFF som gör en move direkt mellan två
register utan att mellanlagra i W-reg), adresserar direkt hela 4Kbyte
RAM arean. Fler indexregister med direket access till hela minnesarean
underlättar också.
En annan väldigt praktiskt sak är att W är mappat som ett SFR (WREG),
så alla instruktioner som har ett register ('f') som parameter kan direkt
även hantera W genom registret WREG.
Om man t.ex jämför en 16F877A med en 18F452, så är 452'an mycket
smidigare till en lite högre kostnad.
Notera också att betydligt fler modeller ur PIC18 serien finns med den
senaste tekniken, t.ex den nyare INTOSC. Jag tror aldrig att F877A'an
kommer att få någon uppgradering...
Slutligen,
> Har fått för mig att 18F hanterar minnet annorlunda, det kan ju vara fel förstås...
Varför plockar du inte ner ett datablad och kollar själv !!??
Varför valde du att nämna just *den* detaljen ?
Det är knappast p.g.a. av den som man väljer PIC18.
Inte så att du har fel, bara nyfiken på varför du fastnade på just den
detaljen...
$tiff> Det är alltså främst instruktionsuppsättningen som är annorlunda.
Inte speciellt "annorlunda", utan i stort sätt samma som PIC16 men med
en (hel) del tillägg (vilka bara gör programmeringen enklare)..
Den *stora* skillnaden (speciellt om man kör assembler) är den mycket
smidigare minneshanteringen. "Pages" i programminnet är helt borta.
GOTO och CALL fungerar över hela 2 Mb programminnet.
SFR/GPR minnet är i och för sig "bankat", men det finns några enkla
sätt att undvida att det är något problem. Läs på om "Access Bank", den
gör att man kommer åt 256 bytes och alla SFR'er utan bank hantering.
Vissa instruktioner (t.ex MOVFF som gör en move direkt mellan två
register utan att mellanlagra i W-reg), adresserar direkt hela 4Kbyte
RAM arean. Fler indexregister med direket access till hela minnesarean
underlättar också.
En annan väldigt praktiskt sak är att W är mappat som ett SFR (WREG),
så alla instruktioner som har ett register ('f') som parameter kan direkt
även hantera W genom registret WREG.
Om man t.ex jämför en 16F877A med en 18F452, så är 452'an mycket
smidigare till en lite högre kostnad.
Notera också att betydligt fler modeller ur PIC18 serien finns med den
senaste tekniken, t.ex den nyare INTOSC. Jag tror aldrig att F877A'an
kommer att få någon uppgradering...
Slutligen,
> Har fått för mig att 18F hanterar minnet annorlunda, det kan ju vara fel förstås...
Varför plockar du inte ner ett datablad och kollar själv !!??

Behöver ja motivera varför jag nämde hårdvarumultiplikatorn?
Inte för att det kanske berör jättemånga, men det är betydligt enklare att utföra multiplikationer mellan två variabler med en sådan, och det spar en hel del kod. Och just multiplikation används ju flitigt så fort man implementerar någon fräck algoritm.
Så varför inte använda en PIC18 istället för en stor PIC16 när prisskillnanden inte är stor. Det är ju uppenbarligen lättare att programmera för en '18.

Inte för att det kanske berör jättemånga, men det är betydligt enklare att utföra multiplikationer mellan två variabler med en sådan, och det spar en hel del kod. Och just multiplikation används ju flitigt så fort man implementerar någon fräck algoritm.
Så varför inte använda en PIC18 istället för en stor PIC16 när prisskillnanden inte är stor. Det är ju uppenbarligen lättare att programmera för en '18.
Satsa på 18F! Just dethär med att den kan adressera mer än 2K programminne på ett bra sätt är mycket trevligt om man ska skriva lite större program.
I en av mina konstruktioner hade jag en 16F870, så tog minnet slut,
hade redan gjort kretskort och jag använde ytmonterad, ahaa..
jag slänger dit en 16F873 för den har ju 4K programminne,
så var jag glad tills jag upptäckte att man var tvungen att "byta blad"
för programminnet! argghh.. tillsut blev den en pinkompatibel 18F som jag
samplade från Microchip. Otroligt att jag inte sabbade kretskortet med
allt det bort och dit lödandet.
Lär av mina dumheter gott folk.
I en av mina konstruktioner hade jag en 16F870, så tog minnet slut,
hade redan gjort kretskort och jag använde ytmonterad, ahaa..
jag slänger dit en 16F873 för den har ju 4K programminne,
så var jag glad tills jag upptäckte att man var tvungen att "byta blad"
för programminnet! argghh.. tillsut blev den en pinkompatibel 18F som jag
samplade från Microchip. Otroligt att jag inte sabbade kretskortet med
allt det bort och dit lödandet.
Lär av mina dumheter gott folk.
Tack för alla svar!
Som vanligt har Sodjan örnkoll....
Jag sitter, eller ligger på kvällen eftersom man måste jobba också, och läser databladet till 18F2431. Som vanligt letade man efter genvägar....
Börjar bli övertygad om att det är 18F vägen man ska gå, så man får väl ta hem några stycken och börja skriva lite.
Gäller bara att bestämma sig för vilken man ska ha.
Men jag förmodar att det är lika enkelt att byta modeller inom 18F som det är inom 16F.
--- Jonas
Som vanligt har Sodjan örnkoll....
Jag sitter, eller ligger på kvällen eftersom man måste jobba också, och läser databladet till 18F2431. Som vanligt letade man efter genvägar....
Börjar bli övertygad om att det är 18F vägen man ska gå, så man får väl ta hem några stycken och börja skriva lite.
Gäller bara att bestämma sig för vilken man ska ha.
Men jag förmodar att det är lika enkelt att byta modeller inom 18F som det är inom 16F.
--- Jonas
OK, just 18F2431 är en lite "special" variant av PIC18.
Den har en del speciella funktioner, som kanske inte gör det
helt idealisk som en introduktion till PIC18 arkitekturen.
Men om det är just mtorstyrning och enkoder-avkodning
som du är ute efter, så är den naturligtsvis helt rätt...
> Börjar bli övertygad om att det är 18F vägen man ska gå,...
Jo, till slut så måste det ju vara ditt beslut...
> så man får väl ta hem några stycken och börja skriva lite.
Jag vet inte vad du menar med "ta hem", men om du menar
"köpa hem", så kan du höra av dig. Jag har en del olika PIC18
modeller som har kommit med i större partier som jag har
"ropat hem" på nätet. (Inte samples alltså...)
Räkna med "bra" pris (och snabb lev !).
> Men jag förmodar att det är lika enkelt att byta modeller inom 18F som det är inom 16F.
Det är nog ingen större skillnad, nej.
Den har en del speciella funktioner, som kanske inte gör det
helt idealisk som en introduktion till PIC18 arkitekturen.
Men om det är just mtorstyrning och enkoder-avkodning
som du är ute efter, så är den naturligtsvis helt rätt...

> Börjar bli övertygad om att det är 18F vägen man ska gå,...
Jo, till slut så måste det ju vara ditt beslut...

> så man får väl ta hem några stycken och börja skriva lite.
Jag vet inte vad du menar med "ta hem", men om du menar
"köpa hem", så kan du höra av dig. Jag har en del olika PIC18
modeller som har kommit med i större partier som jag har
"ropat hem" på nätet. (Inte samples alltså...)
Räkna med "bra" pris (och snabb lev !).
> Men jag förmodar att det är lika enkelt att byta modeller inom 18F som det är inom 16F.
Det är nog ingen större skillnad, nej.
Jo, 2431 varianten kollar jag på angående ett projekt jag har för att styra borstlösa motorer.
Den innehöll mycket mer än jag trodde från början, när man kom från 16F familjen.
Jag brukar handla pryttlar från Farnell eller Elfa, men jag hör av mig till dig när jag vet lite mer specifikt vad jag ska ha.
Den innehöll mycket mer än jag trodde från början, när man kom från 16F familjen.
Jag brukar handla pryttlar från Farnell eller Elfa, men jag hör av mig till dig när jag vet lite mer specifikt vad jag ska ha.
PIC18 har även villkorliga hopp och inte bara skip, det tycker jag i varje fall är en klar fördel med det instruktionssetet.
Sedan skall man inte glömma andra alternativ som t.ex. 8051/8052, de är mera lika "riktiga" mikroprocessorer med den arkitekttur som är vanig där.
En flerchiplösning är också ett alternativ till ett så pass stort projekt, det finns klara fördelar med en "riktig" processor och speciellt om man virar är det mycket flexibelt. Tar pinnarna slut är det lätt att haka på en port extra.
Sedan skall man inte glömma andra alternativ som t.ex. 8051/8052, de är mera lika "riktiga" mikroprocessorer med den arkitekttur som är vanig där.
En flerchiplösning är också ett alternativ till ett så pass stort projekt, det finns klara fördelar med en "riktig" processor och speciellt om man virar är det mycket flexibelt. Tar pinnarna slut är det lätt att haka på en port extra.