PIC18F2550
PIC18F2550 er en lidt ældre PIC type, men som også indeholder mange faciliteter, den er dog lidt dyr på grund af sin alder. Vi har valgt at arbejde med den, fordi den anvendes i en brænder som kan fungere på MAC, som er beskrevet ved UsbPicProg. Det er en 28 bens PIC, hvor de 22 ben kan bruges mere eller mindre som IO og et kan kun være input.
Som pinout antyder, så kan den meget mere:
Udviklingsboard
| Layoutet for PIC18F2550 Udviklingsboard | Dette board er endnu ikke implementeret. 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 aktive komponenter vi arbejder med. | 
PIC18F2550 Udviklingsboard
Diagram over PIC18F2550 Udviklingsboard
Fordeling af port-ben
De fire porte er fordelt som følgende tabel viser (Port E har kun et ben, der ligger i stikket med PortC:
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 | AN3 | Digital, Analog, | 
| 5 | RA4 | - | Digital, Analog, Timer 1 Gate, Oscillator | 
| 6 | RA5 | AN4 | Digital, Analog, Timer 1 Clock, Oscillator | 
| 7 | RA6 | - | Digital, Oscillator / Krystal | 
| 8 | - | - | Not connected | 
| 9 | +5V | - | + 5V - Forsyning | 
| 10 | GND | - | Stel - Forsyning | 
Port B - Stik SV2
| Ben | Digital | Analog | Funktion | 
|---|---|---|---|
| 1 | RB0 | AN12 | Digital, Analog | 
| 2 | RB1 | AN10 | Digital, Analog | 
| 3 | RB2 | AN8 | Digital, Analog | 
| 4 | RB3 | AN9 | Digital, Analog | 
| 5 | RB4 | AN11 | Digital, Analog | 
| 6 | RB5 | - | Digital | 
| 7 | RB6 | - | Digital | 
| 8 | RB7 | - | Digital | 
| 9 | +5V | - | + 5V - Forsyning | 
| 10 | GND | - | Stel - Forsyning | 
Port C og E - Stik SV3
| Ben | Digital | Analog | Funktion | 
|---|---|---|---|
| 1 | RC0 | - | Digital | 
| 2 | RC1 | - | Digital | 
| 3 | RC2 | - | Digital | 
| 4 | RE3 | - | Digitalt input, Bemærk det er port E Reset, Programmeringsspænding | 
| 5 | RC4 | - | Digital, USB | 
| 6 | RC5 | - | Digital, USB | 
| 7 | RC6 | - | Digital, Transmit Asynkron | 
| 8 | RC7 | - | Digital, Receive Asynkron | 
| 9 | +5V | - | + 5V - Forsyning | 
| 10 | GND | - | Stel - Forsyning | 
Digitale I/O ben
Port A har 7 digitale ben, der er betegnet RA0 til RA6 der kan være både input og output. Port B har 8 digitale ben RB0 til RB7, der alle kan være både input og output. Port C har 7 digitale ben, der er betegnet RC0 til RC2 og RC4 til RC7, der alle kan være både input og output. Port E har kun et ben RE3 der kun kan være input. Benet sidder i stikket sammen med Port C
Ben B6 og ben B7
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 B6 og B7, 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 AN4 og AN8 til AN12 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 12). Dvs.: RA0, RA1, RA2, RA3, RA5, RB0, RB1, RB2, RB3, RB4. Disse har også navnene AN0-AN4 og AN8-AN12.
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.
Reset og Programmeringsspænding
Ben 4 i Port C stikket (RE3) 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 - alle kan tilkobles interrupt.
Timer 0 / counter 0 er 8 eller 16 bits, så den kan kun tælle til 65535. 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. Timer 2 kan kun kobles som timer, og er også begrænset til 8 bit, så den kan kun tælle til 255. Timer 3 / counter 3 er 16 bits, så den kan tælle til 65535.
Hardware interrupt
INT-benene kan sættes til Interrupt, så programmet kan reagere meget hurtigt, selvom koden er i gang med noget andet.
Puls-bredde output
En lidt speciel måde at angive et analogt output på er ved at sætte et outputben højt i en %-del af tiden og lavt i resten af tiden, så hvis det f.x. er højt i 40% af tiden, så vil det give 2V ud gennemsnitligt.
Pulse width modulation er en måde at simulere en spænding, ved et digitalt output. Det fungerer sådan, at selvom outputtet enten 0V eller 5V, så kan man ved atlave kortere eller længere impulser af det høje output, lave noget der praktisk fungere som en spænding imellem 0V og 5V. Typisk kan PWM have en værdi/spænding mellem 0 og 255, hvilket svarer til 8bit. Jo hurtigere impulserne kommer efter hinanden, jo mere ”flydende” vil spænding blive. Så hvis det er en PIC med hurtig frekvens af instruktioner, så vil spændingen opleves mere jævn. Man kan med en kondensator el. Jævne ekstra ud, selvom det i de fleste tilfælde ikke er nødvendigt. En pære eller diode, vil ihvertfald opleves, som lysende jævnt, ved brug af PWM.
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 256 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.)
| PIC | |
|---|---|
| PIC-Typer | PIC16F84 - PIC12F675 - PIC16F628 - PIC16F684 - PIC16F690 - PIC16F877 - PIC18F2550 | 
| Programmeringsbegreber | Maskinkode - Mikrocontroller | 
| Programmeringsmiljø | PIC-brænder - UsbPicProg - Analog indgang - ICSP |