Laborationsansvarig: Examinator: Anders Arvidsson Bengt Magnhagen Utskriftsdatum: 1998-02-13 Laborant: Godkänd den: / - Sign:
Abstract This hands-on session aims at giving the student a useful PIC16x84 programmer. Included is also moment such as soldering, reading of schemes and verification. Sammanfattning Laborationen syftar till att ge studenten en användbar PIC16x84 programmerare. Ingår gör också moment som lödning, läsning av kretsschema och verifiering. Innehållsförteckning 1 Mål... 3 2 Genomförande... 3 3 PIC16F84... 4 3.1 Kärna... 4 3.2 Portar... 4 3.3 Periferi... 4 3.4 PIC16F84 i siffror... 5 3.5 Lämplig litteratur... 5 4 In-system programmering... 6 4.1 Förutsättningar... 6 4.2 Enkel programmerare... 6 5 Lödning av in-system programmerare... 8 5.1 Arbetsgång... 8 5.2 Programmerare... 8 6 Verifiering... 9 6.1 Kompilering av testfil... 9 6.2 Oscilloskopsmätningar... 9 6.3 Funktionstest...10 2
1 Mål Vid laborationens slut ska laboranten inneha en programmerare för PIC-processorerna 16x83 och 16x84. Denna ska kunna hanteras och användas i kommande kurser. Kännedom om hur en bra lödning utföres och igenkännes ska ha inhämtats. Studenten ska också ha allmän kännedom om PICprocessorn. 2 Genomförande Teoretiska kunskaper om lödning samt PIC-processorn inhämtas på föregående föreläsning. Lödmomentet utföres lämpligen parvis då utrustning och utrymme är begränsat. Verifiering sker medelst oscilloskopsmätning och test genom programmering av befintlig labutrustning. Godkännande fås mot uppvisande av fungerande och korrekt lödd programmerare med adapterkort för laborationsansvarig. 3
3 PIC16F84 Enchipsdatorn som används i hela kursen är PIC16F84 från Microchip. Främsta anledningen till att den valts är att programminnet och delar av dataminnet är av typen Flash. Detta medför snabb utveckling då processorn inte behöver UV-raderas och kan in-system programmeras. 3.1 Kärna Kärnan består av en RISC-processor med Harvard arkitektur. I motsats till den traditionella von Neumann arkitekturen innebär det att dataminnet och instruktionsminnet är separerat. Detta medger möjlighet till differentierad databredd och således är instruktionsbredden 14 bitar medan databredden är 8 bitar. Totalt medger detta en, bland motsvarande processorer, ovanlig snabbhet och vid 4 MHz är cykeltiden 1 µs. Alla instruktioner tar en cykel, förutom programhoppen som tar två. 3.2 Portar Figur 1. Pinkonfiguration. Figur 1 visar tillgängliga portar. Samtliga portar är dubbelriktade. Port A4 agerar dock endast open drain som utgång och endast port B kan konfigureras med intern pull-up. Port A4 kan fungera som klockkälla för timern. Port B0 och B4-7 kan användas för interrupt. Port B4-7 är dessutom interruptkänsliga för varje förändring. MCLR (Master CLeaR) är som namnet antyder yttre reset, men används också, via en 12 V signal, till att försätta processorn i programmeringsläge. 3.3 Periferi Då processorn är en av de mindre i PIC-serien är periferienheterna ytterst begränsade. De som finns är dock av stort värde. T ex finns en 8-bitars timer med prescaler. Prescalern, även den med 8 bitar, delas dock av watchdogen, vilken räknar ut på ca 18 ms utan prescaler. En säkerhetshöjande detalj är att watchdogen har en egen inbyggd resonator. Förutom nämnda räknare finns också en timer för oscillatorns uppstarttid och en för spänningstillslag. Dessa håller processorn i resetläge tills driften är stabil. Till periferi får också kretsens data EEPROM räknas. Detta ligger i en lite vid sidan om och måste därför accessas medelst en lite omständlig procedur. I gengäld ligger sparad data väldigt säkert eftersom man omöjligen skriver där av misstag. 4
Oscillatorn kan programmeras att arbeta i flera olika lägen. Dels kan olika typer av kristaller anslutas, t ex lågeffekts klockkristaller eller högfrekvenskristaller. Dels kan ett enkelt RC-nät användas. Även yttre klockning är möjlig. 3.4 PIC16F84 i siffror 1024 byte Flash (programminne) 68 byte RAM (dataminne) 64 byte EEPROM (dataminne) 8 nivåer djup stack 13 I/O portar 20 ma drivförmåga/port 2 ma strömförbrukning (4 MHz) 2-6 V matningsspänning 3.5 Lämplig litteratur Information om programmering kan hämtas på Microchips hemsida, www.microchip.com. Med laborationen följer databoken för PIC16F84 på filen 16F84.PDF. Lämpliga sidor att skriva ut är för... alla: 1, 14, 56, 115-117 1/grp: 1, 9-35, 48-51, 55-66, 115-119 den intresserade: 1-66, 113-119 5
4 In-system programmering Genom att förbereda applikationskortet för programmering går det uppnå flera fördelar. Korten kan tillverkas i så små serier att ROM versioner av kretsarna inte lönar sig. Kretsarna programmeras alltså vid monteringen. Genom att programmera dessa färdigmonterade kan sockeln undvaras och ytmonterad version användas. Detta ger billigare kort och säkrare drift. Ytterligare en fördel ligger i möjligheten att i efterhand ändra programmet. 4.1 Förutsättningar Vid programmering av 16F84 används följande pinnar: nr Pinne: Funktion: 14 VDD Spänning 5 GND Jord 4 MCLR Initierar programmering 12 Port B6 Klockingång 14 Port B7 Data in/ut Tabell 1. Programmeringspinnar. Spänningen ska vid programmering ligga mellan 4,5 och 5,5 volt. MCLR ska ligga i intervallet 12-14 volt. Programmering initieras genom att MCLR höjs till minst 12 volt. Denna spänning driver dock inte programmeringen utan tjänar bara som startsignal. MCLR förbrukar därför högst 200 µa och en intern spänningspump genererar programmeringsspänningen. Dataöverföringen sker sedan enligt ett I 2 C-liknande protokoll via Port B6 och B7. Figur 2. Programmeringsspänning. MCLR delas mellan reset och programmering. Detta löses enkelt genom ovanstående koppling. Vid spänningssättning fördröjs resetsignalen en stund innan den stabiliserar sig på matningsspänningen. Vid programmering stiger signalen utan onödiga förluster till 12 volt. 4.2 Enkel programmerare Följande enkla programmerare från Silicon Studio är mycket spridd och visar tydligt principerna: 6
Figur 3. F84 programmerare. Denna genialt enkla programmerare fungerar tillsammans med programmeringsprogrammet PIP- 02.exe och serieportsdrivrutinen COM84.EXE från Silicon Studio. Vi ser hur PIC-processorns interna skyddsdioder används för att generera rätt spänningsnivåer och att TxD på serieporten används för att mata kretsen. Programmeraren har dock en markant nackdel. Då programmeringsspänningen tas direkt ifrån porten innebär det att konstruktionen inte fungerar ihop med alla datorer. Vissa serieportar levererar inte 12 volt vid aktuell belastning. Stigtiden på MCLR utgör också ett problem. 7
5 Lödning av in-system programmerare Laborationsmomentet är beräknat till 2 timmar. 5.1 Arbetsgång Montera en grupp komponenter åt gången. Tillse före lödning att samtliga komponenter är rätt vända och att motstånden ligger i samma läsriktning. Börja med de komponenter med lägst bygghöjd. Exempel på arbetsordning är: dioder, motstånd, IC-hållare, transistor, kondensatorer, D- SUB och sist flatkabel. 5.2 Programmerare Figur 4. Kretsschema. De ingående komponenterna står att finna i schemat ovan. Lägg märke till att denna inte lämnar matningsspänning till processorn, men väl programmeringsspänning på 13 volt. Detta sker medelst en spänningspump. Q1 tillser att stigtiden på denna signal blir kort då U1c inte öppnar förrän spänningspumpen arbetat upp spänningen. Figur 5. Komponentplacering. 8
Komponentplaceringen för programmeraren finns i Figur 5. Figur 6. Adapterkort. Vid programmering av processorn utan applikationskort används ovanstående adapterkort. Detta drivs med ett 9-volts batteri och anslutes via flatkabel till programmeraren. P1 utgörs av en stiftlist. För nöjet att testa en annorlunda monteringsteknink har en ytmonterad 7805:a valts. 6 Verifiering Kortets funktion kan inte enbart testas på en krets eftersom dessa har olika tolerans. Därför utföres också några mätningar. 6.1 Kompilering av testfil Program för PIC-processorn skrivs i en texteditor med tillägget.asm. Assemblering sker sedan med MPASM.EXE. Skapa gärna en batfil (t ex m.bat) med innehållet MPASM /L- /P16C84 %1 så slipper du göra om inställningarna varje gång. Testa assemblatorn med ROBOT.ASM (M ROBOT enligt exempel). 6.2 Oscilloskopsmätningar Ladda drivrutinen för serieporten COM84.EXE enligt COM84 COMn, där n är portnumret. Starta därefter programmeringsprogrammet PIP-02.EXE och ladda den enligt ovan skapade ROBOT.HEX. Skapa en batfil för detta (t ex p.bat) enligt: COM84 COM2 PIP-02 Anslut programmeraren till porten och adapterkortet som är försett med en PIC16F84. Testa att radera, programmera och verifiera processorn. Inställningar av processormodell och oscillator görs till i rutan höger med Device- resp Fuse edit. 9
Mät och notera under pågående programmering följande: Spänningspumpens frekvens: khz Stigtid för programmeringsspänningen: µs (Max 8 µs enligt prg spec.) 6.3 Funktionstest Programmera roboten som används i kursen med programmet ROBOT.HEX. Prova att förändra dess rörelsemönster. Visa upp resultatet för laborationsansvarig. 10