PIC12F675

Fra Holstebro HTX Wiki
Skift til: navigering, søgning

PIC12F675 er en lille begrænset PIC set i forhold til den PIC16F684 vi har valgt at starte med. Grunden til at vi har den med i sortimentet er at den også er relativ let at gå til, og den har en del af de samme indbyggede funktioner som er til at arbejde med. Det er en 8 bens PIC, hvor de 15 ben kan bruges mere eller mindre som IO og et kan kun være input. Det sætter selvfølgelig en del begrænsninger i hvad man kan med den, men det er alligevel imponerende hvad der kan lægges af funktionalitet i så lille en kreds.

Som pinout antyder, så kan den en del mere end bare digital IO:

PIC12F675 Pinout

Udviklingsboard

PIC12F675 Udviklingsboard
En del af denne beskrivelse bygger på det viste udviklingsboard, der er en del af en serie udviklet ved Holstebro HTX, for at gøre de forskellige PIC-typer lettere tilgængelige.

Udviklingsboardet er lagt ud i Eagle med schematic og board liggende i en zip-fil, der kan fremstilles som enkelt-sidet print, dog med enkelte lus.

Der er også dele i denne beskrivelse, der bygger på de generelle egenskaber der er for PIC'en, og der hvor beskrivelsen ikke slår til, må man fordybe sig i databladet for PIC'en.

Databladet for PIC'en ligger i vores samling af datablade som dækker de fleste aktve komponenter vi arbejder med.

Fordeling af port-ben

De to porte er fordelt som følgende tabel viser:

Port A - Stik SV1

Ben Digital Analog Funktion
1 RA0 AN0 Digital, Analog, Comperator, Prog. Data
2 RA1 AN1 Digital, Analog, Comperator, Reference, Prog. Clock
3 RA2 AN2 Digital, Analog, Timer 0 Clock, Interrupt, Comperator out
4 RA3 - Digitalt Input, Reset, Programmeringsspænding
5 RA4 AN3 Digital, Analog, Timer 1 Gate, Oscillator
6 RA5 - Digital, Analog, Timer 1 Clock, Oscillator
7 - - Not connected
8 - - Not connected
9 +5V - + 5V - Forsyning
10 GND - Stel - Forsyning

Digitale I/O ben

Port A har 6 digitale ben, der er betegnet RA0 til RA5, hvor RA3 kun kan være input, og de andre kan være både input og output.

Som det ses på pinoutet betegnes disse ben også GP0 til GP5. Begge dele kan anvendes i assembler og JAL.

Ben A0 og ben A1

Disse ben bliver, udover at blive brugt som output af PIC’en, som forbindelse til PIC-brænderen gennem 6-bens stikket, når der skal brændes nu kode på PIC’en. Derfor er disse ben også sårbare overfor indgående signaler, som kommer fra andet elektronik tilsluttet disse ben. Derfor er de hver beskyttet med en modstand. Så tilslutning 1 og 2 på stik 1, har en formodstand, så de vil opføre sig ensmule anderledes en tilsvarende tilslutninger på det andet stik.

Men derudover virker ben A0 og A1, som styrestrøm for hver deres transistor, som åbner for forbindelse til stel for to lysdioder med formodstande, som er tilsluttet hver.

Analoge input

De ben der er benævnt AN0 til AN3 er analoge input, der hver kan måle enten i området 0-5V (ved 5V forsyning) eller i området 0 til Vref (ben 6). Dvs.: RA0, RA1, RA2, RA4. Disse har også navnene AN0-AN3.

Målingen giver et 10 bit tal, ved at man angiver hvilken kanal man vil måle på, starter konverteringen og aflæser tallet, når konverteringen er slut, så man kan kun måle en kanal ad gangen, men det er relativt hurtigt at gøre, så det betyder ikke det store.

Comperatorer

Der er en comperatorer indbygget, der kan sættes til at sammenligne 2 analoge spændinger.

Comperator-skitse fra databladet

Den sammenligner altså to analoge signalers størrelse, og derudfra sender et digitalt signal ud. PIC16F684 har to såkaldte comparators. Comperator 1 har inputs ved C1IN+ (RA0) og C1IN- (RA1) den har så sit output ved C1OUT (RA2). En comperators funktion vises bedst ved skitsen til højre fra databladet:

Her kan man se at hvis VIN- < VIN+ er outputet high og hvis VIN- > VIN+ er outputtet low. PIC’en kan dog tilsyneladende programmeres til at invertere outputtet og så er det naturligvis lige omvendt af det viste på ovenstående figur. I øvrigt kan de to comperators også indstilles til at snakke sammen på en eller anden måde.

I øvrigt skal man her lige være opmærskom på, at den analoge inputspænding skal være mellem VSS og VDD. Årsagen er – som man kan se på nedenstående figur fra databladet – at inputtet er adskilt fra forsyning og stel med dioder. Så der vil kunne løbe strøm gennem dioderne, hvis spændingen ikke var derimellem.

Reset og Programmeringsspænding

Ben 4 har to specielle funktioner.

Den ene er angivet ved VPP, der betyder at der skal kredsen have programmeringsspænding, når man skal brænde et nyt program ind i den.

Den anden er at man kan resette kredsen ved hjælp af et eksternt signal, så koden starter forfra. Denne funktion har vi normalt slået fra, så den bare gør det internt når der kommer strøm på kredsløbet.

Programmerings-ben

ICSPDAT og ICSPCLK er de to ben der modtager koden når PIC'en skal have brændt ny kode ind. Det ene har også noget funktion omkring Ultra low power ....

Indbyggede countere/timere

Der er to indbyggede countere, der kan sættes op enten som counter fra T0CKI og T1CKI, eller fra en fast frekvens, så de kan virke som timere - begge dele kan tilkobles interrupt. Den sidste kan kun virke som timer.

Timer 0 / counter 0 er 8 bits, så den kan kun tælle til 255. Timer 1 / counter 1 er 16 bits, så den kan tælle til 65535. Den kan kobles op, så T1G bestemmer om den skal tælle eller ej.

Hardware interrupt

INT benet kan sættes til Interrupt, så programmet kan reagere meget hurtigt, selvom koden er i gang med noget andet.

EEPROM

I PIC'en er der en EEPROM, det står for en Electrically Erasable Programmable Read Only Memory, altså en hukommelse der normalt kun kan læses, men som er programmerbar og som kan slettes elektrisk.

Det er samme princip som flash-hukommelse, og har den gode egenskab, at indholdet huskes også efter en strømafbrydelse, modsat RAM, hvor indholdet forsvinder, hvis strømmen har været væk.

Der er 128 bytes EEPROM i denne PIC.

Oscillator

Som vi normalt kobler PIC'en op, så arbejder den med 4 MHz, der deles ned, så en maskininstruktion tager 4 svingninger, altså 1us. På OSC1 og OSC2 er det muligt at koble en resonator eller et krystal på, som enten kan få den til at arbejde hurtigere (op til 20 MHz), hvis kodetiden betyder noget, eller man kan få den til at arbejde langsommere, hvis man vil spare på strømmen.

På dette udviklingsboard er der ikke gjort plads til en resonator, da de fleste applikationer klarer sig fint med 4 MHz.

Strømforsyning

Printet kan få strøm fra to forskellige kilder. Det kan altså enten være PIC-­-brænderen der forsyner printet med 5.0V (standard for USB). Den anden mulighed er via en eksternstrømfosynings adapter, som vi kender fra mange andre elektroniske apparater derhjemme. Den har en Spændingsregulerende IC, som sørger for at ligemeget om spænding er lidt over 5V fra den eksterne kilde, så vil printet og PIC’en kun få 5V. Hvis den får væsentlig mere en 5V kan den blive meget varm eller brænde af. Den har adskillige kondensatorer, som bevirker at spædingen glattes ud. (bliver mere jævn.)