JESCAB 
Produkter Tjänster Info Leveransvillkor Kontakt
 Snabb länkar:


Kapitel 3

 

Här har vi kanske det viktigaste kapitlet i hela databladet! D.v.s beskrivningen av hur själva I/O-pinnarna fungerar. Flera av de vanligaste nybörjarfelen kan undvikas om man ser till att studera detta kapitel ordentligt. Vi tittar mer i detalj på första stycket som handlar om PORTA, beskrivningen av PORTB o.s.v följer sedan i stort sätt samma upplägg.

 

I/O-pinnarna på en PIC är uppdelare i "portar". Varje port har normalt 8 I/O-pinnar, utom eventuellt den sista som kan ha färre I/O-pinnar beroende på den aktuella kapseltypen. I den aktuella PIC familjen heter portarna PORTA, PORTB, PORTC, PORTD och PORTE. Notera att PORTD och PORTE endast finns i de två största modellerna. 


Sidan 39, PORTA

Viktiga punkter som man bör kunna "på sina fem fingrar":

  • Hur TRISA registret fungerar och hur det styr riktningen (ingång eller utgång) på respektive I/O-pinne.
  • Att många I/O-pinnar förrutom att vara vanliga digitala pinnar som man kan använda fritt i sina program, även kan ha analoga funktioner (AD-omvandlade eller komparator ingångar) eller att de kan användas av en inbgyggd funktion (USART o.s.v).
  • Att de pinnar som kan ha analoga funktioner också har det efter power-on eller reset! Just det att man måste stänga av de analoga funktionerna är kanske den allra vanligaste nybörjar missen. Notera den lilla grå rutan där detta speciellt noteras!

Undre halvan av sidan upptas av beskrivningar av PORTA och TRISA i detalj. Det intressanta där är att notera att värdet på PORTA är "unknown" efter reset medan bitarna i TRISA alltid är "1" (d.v.s att alla I/O-pinnar är ingångar efter reset eller efter en power-on).

p021_s

Stor bild

Sidorna 22-25, Dataminne (RAM).

Sidorna beskriver hur RAM är uppdelat dels på 4 olika "banker", dels i SFR ("Special Funktion Registers") och ("General Purpose Registers"). SFR är de register som "styr" processorn och alla de olika enheterna som USART, ADC, timers o.s.v. GPR är minne som man själv använder för variabler m.m i sitt program.

 

Sidan 25 visar hur RAM är uppdelat i just PIC16F886. Värt att notera är bl.a :

  • Att SFR och GPR delar samma adressareor.
  • Hur RAM är uppdelat i 4 banker.
  • Att de 16 sista adresserna i varjr bank är gemensam (brukar kallas "shared" eller "unbanked" RAM).

p025_s

Stor bild

Sidorna 26-28, Summering av SFR.

På sidorna 26-28 följer sedan lite mer info om varje SFR, dock inte lika detaljrikt som senare i databladet. En kolumn som kan vara intressant här är "Value on POR, BOR", d.v.s vilka värden de olika SFR regoistren innehåller efter en reset av processorn. Detta beskrivs dock mer i detalj i en annan tabell (på sidan 213) i databladet.

p026_s

Stor bild

Sidan 29, STATUS registret.

STATUS är ett av de viktigaste registren i en PIC processor. Eftersom beskrivningen av alla register följer samma format, så tar vi lite extra tid till att studera STATUS. Normalt har man tre delar, överst en del som i text beskriver vad registret har för funktioner, sedan en bild som visar hur de olika biterna i registret är ordnade och sist en förteckning med beskrivning i detalj vad de olika bitarna i resgistret har för funktion.

 

I bilden i mitten över registret är det bl.a instressant att se vilka bitar som man både kan läsa och skriva ("R/W-") eller bara läsa "R-". Man ser även vad varje bit har för värde, "1" eller "0", vid spänningstillslag ("power on") av processorn.

 

I listan som följer beskrivs sedan varje bit. Där ser man t.ex av biten "Z" är lika med "1" om föregående operation resulterade i att någonting blev "noll", i annat fall är "Z" biten "0".

O.s.v

 

"C" biten används ofta vid "Rotate" instruktioner när man vill testa varje bit i en variabel bit-för-bit. Alla 8 bitar roteras genom Carry-biten och den testas sedan.

 

Notera också att "C-flaggan" är ett vanligt namn på C-biten i STATUS.

p029_s

Stor bild

Sidan 30, OPTION registret.

OPTION är ett annat viktigt register som ofta används. Där finns bl.a inställningarna för Timer0, vilket kan verka lite konstigt. Timer1 och Timer2 har ju egna speciella register. Men detta är ett arv från de tidiga PIC processorerna där man enbart hade en Timer, och som dessutom var så enkel så det var inte många inställningar. Därför hamnade inställningarna för Timer0 i just OPTION.

 

Vi fördjupar oss inte mer i OPTION just här, vi återkommer senare till de olika bitarna i samband med respektive kapitel

p030_s

Stor bild

Sidan 30-36.

Dessa sidor innehåller register för inställningar av avbrottshantering ("interrupt") samt de speciella funktionerna för övervakning av matningsspänningen. Dessa funktioner ligger utanför ramarna för denna övergripande genomgång av ett datablads upplägg, och gås inte igenom här.

 

Denna sida senast uppdaterad 26-Jan-2013