William Sandqvist william@kth.se PIC Comparator Tips 'n Tricks William Sandqvist william@kth.se.

Slides:



Advertisements
Liknande presentationer
Talföljder formler och summor
Advertisements

Elektroniska filter William Sandqvist En verklig signal … Verkliga signaler är svårtolkade. De är ofta störda av brus och brum. Brum.
DSLR astrofotografering
En genomgång av spelet: Dubbelkrig-Grön
Gå till första sidan Med användarna i fokus Användarundersökning som utgångspunkt för vidareutveckling av sökguide Borås Blekinge Tekniska Högskola.
FL4 732G70 Statistik A Detta är en generell mall för att göra PowerPoint presentationer enligt LiUs grafiska profil. Du skriver in din rubrik,
Ellära Fysik 1 / A Översiktlig beskrivning av en del av innehållet i Ellära – Fysik A För djupare studier hänvisar jag till kurslitteratur som finns.
Anders Sjögren Lagringsklasser •en variabel i C har två attribut –type( int, float, char..... ) –lagringsklass( auto, extern, register, static ) •lagringsklassens.
Kom igång med DSO-X 2014A Oscilloskopet har inbyggda ”tränings-spänningar” Anslut två mätsladdar med prob till Demouttagen. Starta oscilloskopet. Tryck.
Många studenter använder en LCD-display till sin programmeringsuppgift
William Sandqvist Internet består till största delen av kabelanslutna datakommunikationsutrustningar Att bygga ett stabilt globalt täckande.
William Sandqvist Störskydd William Sandqvist
Föreläsning 7 Analys av algoritmer T(n) och ordo
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
Spolen och Kondensatorn motverkar förändringar
PICKit2 programmer-to-go
IE1206 Inbyggd Elektronik F1 F2
William Sandqvist Varför använda en liten 8-bitars processor när det finns billiga kraftfulla 32-bitars? William Sandqvist
Komparatorn en 1 bits AD-omvandlare
Kretselement på grafisk form
William Sandqvist Metalldetektorn Alla ”förluster” (även virvel-strömsförluster i metaller) sammanfattas av symbolen r ! Järnföremål påverkar.
IE1206 Inbyggd Elektronik F1 F2
Programmeringsteknik K och Media
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; }
Föreläsning 5 måndag 5e november 2007 Datorsystem 1 och Datorarkitektur 1 Föreläsning 5 måndag 5e november 2007 Datorsystem 1 och Datorarkitektur 1.
Felkalkyl Ofta mäter man inte direkt den storhet som är den intressanta, utan en grundläggande variabel som sedan används för att beräkna det som man är.
William Sandqvist AD-omvandling. William Sandqvist Ny processor med AD-omvandlare PIC16F628 saknar AD-omvandlare. När vi.
Analogt och Digitalt.
William Sandqvist Digitalt oscilloskop William Sandqvist
Styrteknik: Programmering med MELSEC IL PLC2A:1
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- -Algoritm analys och sökning algoritmer- Kap 5 -Algoritmer och.
Styrteknik: MELSEC FX och numeriska värden PLC2C:1
En mycket vanlig frågeställning gäller om två storheter har ett samband eller inte, många gånger är det helt klart: y x För en mätserie som denna är det.
William Sandqvist Databuffer Omvandlar mellan olika storlekar på dataobjekt Anpassar mellan olika dataöverföringshastigheter Databuffer.
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 PIC PIC (Peripheral Interface Computer) är en datorkrets med ”allt i ett”. Prog Mem. Programminnet är 2048 instruktioner.
William Sandqvist Lab 1 Några slides att repetera inför Lab 1 William Sandqvist
William Sandqvist PIC 16F628 Timers William Sandqvist
William Sandqvist Melodispelaren Denna demonstrationslaboration visar, steg för steg, hur man skriver ett kort program i programspråket.
IF1330 Ellära F/Ö1 F/Ö2 F/Ö3 Strömkretslära Mätinstrument Batterier
William Sandqvist Räknare En räknare är en speciell typ av sekvensnät som registrerar antalet inkommande klockpulser. Registreringen sker.
Simulering Introduktion Exempel: Antag att någon kastar tärning
Minnesarkitektur Problem: Snabbare och snabbare processorer men minnena hänger inte med. Lösning: Minneshierarkier.
William Sandqvist PIC-programmeringsmiljön i skolan Datorerna i skolans labsalar är centralt underhållna. Du har inte rättigheter att installera.
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
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 IS1500 Datorteknik William Sandqvist
William Sandqvist Lab 3 Några slides att repetera inför Lab 3 William Sandqvist
William Sandqvist Lab 2 Några slides att repetera inför Lab 2 William Sandqvist
William Sandqvist Flera saker samtidigt? /* Blink1: 1s ON - 1s OFF */ /* Blink2: 0,2s ON - 0,2s OFF - 1s ON - 1s OFF */
William Sandqvist DA-omvandling, oftast PWM.
Arbete Energi Effekt.
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
1 Ingenjörsmetodik IT & ME 2007 Föreläsare Dr. Gunnar Malm.
Föreläsning 14 Logik med tillämpningar Innehåll u Cuts och negation u Input/output u Extralogiska predikat u Interaktiva program, failure-drivna.
IE1206 Inbyggd Elektronik Transienter PWM Visare j  PWM CCP KAP/IND-sensor F1 F3 F6 F8 F2 Ö1 F9 Ö4F7 tentamen William Sandqvist PIC-block.
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
IE1206 Inbyggd Elektronik F1 F2
DA-omvandling, oftast PWM William Sandqvist En DA-omvandlare tar stor plats på processor- chippet. Den vanligaste DA-lösningen är i stället.
IE1206 Inbyggd Elektronik Transienter PWM Visare j  PWM CCP KAP/IND-sensor F1 F3 F6 F8 F2 Ö1 F9 Ö4F7 tentamen William Sandqvist PIC-block.
William Sandqvist Binärkod och Graykod 7 Bitars Kodskiva för avkodning av vridningsvinkel. Skivans vridnings-vinkel finns tryckt som binära.
IE1206 Inbyggd Elektronik F1 F2
William Sandqvist Låskretsar och Vippor Låskretsar (latch) och vippor (flip-flop) är kretsar med minnesfunktion. De ingår i datorns minnen.
Grundläggande signalbehandling
Digitalteknik 3p - DA- och AD-omvandling
Presentationens avskrift:

William Sandqvist william@kth.se PIC Comparator Tips 'n Tricks William Sandqvist william@kth.se

Komparatorn är en 1 bitsomvandlare En komparator är en känslig förstärkare för skillnaden mellan spänningarna på ingångarna. Minsta lilla skillnad gör att utgången hamnar på max (1) eller min (0). Komparatorn kan användas för att med hög precision avgöra när en spänning UIN passerar en viss referens UREF. William Sandqvist william@kth.se

PIC-processorernas komparatorer PIC16F628 har två analoga komparatorer. Komparatorerna är anslutna till PORTA. William Sandqvist william@kth.se

William Sandqvist william@kth.se CMCON William Sandqvist william@kth.se

William Sandqvist william@kth.se Comparator modes. 000,100,111,010 William Sandqvist william@kth.se

William Sandqvist william@kth.se Comparator modes. 011,101,110,001 William Sandqvist william@kth.se

William Sandqvist william@kth.se Comparators OFF. 111 Vid uppstart (defaultvärde) är komparatorerna inkopplade! För att använda PORTA’s pinnar digitalt (D) måste man således först ”slå av” komparatorerna. DETTA ÄR VIKTIGT ATT VETA! CM0=1; CM1=1; CM2=1; // no comparators on PORTA pins William Sandqvist william@kth.se

Comparator outputs, mode=110 /* AN0 ”-” Input */ TRISA.0 = 1; /* AN2 ”+” Input */ TRISA.2 = 1; /* CMP1 Output */ TRISA.3 = 0; CM2 = 1; /* Mode 110 */ CM1 = 1; CM0 = 0; /* Out not inverted */ C1INV = 0; /* Program can read */ /* bit variable C1OUT */ RA4 är Open drain ! Med dessa inställningar kan man använda komparator 1 helt fristående! EXOR-grindarna kan invertera komparatorernas utgångar. William Sandqvist william@kth.se

William Sandqvist william@kth.se Komparator komparator.c När spänningen på uttaget på 10k potentiometern passerar referens-spänningen 2,5V (5V delat med två) slår komparatorns utgång om. Omslaget är mycket distinkt. William Sandqvist william@kth.se

William Sandqvist william@kth.se Schmitt-trigger komparator.c En tredje 1k resistor från utgången till ”+” ingågen förskjuter referens-nivån så att man nu måste vrida mer för båda omslagen. Det blir således olika omslagsnivåer för Till och Från. Omslagsfunktionen blir därför ”segare” och säkrare. Kopplingen kallas för Schmitt-trigger och fenomenet för Hysteres. Hysteres. William Sandqvist william@kth.se

William Sandqvist william@kth.se Otto Schmitt En schmitt-trigger har ”snap action”. När man passerat omslagspunkten går förloppet inte att hejda … Otto Schmitt William Sandqvist william@kth.se

William Sandqvist william@kth.se RC-oscillator komparator.c Schmitt-triggern laddar nu kontinuerligt upp och ur kondensatorns spänning mellan de två omslags-nivåerna. Tillsammans med hörluren har vi fått en summer! William Sandqvist william@kth.se

William Sandqvist william@kth.se RC-oscillator Komparatorn laddar upp kondensatorn till den övre omslags-spänningen, därefter slår utgången om och laddar ur kondensatorn till den nedre omslags-spänningen. Frekvensen på komparatorns utgång beror av produkten R·C. Eftersom C är konstant så blir det R som styr frekvensen. William Sandqvist william@kth.se

William Sandqvist william@kth.se Sensorer Pröva några resistiva givare … NTC-Termistor LDR-Fotoresistor Vi kommer att mäta frekvens med PIC-processorns CCP-enhet senare i kursen … William Sandqvist william@kth.se

William Sandqvist william@kth.se Sensorer Pröva några resistiva givare … FSR-Force Sensitive Resistor, för ”klämtryck”. William Sandqvist william@kth.se

William Sandqvist william@kth.se  enbitsomvandlare Hur kan billiga CD-spelare låta så bra? CD-skivan är digital och DA-omvandlaren bör vara på c:a 16-20 bitar för bra ljud, och sådana omvandlare är naturligtvis dyra! I själva verket innehåller de billiga CD-spelarna en 1-bits DA-om-vandlare som arbetar så snabbt att den blir jämförbar med en 16-bitarsomvandlare! Vad som vinnes i upplösning förloras i tid! Snabbheten kan växlas om till noggrannhet! William Sandqvist william@kth.se

William Sandqvist william@kth.se  enbitsomvandlare  William Sandqvist william@kth.se

William Sandqvist william@kth.se  enbitsomvandlare En PIC-processor som saknar AD-omvandlare, men som har en komparator, kan användas som en 1 bits AD-omvandlare. Komparatorns utgång pendlar så snabbt den kan mellan 1 och 0. I punkten  bildas skillnaden mellan mätspänningen Umät och kompara-torns utgång Uut. I kondensatorn utjämnas ( = summation,  ) pulserna till samma medelvärde som Vref. Om Vref = 2,5V och de båda R är lika: Umät + Uut = 5 (Vref = 2,5)   PIC Delta-Sigma Converter Om man räknar fram komparatorpulsernas ”medelvärde” digitalt som förhållandet mellan ”1” och ”0” i Uut, kan man få fram ett mätvärde på Umät med många bitars upplösning. ( 20 bitars upplösning kommer dock ta någon minut eftersom det man vinner i upplösning förloras i tid ) ! William Sandqvist william@kth.se

William Sandqvist william@kth.se Lite ellära … Umät Uut Komparatorn svänger så fort den kan för att hålla ingången på referensnivån 2,5V. Medel-värdet av pulserna i Uut balanserar Umät. Låt en programloop varva 5000 varv och räkna ”0” och ”1”. Som synes är det antalet ”0” som motsvarar Umät. Umät + Uut = 5 (Vref = 2,5) William Sandqvist william@kth.se

William Sandqvist william@kth.se Vid balans 2,5V Umät Uut 4V analogt 1V digitalt Komparatorn ”svänger” så att minusingången kommer att hållas på referensnivån 2,5V. Uut får då medelvärdet 1V. (Digitalt 1000 varv med ”1” och 4000 varv med ”0”, antalet varv med ”0” ger det digitala mätvärdet). 2,5V 2,5V William Sandqvist william@kth.se

William Sandqvist william@kth.se  enbitsomvandlare I en 5000 varvs loop summeras de varv då komparatorn står på ”0” och och detta antal lagras i 16-bitsvariabeln result. Eftersom det totala spänningsområdet är 5V så blir varje räknesteg värt 1 mV. Det är således busenkelt att ”skala” mätvärdet med antalet varv i loopen! William Sandqvist william@kth.se

William Sandqvist william@kth.se Olika vägar – samma tid Observera att delar av programmet är tidskritiskt. Varvet i programloopen ska ta lika lång tid oavsett om komparatorutgången är ”1” eller ”0”. Om komparatorutgången är ”0” ska dessutom uppräkningen av 16-bitars-variabeln result ta lika lång tid oavsett om det blivit Carry vid ökningen av dess LSB-byte eller ej. Här hjälper oss PIC-processorernas skip-instruktioner. När det inte blir Carry skip’ar man nästföljande instruktion, och det innebär ett hopp som tar 2 cykler, blir det carry gör man den nästföljande instruktionen, då blir det 1+1 även det 2 cykler! (Smart Microchip). Om man vid kompileringen använder flaggan –a så får man en extra fil med som innehåller den genererade assemblerkoden, som man kan studera. William Sandqvist william@kth.se

Den tidskritiska delen av programmet C-kod. Här kompenserar vi för att else-delen av vilkoret tar längre tid än if-delen. long result; if(C1OUT ) { nop(); nop(); nop(); nop(); nop(); } else result++; nop(); } Result är en long, och består av två Byte-register. Här slipper vi kompensera för att Carry från LSB-byten tar extra tid, vid de tillfällen den uppkommer. Smart med skip-instruktioner Microchip! William Sandqvist william@kth.se

Den genererade assemblerkoden BTFSS 0x1F,C1OUT GOTO m001 NOP NOP GOTO m002 m001 BCF 0x03,RP0 BCF 0x03,RP1 INCF result,1 BTFSC 0x03,Zero_ INCF result+1,1 m002 ... Alla instruktioner tar 1 s (vid 4 MHz klocka). Undantag är när en instruktion leder till ett hopp i programmet – då tar det 2 s. William Sandqvist william@kth.se

CDFG, Control and Data Flow Graph Flödesschemat är ett nödvändigt verktyg för att analysera assembler-koden för att se till att olika vägar genom programmet tar samma tid. Verktyg för att rita flödesschemor finns i Word och Powerpoint. William Sandqvist william@kth.se

Den genererade assemblerkoden BTFSS 0x1F,C1OUT GOTO m001 NOP NOP NOP NOP NOP GOTO m002 m001 BCF 0x03,RP0 BCF 0x03,RP1 INCF result,1 BTFSC 0x03,Zero_ INCF result+1,1 NOP m002 BTFSS 0x1F,C1OUT GOTO m001 NOP NOP NOP NOP NOP GOTO m002 m001 BCF 0x03,RP0 BCF 0x03,RP1 INCF result,1 BTFSC 0x03,Zero_ INCF result+1,1 NOP m002 William Sandqvist william@kth.se

Den genererade assemblerkoden BTFSS 0x1F,C1OUT GOTO m001 NOP NOP NOP NOP NOP GOTO m002 m001 BCF 0x03,RP0 BCF 0x03,RP1 INCF result,1 BTFSC 0x03,Zero_ INCF result+1,1 NOP m002 BTFSS 0x1F,C1OUT GOTO m001 NOP NOP NOP NOP NOP GOTO m002 m001 BCF 0x03,RP0 BCF 0x03,RP1 INCF result,1 BTFSC 0x03,Zero_ INCF result+1,1 NOP m002 William Sandqvist william@kth.se

William Sandqvist william@kth.se Flödesschemat visar att passagen genom detta programavsnitt alltid tar 9 cykler. Man har här skjutit in nop() instruktioner i C-koden där det visat sig behövas. Vad händer om man skulle byta till den optimerande kompilator-versionen? William Sandqvist william@kth.se

William Sandqvist william@kth.se Tidskritisk kod I allmänhet är det olämpligt att försöka detaljstyra exekveringstiden från C-nivån. Standard C-kompilatorer har olika optimeringsinställningar som alla genererar olika kod. För PIC-processorer (som ju har skip-instruktioner) och småprogram skrivna med en enkel kompilator som tex CC5x är detta trots allt ganska vanligt. Man måste dock alltid ”granska” den genererade koden för att se till att inga överraskningar smugit sig in! Bättre alternativ kan vara att använda PIC-processorernas inbyggda räknare/timers – om dom nu inte är upptagna med andra uppgifter. Timer1 och Timer2 och CCP-enheten behandlas senare i kursen. William Sandqvist william@kth.se

William Sandqvist william@kth.se Mät ett 1,5 V batteri Lab-uppgift. DeltaSigmaA2D628.c Vid laborationen mäter Du ett 1,5 V batteri inkopplat mellan Vref och Umät. Blir mätvärdet detsamma när Du vänder batteriet? William Sandqvist william@kth.se

Medelvärdesbildning för stabilt resultat Beräknar man medelvärdet av N avläsningar förbättras resultatet med en faktor roten ur N. Man kan förbättra mätvärdet med ”en sifferposition” genom att beräkna medelvärdet av 100 (128) avläsningar. Man kan förbättra mätvärdet med ”två sifferpositioner” genom att beräkna medelvärdet av 10000 (16384) avläsningar. Det som vinnes i noggrannhet förloras som mät-tid … William Sandqvist william@kth.se

William Sandqvist william@kth.se Running average long buffer[8]; // FIFO array for running average char n, i; buffer[n] = result; n++; n %= 8; // cirkular buffer with 8 variables result = 0; long temporary; for( i=0;i<8;i++) // sum up all 8 values { temporary = buffer[i]; result += temporary; } (unsigned long) result /= 8; Nytt mätvärde Rullande medelvärde Du kan ”kommentera fram” kod som beräknar rullande medelvärde över de senaste 8 mätningarna. Blir mätvärdet mer stabilt nu? William Sandqvist william@kth.se

Filter är effektivare än medelvärde Microchip MCP3550  AD-omvandlare. Klockfrekvens 102,4 kHz 3 stegs  (undertrycker 50 Hz!) ett fjärde ordningens decimeringsfilter (SINC4-typ) reducerar hastigheten till 13 sampel/sek men ökar upplösningen till 22 bitar. Typiskt användningsområde är batteriladdare som uptäcker den obetydliga spänningsstegringen som blir vid fulladdat batteri! William Sandqvist william@kth.se