William Sandqvist PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner.

Slides:



Advertisements
Liknande presentationer
IT för personligt arbete F5
Advertisements

Talföljder formler och summor
En genomgång av spelet: Dubbelkrig-Grön
void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Programstruktur: C för enchipsdatorer
Många studenter använder en LCD-display till sin programmeringsuppgift
Funktioner och programorganisation
William Sandqvist Störskydd William Sandqvist
Minnesteknologier Teknologi Accesstid Kostnad $/GB SRAM 1 ns 1000 DRAM
William Sandqvist Maurice Karnaugh Karnaugh-diagrammet gör det enkelt att minimera Boolska uttryck! William Sandqvist
Operatorer.
PICKit2 programmer-to-go
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
William Sandqvist Programmet onoffred.c.
SmartCard laborationen
William Sandqvist Varför använda en liten 8-bitars processor när det finns billiga kraftfulla 32-bitars? William Sandqvist
William Sandqvist PIC Comparator Tips 'n Tricks William Sandqvist
23 August 2014 IS1200 Datorteknik vt09, föreläsning 10, (E och I mfl)1 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory.
Komparatorn en 1 bits AD-omvandlare
Programmeringsteknik K och Media
Realtidsprog. - Anders Arvidsson1 Realtidsprogrammering En introduktion – Implementering (med exempel från PIC)
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Programmering B PHP Lektion 2
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 6 ( ) INNEHÅLL: -Mera om tabeller.
Pekare och speciell programstruktur i inbyggda system
Pointers. int a=5; int f(int b) { a--; b++; return b; } int main() { int a=3; printf("%d,",f(a)); printf("%d",a); return 0; }
Programmering B PHP Lektion 3
Styrteknik: Programmering med MELSEC IL PLC2A:1
William Sandqvist C:s minnesmodell.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Jämförelseoperatorer -Villkorssatser -Logiska operatorer.
Modulär programutveckling
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
INTRODUKTION TILL PROGRAMMERING
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
31 March 2015IS1200 Datorteknik, förel 101 IS1200 Datorteknik Föreläsning Processorkonstruktion 2. DMA, Direct Memory Access 3. Byte-code i JAVA.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
1 386 Från s bits adressbuss –=>4GB minne kan adresseras 32 bits databuss max klockfrekvens: 40MHz Protected mode –virtuellt minne –segmentering.
William Sandqvist Polling och Interrupt Antag att Du sitter i en skön fåtölj och läser en bok. Plötsligt blir Du avbruten av att telefonen.
Anders Sjögren Går det att simulera vår värld med 1:or och 0:or ?
Pipelining Föreläsning 4. T exe — CPU-exekveringstid I — Antalet exekverade instruktioner CPI — Genomsnittligt antal klockcykler per instruktion T c —
William Sandqvist PIC-programmeringsmiljön i skolan Datorerna i skolans labsalar är centralt underhållna. Du har inte rättigheter att installera.
Din rapport ? Beskriv din applikation.
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
William Sandqvist ReadModifyWrite-problemet PORTB = 0; PORTB.0 = 1; PORTB = PORTB; Vilket värde har portpinnen RB1 nu ? Förmodligen ”1”,
William Sandqvist Flera saker samtidigt? /* Blink1: 1s ON - 1s OFF */ /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */
Procedurellt potpurri Dagens samtalsämnen –Klipp (Cut) –If-then-else –fail/0 –repeat/0 Att läsa –The Art of Prolog, kapitel 11 –Relevant avsnitt i Learn.
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
William Sandqvist PWM Sinusoidal Hur tillverkar man en sinusformad spänning? En PWM-signal kan ge en sinusapproximation. Efter filtrering.
Kronljusströmställaren 0, 1, 2, 3
William Sandqvist Datorteknik övning 1 Introduktion till assemblerprogrammering av Nios II William Sandqvist
Mer om operatorer logiska operatorer bit-operatorer adress-operatorn ”komma”-operatorn punkt - operatorn.
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
Anders Sjögren Operatorer. Anders Sjögren Operand(er)
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
William Sandqvist Övning 10 Processorkonstruktion med pipe-line.
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
William Sandqvist KIA’s fabrik i Slovenien En bil i minuten lämnar bandet – tar det en minut att bygga en bil? Nej för KIA's fabrik utanför.
Anders Sjögren Funktioner något in och något annat ut.
KPP053, HT2015 MATLAB, Föreläsning 4
Grundläggande datavetenskap, 4p
Digitalteknik 3p - Kombinatoriska Byggblock
Digitalteknik 3p - Kombinatoriska Byggblock
Presentationens avskrift:

William Sandqvist PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner långt. File Reg. Dataminne 224 Byte och specialregister. Specialregistren är kopplade till I/O, tex. pinnarna.

William Sandqvist File Reg PIC-processorns data-minne är Register File. Den består av SFR, speciella funktions- register, och GPR general purpose-register som är det egentliga dataminnet. SFR-registren är kopplade till processorns I/O. Seiichi Inoue's Guide to use the PICGuide to use the PIC

William Sandqvist PC, IR, ALU, W-registret Prog Count, PC. Programräknar- registret pekar ut var i programmet man är. Det räknas upp automatiskt efter varje utförd instruktion. Inst Reg, IR. Instruktionsregistret håller koden för aktuell instruktion. ALU. Aritmetisk Logisk Enhet sköter beräkningarna. De allra flesta operationerna går igenom arbetsregistret, W-reg. Detta är PIC-processorns ”getingmidja”.

William Sandqvist Harvard vs Von Neumann Von Neumann arkitekturen har en gemensam buss för instruktioner och data. Harvard arkitekturen har skilda bussar för instruk- tioner och data. Harvard är (dubbelt) snabbare …

William Sandqvist CISC vs RISC CISC (Complex Instruction Set Computer) Ex. Intel PC, som har 700 instruktioner. RISC (Reduced Instruction Set Computer) Ex. Microchip PIC, som har 33 instruktioner. Dessa begrepp är idag föråldrade. Numera är Intel- processorerna visserligen fortfarande CISC – men de har avancerad arkitektur som utnyttjar det bästa från RISC …

William Sandqvist Fetch and Execute PIC har Harvard arkitektur och kan därför hämta Fetch en instruktion samtidigt som den exekverar Execute en annan. Efter var fjärde oscillator-klockcykel har en instruktion utförts. ( = två stegs pipeline) Med 4 MHz klocka innebär det instruktioner/sek. Varje instruktion tar således 1  s.

William Sandqvist Instruktionsformat PIC är en klassisk RISC- processor med bara 33 instruktioner … Instruktionerna är 14 bitar OP-koden vad som ska göras – är 6 bitar (eller 3 bitar). Resten av bitarna används för att tala om – med vad det ska göras.

William Sandqvist Byte operationer Ex. Addition av tal i FILE, dataminnet, och arbets- registret W. Resultatet lagras i arbetsregistret eller dataminnet – och det ursprungliga talet skrivs över. ADDWF f,d ADDWF f,0; W=f+W eller ADDWF f,1; f=f+W På samma sätt: SUBWF f,d Assemblerinstruktioner skrivs som förkortningar mnemonics.

William Sandqvist Fler Byteoperationer Vill man kopiera innehåll mellan minne och arbetsregistret gör man det med MOVF f,0; W=f eller mellan arbetsregistret och minnet med MOVWF f; f=W Vissa specialfall av addition och subtraktion, öka med ett respektive minska med ett, har egna instruktioner. Liksom 0-ställning av register. INCF f,d DECF f,d CLRW resp CLRF f ( Instruktionen MOVF f,1; f=f verkar meningslös – men den påverkar ”flaggorna” och kan därför faktiskt förekomma ibland ). Move betyder egentligen Copy!

William Sandqvist Programkonstanter Programkonstanter som talet 17 eller tecknet ’A’ och liknande, lagras inuti instruktioner. k är en ”Literal”, en Bytekonstant, som lagras i instruktionen MOVLW k; W=k. Vid exekveringen placeras konstanten i arbetsregistret. Fler Literal-instruktioner: ADDLW k; W=W+k SUBLW k; W=W-k

William Sandqvist Bitoperationer PIC-processorn har direkta bitoperationer. BCF f,b 0-ställ bit b i File nr f (bitarna numreras 0…7) BSF f,b 1-ställ bit b i f

William Sandqvist Programhopp GOTO k Programhopp CALL k Subrutinanrop RETURN Återhopp Vid GOTO ändras PC till värdet av Literal k som för denna instruktion är 10 bitar (och två extra bitar från register PCLATH ). PC fortsätter exekvera programmet på nytt ställe. Vid CALL sparas först PC:s värde i ett stackregister, därefter görs som vid GOTO. Vid RETURN hämtas PC:s värde tillbaks från stackregistret och programmet fortsätter med instruktionen som följer efter anrops- instruktionen.

William Sandqvist Vilkortest, skip PIC-processorn har några instruktioner som testar om vilkor är uppfyllda och i så fall hoppar över, skip, nästa instruktion. Nästa instruktion är då oftast en GOTO instruktion. DECFSZ f,d; f - 1 men skip ”nästa” om 0-resultat INCFSZ f,d; f +1 skip om 0 (register kan ”slå runt”!) BTFSC f,b; skip om bit b i f är 0 (Clear) BTFSS f,b; skip om b i f är 1 (Set) Detta bakvända tänkande ”låt bli att hoppa om…” är lite speciellt för PIC och inte vanligt för andra processortyper! (glöm det när kursen är slut).

William Sandqvist Varför skip? Utfallet av ett test innebär ofta att man behöver göra en extra instruktion som man annars inte skulle göra. skip-instruktionen hoppar över denna extra instruktion, och eftersom hopp alltid tar dubbelt så lång tid som andra instruktioner så tar instruktionsföljden lika lång tid att exekvera oavsett testets utfall! Detta är en finess med PIC-processorernas instruktionsuppsättning.

William Sandqvist NOP No Operation Processorer har i allmänhet en instruktion som gör ”ingenting”. Den kan läggas till för att utjämna tids- skillnader mellan olika vägar i program.

William Sandqvist Portar Av PIC-kretsens pinnar är 8 samlade till en PORTA och 8 till en PORTB. Pinnarna kan även användas ensamma, och som synes kan de ha många alternativa funktioner.

William Sandqvist Tris-register Om en pinne ska användas som ingång eller utgång avgörs av ett TRIS-register. TRISA och TRISB Om ”motsvarande” bit i trisregistret är 1 används portpinnen som ingång, om den är 0 som utgång! TRIS = Threestate

William Sandqvist Hur lång tid tar instruktionerna? Processorns interna klocka arbetar med ¼ av kristall- frekvensen. Vanligt är 4 MHz kristall och då blir det 1 MHz klockfrekvens. De flesta operationer utförs på en klock-cykel dvs. tar 1  s. De instruktioner som påverkar PC tar två klock-cykler dvs. 2  s. GOTO, CALL, RETURN tar alltid 2 cykler, DECFSZ, INCFZ, BTFSC, BTFSS tar bara två cykler när det blir ”skip”.

William Sandqvist PIC Instruktionsuppsättning

William Sandqvist Assemblerprogram init CLRF PORTB; MOVLW b; MOVWF TRISB; loop BTFSS PORTB,1; GOTO lampoff; lampon BSF PORTB,0; GOTO loop; lampoff BCF PORTB,0; GOTO loop; end; Programmet tänder och släcker lysdioden på kom- mando från strömbrytaren. ( Detta går naturligtvis lika bra utan PIC – men då är det ju ingen sport! )

William Sandqvist Kommenterat assemblerprogram Assemblerprogram är så kallad "spagettiprogram- ering". Det blir lättare att följa programhoppen när man ritar ut pilar.

William Sandqvist C-program /* onoffred.c */ /* Red lightdiode on/off */ /* with contact */ #define ON 1 #define OFF 0 #include "16F628.h" #pragma config |= 0x3f90 #pragma bit RB0 #pragma bit RB1 void main( void) { TRISB = 0b ; /* RB0 out, RB1 in */ while(1) { if(contact == ON) lightdiode = ON; else lightdiode = OFF; } }

William Sandqvist Nedladdningsformat Programkoden laddas ned till chippet med en kretsprogram- merare. Det använda formatet är en textfil med op-koderna som en följd av Hex-siffror. Så här ser nedladdningskoden ut för det tidigare programexemplet. : FE C : C3 : FF