Mikro-ohjaimen ohjelmoinnin perusteet Flowcode ympäristössä



Samankaltaiset tiedostot
MUISTIPIIRIT H. Honkanen

Mikrokontrollerit. Mikrokontrolleri

Tehtävä 5. ECIO dataloggeri lämpötila-anturilla

S Elektroniikan häiriökysymykset. Laboratoriotyö, kevät 2010

6. Analogisen signaalin liittäminen mikroprosessoriin Näytteenotto analogisesta signaalista DA-muuntimet 4

GSRELE ohjeet. Yleistä

Taitaja semifinaali 2010, Iisalmi Jääkaapin ovihälytin

OMNIA OPINNÄYTETYÖ AMMATTIOPISTO. Diginoppa ICTP09SLG OMNIAN AMMATTIOPISTO

GSM PUHEVIESTI & SMS HÄLYTYKSENSIIRTOLAITE

TIES530 TIES530. Moniprosessorijärjestelmät. Moniprosessorijärjestelmät. Miksi moniprosessorijärjestelmä?

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Operaatiovahvistimen vahvistus voidaan säätää halutun suuruiseksi käyttämällä takaisinkytkentävastusta.

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. FT Ari Viinikainen

Tällä ohjelmoitavalla laitteella saat hälytyksen, mikäli lämpötila nousee liian korkeaksi.

Älykännykät ovat pieneen tilaan paketoituja, mutta suuret ominaisuudet omaavia tietokoneita.

1 Muutokset piirilevylle

ELEC-C5070 Elektroniikkapaja (5 op)

Supply jännite: Ei kuormaa Tuuletin Vastus Molemmat DC AC Taajuus/taajuudet

Kojemeteorologia. Sami Haapanala syksy Fysiikan laitos, Ilmakehätieteiden osasto

Tietokoneen muisti nyt ja tulevaisuudessa. Ryhmä: Mikko Haavisto Ilari Pihlajisto Marko Vesala Joona Hasu

LUMA SUOMI -kehittämisohjelma LUMA FINLAND -utvecklingsprogram LUMA FINLAND development programme Ohjelmointia Arduinolla

1 YLEISTÄ. Taitaja2002, Imatra Teollisuuselektroniikkatyö Protorakentelu 1.1 PROJEKTIN TARKOITUS

Liikennevalot. Arduino toimii laitteen aivoina. Arduinokortti on kuin pieni tietokone, johon voit ohjelmoida toimintoja.

ECIO käyttöohje. Matrix Multimedia Limited. JJJ-Automaatio Oy. Keijo Salonen Jyväskylän ammattiopisto

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Mikro-ohjain µc harjoitukset - yleisohje

Kojemeteorologia. Sami Haapanala syksy Fysiikan laitos, Ilmakehätieteiden osasto

Arduino. Kimmo Silvonen (X)

Tekniikka ja liikenne (5) Tietoliikennetekniikan laboratorio

Taitaja2005/Elektroniikka. 1) Resistanssien sarjakytkentä kuormittaa a) enemmän b) vähemmän c) yhtä paljon sähkölähdettä kuin niiden rinnankytkentä

1. Yleistä. 2. Ominaisuudet. 3. Liitännät

Successive approximation AD-muunnin

Näppäimistö CT Käyttäjäopas. Global Safety & Security Solutions Oy info@globalsafety.fi. CT1000v.5

2. Sulautettu järjestelmä ja mikro-ohjain , pva

SISÄLLYSLUETTELO RC-436

ABB aurinkosähköinvertterit Pikaohje PMU laajennuskortti

Harjoitustyö - Mikroprosessorit Liikennevalot

Flash AD-muunnin. Ominaisuudet. +nopea -> voidaan käyttää korkeataajuuksisen signaalin muuntamiseen (GHz) +yksinkertainen

Flash AD-muunnin. suurin kaistanleveys muista muuntimista (gigahertsejä) pieni resoluutio (max 8) kalliita

CLPD ja FPGA piirien arkkitehtuuri ja ominaisuudet

P I C A X E O H J E L M O I N T I

LOPPURAPORTTI Lämpötilahälytin Hans Baumgartner xxxxxxx nimi nimi

Tietokoneen rakenne: Harjoitustyö. Motorola MC prosessori

Kontrollerin tehonsäätö

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Tietojenkäsittelyn perusteet 2. Lisää käyttöjärjestelmistä

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

Flowcode 6 Omien komponenttien luonti 3D- tilassa Ledi

Ohjelmistoradio. Mikä se on:

K8048 PIC PROGRAMMER BOARD

GSMRELE PG-30 v

Johdanto tieto- viestintäteknologian käyttöön: Äänitystekniikka. Vfo135 ja Vfp124 Martti Vainio

Käyttöoppaasi. PIONEER AVIC-S1

Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?

DC-moottorin pyörimisnopeuden mittaaminen back-emf-menetelmällä

Signaalien datamuunnokset. Näytteenotto ja pito -piirit

10. Kytkentäohje huonetermostaateille

Esimerkkitentin ratkaisut ja arvostelu

Hanna Nauska-Vaara FLOWCODE-OHJELMOINNIN PERUSTEITA JA HARJOITUKSIA

Sääasema Probyte 2003

Jos sinulla on kysyttävää 10. Vastaanotin toimi.

STEP-404 askelmoottoriohjain PROBYTE/Pekka Ritamäki

ELEC-A4010 Sähköpaja Arduinon väylät tutuiksi

NiMH Laturi. Suunnittelu Olli Haikarainen

PROBYTE GSM ALARM #6d

PR SARJA ASENNUS JA KYTKENTÄ

Vahvistava kaulasilmukka sisäänrakennetulla äänen vahvistimella. Sopii käytettäväksi puhelimien ja audiolaitteiden kanssa.

Radioamatöörikurssi 2014

Radioamatöörikurssi 2013

S Elektroniikan häiriökysymykset. Laboratoriotyö 1

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

Taitaja2008, Elektroniikkalajin semifinaali

Fortum Fiksu Mittaava, etäohjattava sähkökytkin sisäkäyttöön Käyttöohjeet

Radioamatöörikurssi 2015

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA

Ohjelmistopäivitysohje

BT220 HEADSET. Tuotetiedot 1 Varausliitäntä 2 + -painike 3 - -painike 4 Toiminnonosoitin (sininen) 5 Akunosoitin (punainen)

HARJOITUSTYÖ: LabVIEW, Kiihtyvyysanturi

Tietokone. Tietokone ja ylläpito. Tietokone. Tietokone. Tietokone. Tietokone

Multivibraattorit. Bistabiili multivibraattori:

HÄMEEN RADIOHARRASTAJAT OH3ACA 1/16. TP6000-RADION MODIFIOINTI 70MHz BANDILLE

VIM RM1 VAL / SKC VIBRATION MONITOR RMS-MITTAUSJÄRJESTELMÄLLE KÄSIKIRJA. VIM-RM1 FI.docx / BL 1(5)

Aurinkopaneelin lataussäädin 12/24V 30A. Käyttöohje

File: C:\tmp\tmp\mch.txt , 9:37:46. JUKKA LAAKKONEN, OH1NPK ORIKEDONKATU 16 FIN TURKU May 18, 1995

PR SARJA ASENNUS JA KYTKENTÄ

Tehtävä 6. MIAC-pohjainen valo/moottoriohjaus

1. Keskusyksikön rakenne

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

Ongelma(t): Mistä loogisista lausekkeista ja niitä käytännössä toteuttavista loogisista piireistä olisi hyötyä tietojenkäsittelyssä ja tietokoneen

HPM RM1 VAL / SKC HYDRAULIC PRESSURE MONITOR RMS-MITTAUSJÄRJESTELMÄLLE KÄSIKIRJA. HPM-RM1 FI.docx / BL 1(5)

JOHDATUS ELEKTRONIIKKAAN. Oppitunti 2 Elektroniikan järjestelmät

Kombinatorisen logiikan laitteet

LABORAATIOSELOSTUSTEN OHJE H. Honkanen

Modeemi ja lähiverkko

S14 09 Sisäpeltorobotti AS Automaatio ja systeemitekniikan projektityöt. Antti Kulpakko, Mikko Ikonen

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

4. Lausekielinen ohjelmointi 4.1

AS Servotekniikka Seminaariesityksen kirjallinen versio, mikrokontrollerit

Harjoitustyön 2 aiheiden kuvaukset

TG7200_7220NE(fi-fi)_QG.fm Page 1 Wednesday, July 25, :57 PM. Koukku ( V, 50 Hz) (KX-TG7202/KX-TG7203/KX-TG7222) Koukut

Transkriptio:

1 Mikro-ohjaimen ohjelmoinnin perusteet Flowcode ympäristössä (Version 1.0) http://www.matrixmultimedia.com Tämä kirja on suomennos sähköisestä oppimateriaalista, joka on ladattavissa Matrix Multimedian www-sivuilta http://www.matrixmultimedia.com/learningcentre/index.php. Suomennoksen on tehnyt Tatu Rämänen kesällä 2008. Tatun suomennoksesta kirjaksi muokannut Keijo Salonen. 1

2 Kurssiin liittyen Tavoite: Kurssin tavoitteena on tutustuttaa mikrokontrollereita käyttävien elektroniikkajärjestelmien kehittämiseen. Suoritettuasi tämän kurssin olet oppinut: Mikä on mikrokontrolleri Kuinka rakennetaan mikrokontrollereihin perustuvia piirejä ja järjestelmiä Kuinka mikrokontrollereita ohjelmoidaan Tarvittavat varusteet: Kurssin suorittamista varten tarvitset: Flowcode-ohjelmiston Seuraavat E-Blocksit: 1. EB003 Anturilevy 2. EB004 LED-levy 3. EB005 LCD-levy 4. EB006 Multiprogrammeri 5. EB007 Kytkinlevy 6. EB008 7-segmentin näyttö -levy 7. EB016 Prototyyppilevy 8. EB014 Näppäimistö Kurssimateriaalin käyttäminen: tähän kurssiin kuuluu useita tehtävälistoja harjoitusosiossa. Kaikki tehtävien suorittamiseen tarvittava tieto löytyy tästä kurssimateriaalista ja Flowcoden ohjetiedostosta. Tehtäviä suorittaessa on syytä tutkia kurssimateriaalia törmätessään ongelmiin. Tämä lähestymistapa sopii hyvin ohjelmointiin: ohjelmoijat lukevat ohjeistuksen jäätyään jumiin. Ennen harjoituksia kannattaa käyttää hieman aikaa tutustumaan käytettävissä olevaan materiaaliin, että tietää mistä etsiä ratkaisua törmättyään ongelmiin. Ajan käyttö: Kaikkien tähän materiaaliin liittyvien harjoitusten tekemiseen pitäisi kulua yhteensä 50 tuntia. 2

3 Lyhenteet Kurssimateriaalissa käytetään seuraavia lyhenteitä: ADC : Analogi-digitaalimuunnin (Analogue to Digital Converter) ALU: Aritmeettis-looginen yksikkö (Arithmetic Logic Unit) ASCII: Merkistöstandardi (American Standard Code for Information Interchange) CPU: Keskusprosessori (Central Processing Unit) EEPROM: Sähköisesti purettava lukumuisti (Electrically Erasable Programmable Read Only Memory) EPROM: UV-valolla purettava lukumuisti (Erasable Programmable Read Only Memory) GND: Maadoitus (Ground) Hex: Heksadesimaali (Hexadecimal) IDC: Moninapainen kaapeliliitin (Insulation Displacement Connector) I/O: Sisäänmeno/ulostulo (Input / Output) ISP: Mikroprosessorin ohjelmointitekniikka (In-System Programming) JPEG: Kuvaformaatti (Joint Picture Expert Group) LCD: Nestekidenäyttö (Liquid Crystal Display) LED: Valodiodi (Light Emitting Diode) LVP: Matalan jännitetason ohjelmointekniikka (Low Voltage Programming) LDR: Valovastus (Light Dependant Resistor) LSB: Vähiten merkitsevä bitti (Least Significant Bit) MSB: Eniten merkitsevä bitti (Most Significant Bit) NVRAM: Haihtomaton RAM muisti (Non-Volatile Random Access Memory) PIC: PIC mikro-ohjain (Peripheral Interface Controller) PROM: kertaalleen ohjelmoitava lukumuisti (Programmable Read Only Memory) PSU: Virtalähde (Power Supply Unit) RAM: Hajasaantimuisti, luku/kirjoitus muisti (Random Access Memory) RV1: Säädettävä vastus (Resistor-Variable ) SPI: SPI-sarjaliityntä (Serial Programmable Interface) XTAL: Kellokide (Crystal) ZIF: Nollavoimakanta (Zero Insertion Force) +V: Positiivinen käyttöjännite (positive supply voltage) 3

4 Opiskelusuunnitelma Seuraavissa harjoituksissa tarvitset: Flowcode 3 E-Blocks Multiprogrammer E-Blocks LED board E-Blocks Switch board E-Blocks LCD board Osa AIHE Aika KUVAUS A Kirja 16 tuntia Lue tämä kurssimateriaali läpi samalla harjoitellen Flowcode ympäristössä. B Help file 1 tunti Tutustu huolella Flowcode ohjelman ohje-tiedostoihin. Osa AIHE Aika (tuntia) C LAB1 Ulostulot 3 4 D LAB2 Viive 1-2 E LAB3 Paluu piste 1-2 F LAB4 Laskenta 1-2 G LAB5 Silmukka 2-3 H LAB6 Sisääntulot 3-4 I LAB7 Ehtolauseet 5-6 J LAB8 LCD 5-7 Yhteensä 21-30 Seuraavissa harjoituksissa tarvitset: Flowcode 3 E-Blocks Multiprogrammer E-Blocks LED board E-Blocks Switch board E-Blocks LCD board E-Blocks Sensor board E-Blocks 7-seg. board E-Blocks Patch board LM35 or LM34 temp sensor Osa AIHE Aika (tuntia) L LAB10 AD-muunnokset 8-11 M LAB11 Ohjelmistomakro 1-2 N LAB12 Ulkoinen keskeytys 3-4 O LAB13 Ajastettu keskeytys 7-10 Yhteensä 24-35 4

5 Sisällys Mikä on PICmicro?... 7 Mikrokontrollerit... 8 Digitaalinen maailma... 9 Analoginen maailma... 10 Analoginen data... 11 Digitaalinen data... 12 Analogi-digitaalimuunnos... 13 Datan siirtäminen PICmicroon... 14 Datan ulostulot... 15 Virtarajoitukset... 16 Datan tallennus... 17 Muistityypit... 18 PICmicron muisti... 19 Mikä on ohjelma?... 20 Flowcode-prosessi... 21 Ohjelman ajaminen... 22 Erityyppisiä PICmicroja... 22 16F877-arkkitehtuuri... 23 Muisti 15F877:ssä... 33 ALU... 34 Timer 1... 35 Timer 0... 36 RB0 -keskeytys... 37 Portti B -keskeytys... 38 A/D muunnos... 39 Väylät... 40 Oskillaattorit... 41 Vain asiantuntijoille... 43 E-Blocks levy... 45 Anturirajapinta (EB003)... 57 LED-levy (EB004)... 58 LCD-levy (EB005)... 59 Multiprogrammeri (EB006)... 60 Kytkinlevy (EB007)... 62 5

6 Neljän 7-segmentin näyttö (EB008)... 64 Näppäimistö (EB014)... 65 Prototyyppilevy (EB016)... 66 Juotettava prototyyppilevy (EB017)... 68 Flowcode ohjelmointiympäristö... 70 Demo 1: Digitaaliset ulostulot... 77 Binääriluvut... 82 Lukujen muunnokset... 83 Luvut ulostuloina... 84 Lyhyt testi... 85 Heksadesimaaliluvut... 86 Demo 2: Digitaaliset sisääntulot... 88 Demo 3: Toistorakenne eli silmukka... 95 Demo 4: LCD näyttö... 102 Demo 5: Binääriset numerot... 108 Demo 6: Päätös rakenteet... 116 Demo 7: Liityntäpiste eli Goto... 127 Demo 8: 7-segmentti näyttö... 130 Demo 9: Ohjelmistomakro eli aliohjelma... 137 Demo 10: Merkkijonot ja EEPROM muisti... 145 Demo 11: Keskeytykset ja AD-muunnin... 153 Sulautetut rakenteluprojektit ja elektroniikka... 161 6

7 Mikä on PICmicro? Nimi PIC (Peripheral Interface Controller) tarkoittaa joukkoa mikrokontrollereja, joiden valmistaja on Arizona Microchip. PIC16F84 PICmicro mikrokontrolleri Kuten nimestä voi päätellä, mikrokontrolleri (tai mikro-ohjain)on pienikokoinen laite jolla voidaan ohjata muita elektronisia laitteita. Niitä käytetään suuressa määrässä eri tuotteita: Autonmoottoreiden ohjauksessa. Lukkiutumattomissa jarruissa ja ilmastointilaitteissa. Mikä tahansa kauko-ohjattu laite sisältää hyvin todennäköisesti mikrokontrollerin. TV:ssä, Videolaitteissa, digitaalikameroissa, matkapuhelimissa, tulostimissa, mikroaaltouuneissa, pesukoneissa... Mikä on siis tämä ihmeellinen laite? Mikrokontrolleri (tai mikro-ohjain)on digitaalinen integroitu piiri, johon kuuluu: prosessori muisti sisääntuloportteja ulostuloportteja 7

8 Mikrokontrollerit Mikrokontrollerit ovat digitaalisia laitteita. Niiden sydämenä on suoritin (CPU). Tämä käsittelee digitaaliset signaalit, suorittaa laskennalliset ja loogiset operaatiot, luo aikaviiveet, järjestää signaaliketjut jne. Kuinka se tietää, mitä tehdä? Se seuraa ohjelmaksi koottuja ohjeita, jotka sijaitsevat PICmicron muistissa, osassa jota nimitetään ohjelmamuistiksi (ROM). Ajoittain suorittimen täytyy viedä dataa (tietoa) talteen myöhempää käsittelyä odottamaan. Tähän tarkoitukseen se käyttää eri muistialuetta, jota kutsutaan datamuistiksi (RAM). Kello synkronoi suorittimen tehtävät. Se lähettää suorittimeen jännitepulssien virtaa, joka ohjaa milloin dataa siirrellään järjestelmässä, ja milloin ohjelman käskyt suoritetaan. Mitä nopeampi kello on, sitä nopeammin mikro-ohjain suorittaa ohjelmaa. Tyypillisesti kelloa käytetään 20MHz taajuudella (20 miljoonaa jännitepulssia sekunnissa.) Yhteytenään ulkomaailmaan mikrokontrollerilla on portteja. Jokaisessa portissa on 8 liitäntää joita kutsutaan usein biteiksi, sillä jokainen liitäntä edustaa yhtä bittiä. 8 sisäänmenoa yhdessä portissa puolestaan edustaa yhtä tavua dataa (1 tavu = 8 bittiä). Antureista saatu tieto syötetään järjestelmään sisään sisääntuloportin kautta. Mikrokontrolleri käsittelee tätä dataa ja käyttää sitä ohjaamaan laitteita, jotka on kytketty ulostuloporttiin. Portit itsessään ovat monimutkaisia elektronisia piirejä eivät pelkästään nippu liittimiä joihin komponentit kytketään. Käyttäessämme mikrokontrolleria meidän tulee määrittää, kuinka haluamme porttien käyttäytyvän. Portit ovat kaksisuuntaisia, mikä tarkoittaa että niitä voidaan käyttää sekä sisään meno- että ulostuloportteina. Kirjoittaessamme ohjelmaa mikro-ohjaimelle, aloitamme konfiguroimalla portit, määräämällä ne sisäänmenoiksi tai ulostuloiksi. Sisäänmeno voi vastaanottaa dataa (tietoa) kahdessa muodossa; joko analogisena tai digitaalisena signaalina. On tärkeää ymmärtää näiden välinen ero. 8

9 Digitaalinen maailma Suuri osa vastaanottamastamme jokapäiväisestä tiedosta kuvataan numeroina. Esimerkkejä: - "Kello on kaksi." - "Lämpötila ulkona on 21 C." - "Auton nopeus oli 48 kilometriä tunnissa." On helppoa ymmärtää tässä muodossa olevaa dataa, kuten auton nopeus, joka muuttuu ajan mittaan: AIKA SEKUNTEINA NOPEUS KILOMETREINÄ TUNNISSA 0 0 10 15 20 21 30 25 40 22 50 20 60 16 9

10 Analoginen maailma Nyt tieto annetaan analogisessa muodossa! Analogisella signaalilla on tietty arvo jokaisen ajanhetkenä. Sanotaan, että se jatkuva kaikilla arvoilla. Seuraavassa on joitakin esimerkkejä. 1. Tiimalasi ajan mittarina Mitä pidempi aikaväli, sitä enemmän hiekkaa tiimalasin pohjalla. 2. Elohopeainen lämpömittari Mitä korkeampi lämpötila, sitä ylemmäs elohopea kipuaa putkessa. 3. Auton nopeusmittari Mitä suurempi nopeus, sitä edemmäs viisari kääntyy. Ongelma on siinä, että tietoon käsiksi pääseminen vaatii työtä. Nopeus- ja lämpömittareiden kohdalla täytyy arvioida, mitä kohtaa asteikolla mittari näyttää. Toisaalta on helppoa arvioida lämpötilan muutosta katsomalla elohopean siirtymistä. 10

11 Analoginen data Monet elektroniset anturit tuottavat signaalia analogisessa muodossa. Esimerkiksi mikrofoni tuottaa sähköisen vastineen ääniaallosta eli se esittää äänen muutuvana jännitteenä. Tässä on lämpöanturin piirikaavio. Ulostulon jännite kasvaa lämpötilan kohotessa. Kyseessä on analoginen signaali, jossa jännite seuraa lämpötilan muutoksia. Analoginen signaali voi saada minkä tahansa jännitearvon, jonka käytetty jännitelähde kykenee tuottamaan. Tässä tapauksessa lämpöanturin ulostulo voisi teoriassa olla enimmillään 5V, tai pienimmillään 0V tai montaa eri arvoa tältä väliltä. Jollakin aikavälillä ulostulon jännite voisi muuttua seuraavasti: Tämä on aito analoginen signaali, jossa x-akselilla kuluu aika ja y-akselilla on kunakin ajanhetkenä vallitseva jännitetaso. Eli kuvaajassa kuvataan jännitteen käyttäytyminen ajan funktiona U(t). 11

12 Digitaalinen data Digitaalinen signaali kantaa tietoa numeromuodossa. Sanotaan, että se on diskreetti signaali eli se saa tiettyinä ajanhetkinä vain tiettyjä sallittuja arvoja. Elektroniset järjestelmät käyttävät binäärilukujärjestelmää, johon kuuluvat vain numerot 0 and 1. Nämä kaksi numeroa koodataan jännitetasoiksi. Voisimme päättää vaikkapa seuraavanlaisesta koodauksesta: '0' = alhainen jännite. '1' = korkea jännite. Digitaalisilla signaaleilla on siten vain kaksi mahdollista jännitetasoa. Nämä ovat yleensä virtalähteen tarjoama jännite, tai niin lähellä sitä kuin mahdollista ja 0V. Kuinka näitä lukuja voitaisiin syöttää elektroniseen järjestelmään? Yksi tapa olisi käyttää kytkintä (esimerkki digitaalisesta anturista.) Tarkastellaan seuraavaa piirikaaviota: Kytkimen ollessa auki (ei painettuna,) vastus kytkee ulostulon 0V:iin eli maahan. Tämä ulostulo vastaa lukua 0. Kun kytkin on suljettu (painettuna) on ulostulo kytkettynä positiiviseen jännitelähteeseen ja on siis 5V tässä tapauksessa. Tämä vastaa lukua 1. (Huomaa, että olisi mahdollista vaihtaa kytkimen ja vastuksen paikat ylläolevassa piirissä. Tällöin kytkimen painaminen vaihtaa ulostulon tasoksi 0.) Seuraava kaavio esittää monimutkaisempaa digitaalista signaalia. Signaalin esittämä binääriluku on merkitty aaltokuvion alle, kun käytetään positiivista logiikkasopimusta. 12

13 Analogi-digitaalimuunnos Suuri osa todellisesta informaatiosta on analogista, mutta tietokoneet voivat käsitellä ainoastaan digitaalista dataa. Onneksi monissa mikro-ohjaimissa on sisäinen piiri, joka muuntaa tietoa analogisesta muodosta digitaaliseen. Tämä on nimeltään analogi-digitaalimuunnin (ADC tai A/D). AD-muunnin jakaa käytettävissä olevan jännitealueen (tässä tapauksessa 0 5V) pieniin yhtäsuuriin palasiin. Jokainen näistä palasista saa oman binäärikoodinsa. Suurin numeerinen arvo, jonka ADC sallii, riippuu ADC:n erottelukyvystä. Erottelukyky määräytyy sen mukaan, kuinka moni bittinen ADC:n sisäinen piiri on. 16F877a-prosessorin ADC:n erottelukyky on 8 tai 10 bittiä. Esimerkiksi jos suurin analoginen jännite on 5V ja käytössä on 8 bitin A/D-muunnin: Suurin 8-bittinen luku on 1111 1111 (= 255 kymmenjärjestelmässä) Ensimmäinen luku on 0000 0000 (= 0 kymmenjärjestelmässä!) Tämä tarkoittaa 2^8 = 256 askelta, joten jokainen askel vastaa jännitetason hyppäystä 5V/256 (eli suunnilleen 20mV) per askel. Eli jännitealue on jaettu 20mV palasiin. Kun ADC:lle annetaan analoginen signaali muunnettavaksi, se jakaa signaalin 20mV paloihin, selvittääkseen, kuinka monta astetta signaaliin mahtuu. Tästä saadaan analogista signaalia vastaava digitaalinen signaali. Käyttämässämme esimerkissä muunnin antaa signaalin jännitetasoille 0-20mV ulostuloksi 0, signaalin jännitetasoille 20-40mV ulostuloksi 1, jne. 13

14 Datan siirtäminen PICmicroon Mikro-ohjain on digitaalinen laite, mutta se voi vastaanottaa dataa sekä analogisessa että digitaalisessa muodossa. Ohjelmoijat voivat myös valita mitkä PICmicron liitynnöistä (jaloista) toimivat analogisina sisäänmenoina, mitkä digitaalisina sisäänmenoina ja mitkä digitaalisina ulostuloina. Tämä joustavuus voi aiheuttaa hieman epäselvyyttä. Esimerkiksi alla olevassa 16F877-sirussa nasta 2 on merkitty 'RA0/AN0':ksi. Tämä tarkoittaa että nastaa 2 voidaan käyttää portti A:n 0-bittinä (Register A bit 0) tai ANalogisena 0-sisäänmenona. Kunkin nastan toiminto määritellään asettamalla PICmicro -laitteen sisäisiä rekistereitä. Ohjelmoitaessa assembly- tai C-kielellä on varmistettava että nämä rekisterit on asetettu oikein ennen sirun käyttämistä. Seuraavassa kuvassa on yksityiskohtaisempaa tietoa PIC 16F877 prosessorista: 16F877A:ssa on 5 porttia, A -B-C-D-E. Jokainen portin A:n jaloista on merkitty RA0:sta RA5:een, portti B:n nastat on merkitty RB0:sta RB7:ään jne. Huomaa, että tässä tapauksessa portti A:lla on vain 6 liityntää, kun taas porteilla B, C ja D on kahdeksan ja portilla E vain 3. Tämä sallii yhdistää enimmillään kuusi digitaalista tuloa porttiin A. Jos halutaan käyttää analogisia antureita, voidaan käyttää kaikkia pinnejä, joissa on merkintä 'ANx' (Analog). Kaikki näistä jaloista voivat lukea analogisia sisäänmenosignaaleja väliltä VDD (5V) ja VSS (0V). Nämä ovat portissa A tässä PICmicro laitteessa. Saatoit huomata että suurimmalla osalla tapeista on vaihtoehtoisia toimintoja. Esimerkiksi nasta 25 on merkitty 'RC6/TX/CK'. Tämä viittaa nasta 25:n toimintojen olevan Rekisteri c:n bitti 6, tai sisäisen sarjaväylän lähetyspinni TX tai sisäisen sarjaväylän kellonasta CK. Flowcode huolehtii kaikista sisäisistä asetuksista, jotka määräävät liityntöjen toiminnot. 14

15 Datan ulostulot Kuten jo monta kertaa todettua, PICmicro on digitaalinen laite. Sen ulostulosignaali on digitaalista. Useimmissa tapauksissa sitä käytetään kytkemään jotain päälle tai pois päältä esim. 0 = off (0V) ja 1 = on (+5V). Oletetaan, että asetimme portin B ulostuloportiksi tai annoimme Flowcoden asettaa sen. Portissa B on kahdeksan nastaa, joten voimme kytkeä kahdeksan laitetta päälle ja pois päältä. On tärkeää suunnitella kuinka yhdistämme nämä laitteet, sillä muuten ne saattavat toimia päinvastaisella tavalla. Seuraavassa kaaviossa näkyy kahdeksan LEDiä kytkettyinä porttiin B. Huomaa, että neljä punaista LEDiä on kytketty positiivisen virtalähteen ja portti B:n nastojen väliin. Tässä tapauksessa PICmicro nielee virtaa. Vihreät LEDit on kytketty nastojen ja 0V:n väliin. Tässä tapauksessa PICmicro tuottaa virtaa. Kukin punaisista LEDeistä syttyy kun sen nastassa on alhainen jännitetaso, eli toisin sanottuna kun sen ulostulona on 0. Kukin vihreistä LEDeistä syttyy kun sen nastassa on korkea jännitetaso, ulostulona 1. Portit kykenevät päästämään vain rajallisen määrän virtaa. Tyypillisesti yksi ulostulonasta voi päästää enintään 25mA. Tämä on riittävästi käyttämään LEDejä ja summereita suoraan, mutta voimakkaampaa virtaa vaativat laitteet tarvitsevat ylimääräisiä kytkentöjä jotta niitä voisi käyttää PICmicrolla. Palaamme näihin asioihin myöhemmin. Huomaa, että koko portin maksimivirta on noin 100mA, joten kaikki nastat eivät voi päästää 25mA samanaikaisesti. Flowcodessa on simulaatiotila, joka mahdollistaa näyttää LEDeillä mikrokontrollerin nastojen tiloja kun niitä käytetään ulostuloina. LED simulaatio toiminto olettaa että virta on peräisin PICmicro laitteesta kuten vihreät LEDit yllä olevassa kaaviossa. 15

16 Virtarajoitukset Jossain vaiheessa saatat kiinnostua PICmicron nastojen teknisistä tiedoista, kun niitä käytetään digitaalisina sisäänmenoina, analogisina sisäänmenoina, tai digitaalisina ulostuloina (harvemmin analogisina ulostuloina, PIC16F877a ei kykene suoraan tuottamaan analogista signaalia ulostulona). On varsin tärkeää olla tietoinen laitteen rajoitteista käytettäessä ulostuloihin kytkettyjä laitteita. Seuraavat rajoitukset on syytä pitää mielessä joka hetki. Näiden arvojen ylittäminen lyhyeksikin aikaa voi aiheuttaa pysyvää vahinkoa PICmicrolle. Maksimivirta missä tahansa I/O nastassa Maksimivirta porteissa PORTA + PORTB + PORTE Maksimivirta porteissa PORTC + PORTD Maksimivirta VSS (Gnd) nastasta Maksimivirta VDD (5V) nastaan : 25mA : 200mA : 200mA : 300mA : 250mA Onneksi tällä kurssilla käytetyissä E-blockeissa on virtaa rajoittavat vastukset jotka suojelevat PICmicro laitetta. Käytettäessä prototyyppilevyä tätä suojaa ei ole ja on pidettävä huolta siitä, ettei tee vahinkoa laitteelleen. 16

17 Datan tallennus Elektroniset (ali)järjestelmät, jotka varastoivat dataa, tunnetaan muisteina. Ne voivat varastoida ainoastaan digitaalista dataa eli nollia ja ykkösiä. Yksi kappale dataa varastoidaan yhteen paikkaan muistissa. Data voisi olla vaikkapa varashälyttimen purkamisohjeet tai moottorin lämpötila. Jokaisella muistipaikalla on yksinomainen osoite, numero jolla sen sijainti tunnistetaan. Tämä tarkoittaa että on mahdollista laatia muistia esittävä kartta, joka näyttää mitä dataa on varastoitu mihinkin paikkaan. Kymmenjärjestelmä Osoite Binääri Varastoitu data 0 000 11101001 1 001 00100101 2 010 10000101 3 011 11001101 4 100 01110100 5 101 00011011 6 110 11110011 7 111 10000101 Kymmenjärjestelmäversiot osoitteista on lisätty taulukkoon tekemään siitä helpommin luettava. Elektroniset järjestelmät ymmärtävät ainoastaan binäärilukuja. Tämä hyvin pieni muisti on 8-paikkainen. Huomaa, että on tavallista aloittaa numerointi nollasta! Tämän muistin täytyy käyttää 3-bittisiä binäärilukuja jakaakseen erilaiset osoitteet jokaiselle muistipaikalle. Se pystyy varastoimaan data osia jotka ovat kooltaan 8 bittiä. Kahdeksaa bittiä kutsutaan myös yhdeksi 'tavuksi' (byte, B). Esimerkin muistijärjestelmää voisi kutsua 8 x 1B muistiksi. Tietokoneissa käytetyt muistijärjestelmät ovat paljon suurempia kuin tämä. Data tallennetaan usein 32-bittisinä lukuina, mikä sallii paljon paljon suurempien lukuarvojen varastoinnin. Myös muistipaikkoja on paljon enemmän. Tyypillisen tietokoneen muistissa on nykyään yli neljännesmiljoona muistipaikkaa. 17

18 Muistityypit Elektronisia muisteja on useita eri tyyppejä, eri käyttötarkoituksiin sopivia. Ne voidaan jakaa kahteen pääryhmään: 1. Read Only Memory (ROM) - Normaalisti näitä muisteja ainoastaan luetaan ohjelman ajon aikana. Muistin sisältö ei ole haihtuvaa. (Data säilyy vaikka virransyöttö muistiin katkeaisi.) Niitä käytetään yleensä varastoimaan perusohjelmat, jotka tunnetaan 'käyttöjärjestelminä', joita tietokoneet tarvitsevat. Ryhmään kuuluu: PROM (Programmable Read Only Memory), EPROM (Erasable Programmable Read Only Memory), EEPROM (Electrically Erasable Programmable Read Only Memory) PROM sallii vain yhden talletuskerran. Se valmistetaan tyhjäksi, valmiina vastaanottamaan dataa. Data voidaan sitten 'polttaa' muistiin, mutta ainoastaan kerran. Tämän jälkeen se käyttäytyy kuin ROM -piiri jonka sisältöä voidaan lukea monta kertaa mutta ei muuttaa. EPROMin sisältö voidaan pyyhkiä kohdistamalla ultraviolettia valoa sirun yläreunassa olevan raon läpi. Uutta dataa voidaan sitten 'polttaa' muistiin. Jotkin vanhemmat PICmicro laitteet toimivat näin. EEPROM laitteet toimivat samaan tapaan kuin EPROM, paitsi että sisältö pyyhitään lähettämällä tietyn taajuista sähköistä signaalia valittuihin tappeihin. 'Flash' muisti on yksi EEPROMin muoto, laajasti käytössä digitaalisissa kameroissa, muistitikuissa ja konsolipelilaitteissa. 2. Random Access Memory (RAM) - RAM sallii sekä luku- että kirjoitusoperaatiot ohjelman ajon aikana. Sisältö on haihtuvaa ja häviää heti kun virtalähde irrotetaan. (Poikkeuksen tekee NVRAM, Non-Volatile RAM, missä muistilaitteeseen voi kuulua akku sisällön säilyttämiseksi, tai siihen voi kuulua EEPROM siru osana muistia varastoimaan sisältö virtakatkosten ajaksi.) Niitä käytetään usein väliaikaisena datavarastona tai ohjelmistojen muistina. 18

19 PICmicron muisti PICmicro siruilla on kolme erillistä muistialuetta - ohjelmamuisti, käyttäjän muuttujien muisti RAM, ja EEPROM. Nimet vihjaavat vahvasti alueiden käyttötarkoituksiin. Seuraava kuva esittää 18-nastaisen 16F84:n muistin järjestystä: Ohjelmamuistia (EPROM) käytetään varastoimaan ohjelmia! Joissakin PICmicroissa, kuten 16F84:ssä, tämä muisti käyttää FLASH teknologiaa. Tämä tarkoittaa että se voidaan ohjelmoida ja tyhjentää monta kertaa. Vanhemmat PICmicrot käyttävät PROM:ia ohjelmamuistinaan ja monet näistä voidaan ohjelmoida vain kerran. Datamuistia käytetään varastoimaan dataa! Osa siitä käyttää RAM:ia ja osa EEPROMia. EEPROMin avulla voimme säilyttää tärkeää dataa vaikka järjestelmän virtalähde kytkettäisiin irti. Oletetaan esimerkiksi että PICmicro on osa lämpötilanhallintalaitetta joka pitää hautomakoneen määrätyssä lämpötilassa. Voi olla järkevää tallentaa vaadittu lämpötila-arvo EEPROMiin niin että sitä ei tarvitse syöttää järjestelmään joka kerta kun hautomakone käynnistetään. Esitetty 16F84 on verrattain pieni laite. 16F877:ssä on 8192 sanan ohjelmamuisti (jokaisessa sanassa on 13 bittiä), 368 tavua käyttäjän RAMia ja 256 tavua EEPROMia. 19

20 Mikä on ohjelma? Mikrokontrollerit ovat ohjelmoitavia laitteita. Ne tekevät täsmälleen niin kuin ohjelma käskee, eikä mitään muuta. Ohjelma on lista käskyjä sekä niiden toteuttamiseen mahdollisesti tarvittavaa dataa. Valitettavasti mikrokontrollerit eivät ymmärrä kieltämme. Ne ymmärtävät ainoastaan numeroita. Siinäpä pulma. Tähän on kaksi ratkaisua joista molempiin tarvitaan jonkinlainen kääntäjä. Voimme kirjoittaa ohjelman ymmärtämällämme kielellä ja käännättää sen sitten numeroiksi. Toisaalta voimme itse kääntää ajatuksemme kielelle, joka on hyvin lähellä numerokoodia ja kirjoittaa ohjelman sillä. Tällaista kieltä kutsutaan 'assembleriksi'. Siitä on helppo, muuntaa ohjelma numeeriseksi koodiksi jota mikrokontrolleri ymmärtää. Nämä kaksi ääripäätä tunnetaan korkean tason ohjelmointikielenä (lähellä ihmiskieltä) tai matalan tason kielenä (assembler). Ensimmäinen tapa on yleensä ohjelmoijan kannalta nopeampi ja helpompi, mutta ohjelman ajaminen kestää kauemmin, koska se täytyy kääntää mikrokontrollerille. Toinen tapa on paljon hitaampi ohjelmoijan kannalta, mutta lopputulos on hyvin nopeasti ajettavissa. Edellinen saattaa vaikuttaa monimutkaiselta. Niin se onkin, mutta älä huolestu: Flowcode käyttää vuokaavioita: helpointa ja korkeimman tason ohjelmointia. 20

21 Flowcode-prosessi Flowcode tarjoaa helpon tavan ohjelmoida PICmicroilla, kuten tulet huomaamaan. Kun vuokaavio on suunniteltu tietokoneen ruudulla, paina nappulaa niin ohjelmisto kääntää sen numeeriseksi koodiksi. Tähän liittyy prosessi, joka on syytä ymmärtää: Flowcode vie ohjelman useiden prosessien läpi ennen kuin se lähetetään PICmicro -laitteeseen: ensiksi vuokaavio muunnetaan C-kieliseksi koodiksi, sitten Assembleriksi, ja lopulta heksadesimaaliluvuiksi eli 'heksoiksi'. PICmicro -laite 'ymmärtää' heksakoodia. Tämä koodi lähetetään sitten PICmicroon. Tätä varten Flowcode ajaa apuohjelmaa nimeltä 'PPP'. Valitsemalla CHIP...CONFIGURE Flowcode-valikosta näet PPP-ohjelman. PPP hallitsee tiettyjä PICmicron asetuksia asettamalla laitteen sisäisten rekisterien arvoja ohjelmaa ladattaessa. Heksakoodi 'poltetaan' PICmicron ohjelmamuistiin. Muista, että ohjelmamuistina käytetään EPROM-muistia. Tämä tarkoittaa, että ohjelma ei häviä kun PICmicro -siru poistetaan ohjelmointilaitteesta, minkä ansiosta sitä voidaan käyttää piirissä. Toisaalta EPROM-tyyppisen muistin käyttö tarkoittaa että PICmicroa voidaan käyttää uudelleen ylikirjoittamalla ohjelmamuisti. 21

22 Ohjelman ajaminen Heti kun PICmicroon kytketään virta, ja siinä on kello, se alkaa ajaa EPROMiin tallennettua ohjelmaa. PICmicron reset-nappulan painaminen aloittaa ohjelman suorituksen alusta. PICmicron ajo pysähtyy kun ohjelmaa ladataan, mutta heti kun se on siirretty muistiin, PICmicro käynnistyy uudelleen ja ajaa siihen ladatun ohjelman. Erityyppisiä PICmicroja PICmicro -laitteita on saatavilla laaja kokoelma, yksinkertaisesta 16F84:stä isompiin ja monimutkaisempiin PICmicroihin kuten 40-nastainen 16F877. Eri PICmicroilla voi olla eri määrä portteja tai I/O tappeja, analogisia sisäänmenoja, enemmän muistia, tai kehittyneitä sarjaliitäntämahdollisuuksia kuten RS232 tai SPI-väyliä joista opitaan lisää muissa kappaleissa. On aika työ päättää, mitä PICmicro -laitetta käyttää missäkin projektissa. Tällä kurssilla käytetään 16F877A-laitetta. Kyseessä on 40-nastainen PICmicro jossa on monia sisäisiä piirejä (kuten A/D muunnin ja sarjaportti). 22

23 16F877-arkkitehtuuri Käyttäessäsi 16F877A:ta näissä tutoriaaleissa on tärkeää ymmärtää hieman enemmän siitä, miten se toimii ja kuinka sitä käytetään. Tässä osiossa nähdään, mitä tappeja 16F877:ssä on käytettävissä ja mitä multiprogrammerin liittimiä ne käyttävät. Huomaa että E-blocks -osiosta löytyy tietoa siitä, miten multiprogrammerin D-liittimiä kytketään. Perinteisessä ohjelmointioppaassa näillä kohdin esiteltäisiin joitakin yksityiskohtia PICmicron monista sisäisistä piirilohkoista. Tätä tietoa tarvittaisiin kirjoittaessa ohjelmia PICmicrolle C- tai assembly-koodina. Koska Flowcode pitää puolestasi huolen PICmicron arkkitehtuuriin liittyvistä yksityiskohdista, emme käsittele tätä aihetta tässä materiaalissa. Tarvitaan kuitenkin ymmärrystä PICmicron sisäänmeno- ja ulostulokytkennöistä ja käytettävissä olevan muistin määrästä. Näitä aiheita käsitellään tässä osiossa. Portti A Portti A:ssa on käytössä Vain 6 nastaa 16F877A laitteessa RA0-RA5 voidaan käyttää digitaalisina sisäänmenoina RA0-RA5 voidaan käyttää digitaalisina ulostuloina AN0-AN4 voidaan käyttää analogisina sisäänmenoina (=5 analogista sisäänmenoa portissa A) Portin A nastat on aseteltu 16F877A mikrokontrollerissa kuvan mukaisesti 23

24 Portti A:n nastat on kytketty 9-nastaiseen D-liittimeen multiprogrammerilevyn portissa A Tämä portti on kytketty PICmicron muihin sisäisiin piireihin 8-bittisellä väylällä. 24

25 Portti B Portti B:ssä kaikki 8 nastaa ovat käytössä 16F877A -laitteessa RB0-RB7 voidaan käyttää digitaalisina sisäänmenoina RB0-RB7 voidaan käyttää digitaalisina ulostuloina RB0 voi toimia ulkoisen keskeytyksen nastana RB4-RB7 voivat toimia ulkoisena porttikeskeytyksenä Portin B nastat on aseteltu 16F877A mikrokontrollerissa kuvan mukaisesti 25

26 Portti B:n nastat on kytketty 9-nastaiseen D-liittimeen multiprogrammerilevyn portissa B Tämä portti on kytketty PICmicron muihin sisäisiin piireihin 8-bittisellä väylällä. 26

27 Portti C Kaikki Portti C:n 8 nastaa ovat käytettävissä 16F877A -laitteessa RC0-RC7 voidaan käyttää digitaalisina sisäänmenoina RC0-RC7 voidaan käyttää digitaalisina ulostuloina PWM (Pulse Width Modulation) on mahdollinen kytkentä RC1:ssä ja RC2:ssa Portti C sisältää myös USARTin (Universal Synchronous - Asynchronous Receiver Transmitter) sarjaliikennettä varten Portin C nastat on aseteltu 16F877A mikrokontrollerissa kuvan mukaisesti 27

28 Portti C:n nastat on kytketty 9-nastaiseen D-liittimeen multiprogrammerilevyn portissa C Tämä portti on kytketty PICmicron muihin sisäisiin piireihin 8-bittisellä väylällä. 28

29 Portti D Kaikki Portti D:n 8 nastaa ovat käytössä 16F877A -laitteessa RD0-RD7 voidaan käyttää digitaalisina sisäänmenoina RD0-RD7 voidaan käyttää digitaalisina ulostuloina Portin D nastat on aseteltu 16F877A mikrokontrollerissa kuvan mukaisesti 29

30 Portti D:n nastat on kytketty 9-nastaiseen D-liittimeen multiprogrammerilevyn portissa D Tämä portti on kytketty PICmicron muihin sisäisiin piireihin 8-bittisellä väylällä. 30

31 Portti E Portti E:ssä on käytössä vain 3 nastaa 16F877 -laitteessa RE0-RE2 voidaan käyttää digitaalisina sisäänmenoina RE0-RE2 voidaan käyttää digitaalisina ulostuloina AN5-AN7 voidaan käyttää analogisina sisäänmenoina (= 3 analogista sisäänmenoa portissa E) Portin E nastat on aseteltu 16F877A mikrokontrollerissa kuvan mukaisesti 31

32 Portti E:n nastat on kytketty 9-nastaiseen D-liittimeen multiprogrammerilevyn portissa E Tämä portti on kytketty PICmicron muihin sisäisiin piireihin 8-bittisellä väylällä. 32

33 Muisti 15F877:ssä Flash vai EPROM RAM EPROM (jota joskus kutsutaan 'Flashiksi') on muisti johon ohjelmat talletetaan. Kirjoitettu ohjelma 'käännetään' tietokoneella binäärikoodiksi ja ladataan PICmicron Flash-muistiin. Flash-muistia käytetään myös muistitikuissa ja MP3-soittimissa. Sitä voidaan lukea ja kirjoittaa ja se säilyttää datan vaikka virta katkaistaisiin. Flowcoden generoimat ohjelmarivit kertovat PICmicrolle mitä tehdä j milloin. 16F877:n Flash-muistiin mahtuu 8000 ohjelmointikäskyä. RAM on muisti johon 'muuttujat' (ohjelmassa käytetyt arvot jotka vaihtelevat ohjelman ajon aikana) talletetaan. Sisäänmenoista, ulostuloista, analogisista sisäänmenoista, laskutoimituksista jne. saatava data varastoidaan Flowcodessa yleensä muuttujiin. Tämä muisti on RAM-tyyppistä. Se tyhjenee joka kerta kun virta katkaistaan tai laite resetoidaan. 16F877A:n RAMiin mahtuu 368 tavua dataa. EEPROM EEPROM on muisti johon muuttujia voidaan varastoida pysyvästi. Tämä muisti on PROM-tyyppistä. Se säilyy vaikka virta katkaistaan tai laite resetoidaan. 16F877A:n EEPROMiin mahtuu 256 tavua dataa. Hyvin yksinkertaistettu lohkokaavio osoittamaan missä kolme muistityyppiä sijaitsevat PIC 16F877:n arkkitehtuurissa: 33

34 ALU Hyvin yksinkertaistettu lohkokaavio osoittamaan missä ALU sijaitsee PIC 16F877:n arkkitehtuurissa: ALU: ALU (aritmeettis-looginen yksikkö) on PICmicron sydän. Kaikki kulkee tämän yksikön läpi. Flash-muistissa sijaitseva ohjelma kertoo ALU:lle mitä tehdä. ALU voi lähettää ja vastaanottaa dataa kaikilta PICmicron eri lohkoilta ja porteilta 8-bittisen dataväylän kautta. ALU tarvitee 4 ulkoisen oskillaattorin kellopulssia suorittamaan yhden kokonaisen käskyn. ALU toiminta on oikeastaan hyvin monimutkaista. Onneksi Flowcode-ohjelmoijien ei tarvitse tietää tästä enempää. 34

35 Timer 1 Hyvin yksinkertaistettu lohkokaavio osoittamaan missä TIMER1 sijaitsee PIC 16F877:n arkkitehtuurissa: TMR1: Tämän keskeytysajastimen tehtävä on tuottaa PICmicrolle tarkkaa tietoa ajasta. Se on kellotettu järjestelmäkellon tai RC0:aan liitetyn ulkoisen kellon avulla. Tämä järjestelmäkello kulkee tarkalleen 4 kertaa hitaammin kuin ulkoinen oskillaattorikello. Sekä ulkoinen- että järjestelmäkello voidaan jakaa 1:lää, 2:lla, 4:llä tai 8:lla konfiguroimalla TMR1:n esijakaja Flowcodessa. Tämä jaettu kello laittaa TMR1:n kasvattamaan TMR1-rekisteriä. TMR1-rekisteri on 8-bittinen rekisteri johon tulee ylivuoto sen saavuttaessa arvon 256. Tarkalleen hetkellä, jona ylivuoto tpahtuu, TMR1 generoi keskeytyksen ja TMR1-rekisteri nollataan. Tämä TMR1:n keskeytys pysäyttää pääohjelman suorituksen välittömästi ja aloittaa TMR1-makron suorituksen. Kun TMR1-makro on päättynyt, pääohjelma jatkaa kohdasta johon se jäi. Esimerkki: Ulkoinen oskillaattorikello = Järjestelmäkello = Asetettu esijakaja 8:ksi = /4: 4.915.200 Hz XTAL: 19.660.800Hz /8 : 614.400 Hz Ylivuoto kun TMR1 = /256: 2400 Hz Johtopäätös: Tässä tilanteessa TMR1 keskeyttää pääohjelman ja suorittaa TMR1-makron 2400 kertaa sekunnissa. 35

36 Timer 0 Hyvin yksinkertaistettu lohkokaavio osoittamaan missä TIMER0 sijaitsee PIC 16F877:n arkkitehtuurissa: TMR0: Tämän keskeytysajastimen tehtävä on tuottaa PICmicrolle tarkkaa tietoa ajasta. Se on kellotettu järjestelmäkellon tai RA4:ään liitetyn ulkoisen kellon avulla. Tämä järjestelmäkello kulkee tarkalleen 4 kertaa hitaammin kuin ulkoinen oskillaattorikello. Sekä ulkoinen- että järjestelmäkello voidaan jakaa 1:lää, 2:lla, 4:llä, 8:lla, 16:lla, 32:lla, 64:llä, 128:lla tai 256:lla konfiguroimalla TMR0:n esijakaja Flowcodessa. Tämä jaettu kello laittaa TMR0:n kasvattamaan TMR0-rekisteriä. TMR0-rekisteri on 8-bittinen rekisteri johon tulee ylivuoto sen saavuttaessa arvon 256. Tarkalleen hetkellä, jona ylivuoto tpahtuu, TMR0 generoi keskeytyksen ja TMR0-rekisteri nollataan. Tämä TMR0:n keskeytys pysäyttää pääohjelman suorituksen välittömästi ja aloittaa TMR0-makron suorituksen. Kun TMR0-makro on päättynyt, pääohjelma jatkaa kohdasta johon se jäi. Esimerkki: Ulkoinen oskillaattorikello = XTAL: 19.660.800Hz Järjestelmäkello = /4: 4.915.200 Hz esijakaja asetettu 256:ksi = /256: 19200 Hz Ylivuoto kun TMR0 = /256: 75 Hz Johtopäätös: Tässä tilanteessa TMR0 keskeyttää pääohjelman ja suorittaa TMR0-makron 75 kertaa sekunnissa. 36

37 RB0 -keskeytys Hyvin yksinkertaistettu lohkokaavio osoittamaan missä RB0 sijaitsee PIC 16F877:n arkkitehtuurissa: RBO Ulkoinen keskeytys: Logiikkatason muutos RB0:ssa voidaan konfiguroida tuottamaan keskeytys. Se voidaan konfiguroida Flowcodessa reagoimaan joko nousevaan tai laskevaan reunaan RB0:ssa. Ollessaan asetettu reagoimaan nousevaan reunaan ja RB0:ssa tulee nouseva reuna: Tämä keskeyttää pääohjelman suorituksen välittömästi. RB0:aan liittyvä makro suoritetaan. Kun makro on suoritettu, pääohjelman suoritus jatkuu siitä mihin se jäi. Näin tapahtuu joka kerta kun nastassa RB0 havaitaan nouseva reuna. 37

38 Portti B -keskeytys Hyvin yksinkertaistettu lohkokaavio osoittamaan missä Portti B sijaitsee PIC 16F877:n arkkitehtuurissa: PORTB ulkoinen keskeytys: Logiikkatason muutos joko RB4:ssä tai RB5:ssä tai RB6:ssa tai RB7:ssä voidaan konfiguroida tuottamaan sama yksittäinen keskeytys. Ei voida konfiguroida reagoimaan joko nousevaan tai laskevaan reunaan. Sen laukaisee sekä nousevat että laskevat reunat. Sen ollessa konfiguroituna Flowcodessa ja tason muutos tapahtuu missä tahansa neljästä Portti B:n sisäänmenonastasta: Tämä keskeyttää pääohjelman suorituksen välittömästi. Portti R:hen liittyvä makro suoritetaan. Kun makro on suoritettu, pääohjelman suoritus jatkuu siitä mihin se jäi. Näin tapahtuu joka kerta kun jossakin Portti B:n neljästä MSBstä havaitaan tason muutos. 38

39 A/D muunnos Hyvin yksinkertaistettu lohkokaavio osoittamaan missä A/D-muunnin sijaitsee PIC 16F877:n arkkitehtuurissa: A/D: Tässä 16F877A PICmicro mikrokontrollerissa on 8 nastaa joissa on A/D ominaisuus. Tässä PICmicro -ohjaimessa on vain yksi 10-bittinen A/D-muunnin. Tästä johtuu, että näitä 8 analogista sisäänmenoa ei voida lukea yhtäaikaisesti. Sisäänrakennettu analogikytkin ratkaisee tämän ongelman. Flowcodessa voi valita mitä kahdeksasta analogisesta sisäänmenosta haluaa seurata. Saatuaan käkyn, analogikytkin tulee asetetuksi oikeaan sisäänmenoon ja analoginen syöte muunnetaan 10-bittiseksi binääriarvoksi. Flowcodessa voi valita tästä 10-bittisestä arvosta käytettäväksi vain 8 MSBtä käyttämällä 'ReadAsByte' -käskyä. Voi myös valita käyttävänsä kaikki 10 bittiä 'ReadAsInt' -käskyllä. 10 bittiä täyttävät sitten 10 LSBtä valitusta 16-bittisestä kokonaislukumuuttujasta. Tämän jälkeen voi valita luettavaksi toisen analogisen sisääntulon. 39

40 Väylät Hyvin yksinkertaistettu lohkokaavio osoittamaan PIC 16F877:n arkkitehtuurin väylärakenne: Väylät: PICmicro on tyyypillinen Harvard-tyyypin mikrokontrolleri. o Tämä tarkoittaa, että datalle ja käskyille on erilliset väylät. Dataväylä on 8 bittiä leveä ja yhdistää kaikki laitteen lohkot ja porttit. Käskyväylä on 14 bittiä leveä ja kuljettaa 14 bittiä pitkiä käskyjä ohjelmamuistista ALUun. 40

41 Oskillaattorit Jokainen mikrokontrolleri tarvitsee kellosignaalin toimiakseen. Sisäisesti kellosignaali ohjaa laitteen toimintanopeutta ja jokainen kellosykli synkronoi sisäisten laitteistolohkojen toiminnat. Sirun kellotusta koskien on tehtävä useita päätöksiä ja ennen ohjelman lataamista PICmicroon täytyy ymmärtää valintamahdollisuudet. Tässä osiossa käsittelemme tarkemmin kellotusta ja valintoja joita voi tehdä. Kellopiiri PICmicro mikrokontrollereita voidaan kellottaa useilla tavoilla. Tällä kurssilla käsittelemme pääosin seuraavia menetelmiä: Kidekello RC-kello Sisäinen kello PICmicron multiprogrammeri tukee näistä menetelmistä kaikkia. Seuraavasta piiristä näkyy kuinka kellomoodin kytkimet multiprogrammerissa asettavat eri piirejä OSC1 ja OSC2 nastoihin PICmicro -laitteessa. PICmicron oskillaattorinastat ovat OSC1 (Clock in) ja OSC2 (Clock out) nastat. On mahdollista kytkeä sisäisesti OSC1 ja OSC2 nastoihin eri piirejä. Jokainen sisäinen piiri luo kellosignaalin oskillaattorinastoihin kun oikea ulkoinen piiri asetetaan OSC1:een ja OSC2:een. Tämä mahdollistaa värähtelytaajuuden määrittämisen ulkoisten komponenttien avulla. Kytkin SW2 määrää, onko liitettynä RC-piiri vai kide-piiri. Kun SW2 on RC-asennossa (kaaviossa vasemmalla, multiprogrammerilevyllä RC) niin vastus-kondensaattorin arvot määräävät värähtelynopeuden. SW1 määrää RC-piirin värähtelynopeuden se hidastaa värähtelyä lisäämällä paljon suuremman kondensaattorin RC-verkkoon. Kun SW2 on kide-asennossa (kaaviossa oikealla, multiprogrammerilevyllä XTAL) niin taajuuden määrää kiteen arvo. Oletusarvoisesti multiprogrammerin kanssa toimitettavan kiteen nopeus on 19,660,800Hz. (Tästä arvosta lisää myöhemmin.) 41

42 Miksi eri moodeja? Värähtelyn taajuus ei ole kovin tärkeää yksinkertaisille mikrokontrollerisovelluksille jotka yleensä toimivat pienellä nopeudella. Kehittyneemmille sovelluksille värähtelyn taajuus on hyvin tärkeää sillä se määrää kuinka järjestelmät kommunikoivat keskenään. Monet elektroniset järjestelmät sisältävät useita prosessoreja jotka kommunikoivat yhdessä käyttämällä sarjamuotoisia viestintäprotokollia - esimerkiksi RS232 protokollaa. Sarjamuotoista viestintää käyttävissä järjestelmissä nollien ja ykkösten vaihtumistahti linjalla on saatettava samaksi kaikkien osapuolien osalta ennen kuin kommunikointia voi tapahtua: jos osapuolet toimivat eri nopeuksilla tulee kommunikaatiosta mahdotonta. Kommunikaation nopeutta nimitetään usein 'biteiksi sekunnissa', tai 'Baudeiksi'. Multiprogrammerin kide on kellotaajuudeltaan 19.660800MHz. Mistä tämä luku tulee? Kyseinen taajuus voidaan vähentää peräkkäisillä binäärilaskureilla standardiksi Baudinopeudeksi jota käytetään järjestelmien väliseen kommunikointiin. Tässä tapauksessa peruskellotaajuus jaettuna kahdella potenssiin10 on 19200. 19200 Baudia on kansainvälisesti tunnustettu standardi sarjayhteysnopeus. Matemaattisesti: 19660800 / 2^10 = 19200 RC-moodi on lisätty osittain historiallisista, osittain taloudellisista syistä. Uudenaikaiset PICmicro -laitteet voidaan asettaa kellottamaan itsensä sisäisesti ilman mitään ulkoisia komponentteja, mutta tämä on verrattain uusi ominaisuus mikrokontrollereissa. RC-moodi esiteltiin halpana vaihtoehtona kidekelloille. Kide ja kaksi kondensaattoria jotka tarvitaan laittamaan se värähtelemään, on kalliimpi ratkaisu kuin yhden vastus-kondensaattorin verkko. Niinpä RC-verkko moodi lisättiin säästämään elektroniikkavalmistajat kiteiden valmistuskustannuksilta. Tämä tekniikka toimii hyvin sovelluksille jotka eivät ole ajastuksen suhteen kriittisiä. RC-moodi on meille hyödyllinen koska sen avulla PICmicro voidaan kellottaa vain muutaman Hertzin nopeuteen. Kelloasetukset On syytä varmistaa, että mikrokontrolleriin on kytkettynä oikea kellopiiri. Ensimmäisissä harjoitustehtävissä käytetään RC-kellotusmenetelmää. Varmista, että SW2 on multiprogrammerissa RC-asennossa. SW1 tulee laittaa SLOW-asentoon. Tämä kellottaa PICmicro -laitteen noin 100Hz:iin: se on hyvin hidas muutta siitä on helppo nähdä ohjelman jokainen vaihe. Seuraavaksi tulee tehdä tarvittavat asetukset Flowcodeen jotta ohjelma toimisi. Kun Flowcode lataa ohjelman PICmicroon se muuttaa sisäisiä kelloasetuksia ja piiristöä vastaamaan multiprogrammer -levylle asetettua ulkoista kellopiiriä. Tämän voi tehdä valitsemalla CHIP...CONFIGURE Flowcode-valikosta, mikä avaa tämän ikkunan: 42

Huomaa, että Flowcode muistaa ohjelmoitavan laitteen olevan 16F877A. Tässä ikkunassa voi valita käyttöön joko ulkoisen RC-järjestelmän tai kidejärjestelmän. Valitse RC ja käännä Watchdog timer pois päältä. Ruudun pitäisi näyttää tältä: 43 Valitse OK. Vain asiantuntijoille Aloittelevat ohjelmoijat voivat jättää tämän osan väliin. Kokeneilla käyttäjillä voi olla mielessään monia kysymyksiä siitä, kuinka Flowcoden voisi laittaa valitsemaan muita oskillaattorivaihtoehtoja joita PICmicro tukee. Vastaus on painaa Advanced -nappulaa CHIP...CONFIGURE valintaruudussa avaamaan seuraavanlaisen ikkunan: 43

44 Tässä kuvassa OSCILLATOR SELECTION -valikko on valittuna ja nähtävillä on 6 eri kellotusmoodia asianmukaiselle sirulle tässä tapauksessa 16F88:lle. Kukin kellotusmoodi vaatii hieman erilaisen piirin PICmicro -laitteeseen magnetisoimaan sisäisen tai ulkoisen oskillaattoripiirin. Piiri on toteutettu valikoimana kytkimiä PICmicron sisällä. Näiden kytkinten tilat määrätään arvolla, joka kirjoittuu sisäiseen rekisteriin ohjelmointiprosessin aikana. Tämän ikkunan kautta pääsee muokkaamaan näitä ominaisuuksia. Laitteen ohjekirjasta löytyy seuraavaa tietoa: Kellotusmoodi EXTRC as Clock Out EXTRC as port IO INTRC as Clock Out INTRC as port IO EXTCLK as port IO LP XT HS Selitys Kello ulkoisena vastus-kondensaattorina nastassa OSC1. Nastassa OSC2 on kello / 4. Kello ulkoisena vastus-kondensaattorina nastassa OSC1. Nasta OSC2/RA4 on konfiguroitu I/O linja RA4:ksi. Kello sisäisinä RC komponentteina. Nastassa OSC1 on RA5, ja nastassa OSC2 on kello / 4. Kellosisäisinä RC komponentteina. Nastat OSC1 ja OSC2 I/O linjoina RA4 ja RA5. Ulkoinen kello ja OSC2 käytettävissä I/O linja RA4:nä. Matalavahvistuksinen kide tai keraaminen resonaattori Keskivahvistuksinen kide tai keraaminen resonaattori Korkeavahvistuksinen kide tai keraaminen resonaattori Kelloasetuksia täytyy muokata kahdessa paikassa: Flowcodessa CHIP...CONFIGUREn kautta, sekä laitteistotasolla. Tässä on vaarana sekaannus: jos PICmicro -laite konfiguroidaan yhdenlaiselle kellopiirille, mutta kytketään toisenlaiseen ulkoiseen piiriin, ei PICmicro -laite oskilloi ja ohjelma ei näytä toimivan. Jos ohjelma ei toimi niin tarkista ensimmäiseksi kelloasetukset sekä laitteessa että Flowcodessa. Joitakin sääntöjä: HP488 kehityslevyn käyttäjät: Kun oskillaattorivalinta on PPP HS:ssä (tai XTAL yksinkertaisessa konfiguraatioruudussa) niin varmista että SW2 HP488 -levyllä on laitettu XTAL-asentoon. Kun oskillaattorivalinta on PPP EXTRC:ssä Clock Out (Tai RC yksinkertaisessa konfiguraatioruudussa) niin varmista että SW2 HP488 -levyllä on laitettu RC-asentoon. EB006 multiprogrammerlevyn käyttäjät: Kun oskillaattorivalinta on PPP HS:ssä (tai XTAL yksinkertaisessa konfiguraatioruudussa) niin varmista että S2 EB006-levyllä on laitettu XTAL-asentoon. Kun oskillaattorivalinta on PPP EXTRC:ssä Clock Out (Tai RC yksinkertaisessa konfiguraatioruudussa) niin varmista että S2 EB006-levyllä on laitettu RC-asentoon. Laita lisäksi Watchdog timer pois päältä. Huomaa, että RC-moodissa täytyy myös asettaa Fast/Slow -kytkin, mutta tämä ei riipu mistään asetuksista PPP:ssä. 44

45 E-Blocks levy Tässä osiossa selitetään, mitä E-blockit ovat ja niitä voidaan käyttää rakentamaan nopeasti monia elektronisia järjestelmiä. Erityisesti tässä opitaan: Mitkä ovat kunkin E-blockin toiminnot Miltä eri E-blockit näyttävät E-blockien sisäänmenot E-blockien ulostulot Kunkin E-blockin piirin toiminnot Miten E-blockeista kootaan toimivia järjestelmiä E-blockit ovat pieniä piirilevyjä jotka koostuvat yhteen liitettävistä elektroniikkalohkoista. E-blockeja on kahta tyyppiä: Upstream-levyt 'Upstream' on tietotekniikan termi jolla tarkoitetaan, että tämä levy hallitsee järjestelmän tiedonvälitystä. Upstream-levyt ovat yleensä jonkinlaisia ohjelmointilaitteita. Laitetta jossa on 'älykkyyttä' ja joka pystyy määräämään väylässä tapahtuvan tiedonsiirron suunnan voidaan ajatella 'upstream' laitteena. Esimerkkejä ovat mikrokontrollerilevyt ja PLD-levyt. Laitetta joka vastaa näihin muutoksiin ja jonka käyttäytymisen määrää toinen laite voidaan ajatella 'downstream' laitteena. Esimerkkejä näistä ovat LED-levyt, RS232-levyt jne. 45

46 Downstream-levyt Downstream-levyt ovat upstreamlevyn ohjauksessa mutta tieto voi yhtä hyvin siirtyä niiden välillä kumpaan suuntaan tahansa. E-Block projektit Upstream- ja downstreamlevyjä voidaan liittää yhteen muodostamaan valmis elektroniikkajärjestelmä kuten tämä täysin toimiva kannettava puhelin: E-blockit ovat yhteensopivia monien antureiden ja lisävarusteiden kanssa, mikä mahdollistaa hyvin moninaisten järjestelmien rakentamisen. Tässä on joitakin esimerkkejä: 46

47 Tässä kuvassa on ElectroCardioGram (ECG) järjestelmä jota voidaan käyttää näyttämään sydämenlyöntikäyriä PC: ruudulla. Järjestelmä koostuu seuraavista osista: PICmicro multiprogrammeri, ECG-antureilla varustettu anturilevy, LCD-näyttö, numeronäppäimistö sekä RS232-levy jolla muodostetaan yhteys PC:een. Tämä on elektroninen (sala)kuuntelulaite joka käyttää matkapuhelintekniikkaa. Pieni puhelinlevy sisältää mikrofonin ja vahvistimen joka antaa syötteen SIM-kortilliseen Sony GSM -moduuliin. PICmicro multiprogrammeria käytetään havaitsemaan saapuva puhelu ja sitten kanavoimaan paikallinen ääni soittajalle, joka voi siten kuunnella huonetta. Numeronäppäimistö ja LCD mahdollistavat monenlaisia tapoja järjestää puhelun katkaisu ennalta määrätyllä hetkellä. 47

48 E-Blockien yhdistäminen toisiinsa E-blockit rakentuvat väyläpohjaiselle aatteelle. Jokainen E-blockin D-liitin sisältää 8 bittiä ja maan kaikkiaan 9 yhteyttä. E-blocks -järjestelmästä on tärkeää ymmärtäää mitkä E-blockit ovat upstreameja ja mitkä downstreameja koska ne käyttävät erilaista yhteyttä - upstream-laitteet käyttävät naaras D-liitimiä ja downstream-laitteet uros D-liitimiä. Tämä yhdistelmä toimii huomattavan hyvin sillä useimpien järjestelmien topologiat vativat, että upstream-laitteet liittyvät suoraan downstream-laitteisiin. Seuraava kuva esittää yhteyksiä jotka voidaan muodostaa uros- ja naarasliittimiin. Jokaisessa yhdistimessä bitti 0 on nastassa 1, bitti 7 nastassa 8, ja nasta 9 on valittu 0V:ksi. Jos kaksi upstream-laitetta täytyy yhdistää, voidaan käyttää sopivaa adapteria tai IDC-kaapelia. E-Blockien fyysiset ominaisuudet E-blockit voidaan kiinnittää metallialustaan tekemään järjestelmästä vankka. Tätä varten jokaisessa E-blockissa on 4 off 3 mm reikää 20mm välein. M3 ruuveja välikappalein voidaan käyttää kiinnittämään E-blockeja alustaan jossa on 4mm reikiä hilassa 20mm välein. E-blockien, alustan sekä D-liittimien koko on suunniteltu siten, että kaikki E-blockit voi yhdistää toisiinsa ja silti ne sopivat alustaan. 48

Alustan käyttäminen Jos konfiguroit E-blocks-järjestelmää uudelleen yhtnään tai jos haluat muiden tekevän niin, suosittelemme käyttämään teräs- tai Nylon M3 ruuveja kaikissa E-blockeissa ja että käytät metallista alustaa niiden kiinnittämiseen. Alustaan kinnitetyt E-Blockit pysyvät paikallaan ilman varmistavia ruuveja alustan takapuolella jos tosin aiot kuljettaa järjestelmää niin ysi tai kaksi mutteria pitää E-blockit varmasti paikoillaan. Alapuolisessa kuvassa näkyy 12mm ruuvit muttereilla kiinnitettynä nämä pitävät ruuvit tiukasti piirilevyssä ja sallivat sen kiinnittämisen alustaan tukevasti. 49 Parhaisiin tuloksiin pääset kiinnittämällä mutterit ja ruuvit ja sitten höllentämällä muttereita neljänneskierroksen tämä sallii ruuveille hieman liikkumavaraa PCB-rei'issä ja helpottaa niiden irrottamista alustasta. E-blockien käyttäminen pöydällä Alustaa ei tarvita E-blockien käyttämiseen ne voidaan yksinkertaisesti yhdistää pöydällä. Jokaisessa E-blocks-paketissa on neljä pientä kumijalkaa tätä varten nämä suojaavat E-blocks -levyä ja ehkäisevät oikosulkuja pöydällä mahdollisesti olevista metalliesineistä. Tässä haittapuolena on, että E-blocks -järjestelmästä ei tule helposti liikuteltavaa, ja että liittimiin kohdistuu enemmän rasitusta. 49

50 E-Blocks -piiristön suojaaminen Aina kun mahdollista, lyijytettyjä komponentteja on käytetty kaikkien E-blocks -levyjen laitteistoissa jotka voivat olla alttiita sähkövaurioille. Tämä tarkoittaa, että jos ja kun E-blocks laitteet vaurioituvat niin niiden korvaaminen on helppoa. Jotkin upstream-levyt (ARM prosessorilevyt ja FPGA levy) käyttävät pintaliitostekniikkakomponentteja joita ei voi istuttaa kantaan ja joita ei ole helppo juottaa. Näissä tapauksissa on käytetty pienempää tytärlevyä niin että jos avainlaite rikkoutuu, voit yksinkertaisesti tilata uuden tytärlevyn. Upstream-komponenttien suojaamiseksi kaikki downstream E-blockit on varustettu suojaavilla vastuksilla niin että ei ole mahdollista vahingoittaa upstream E-blockia käyttämällä vahingossa sisäänmenoa ulostulona ja saattamalla kaksi ulostulonastaa eri ulostulotasoilla kosketuksiin. On kuitenkin olosuhteita joissa on mahdollista vahingoittaa E-blockeja sähköisesti: Käytettäessä ruuviliittimiä ja puhelin/prototyyppilevyjä tulee pitää tarkkaan huolta käytetyistä levyistä ennen johtimien liittämistä Yhdistettäessä kaksi upstream-levyä gender changerilla tai IDC-kaapelilla olet yhdistämässä kaksi ulostuloa toisiinsa: jos mahdollista, käytä suojaavia vastuksia johtimille, joita yhdistät. Vaikka nykyaikaiset sirut ovat vähemmän alttiita staattisille purkauksille, on suositeltavaa varmistaa että olet maadoitettu ennen E-blockien piirilevyjen käsittelyä. Jos antistaattista ranneketta ei ole käytettävissä, niin lämpöpatterin tai muun maadoitetun laitteen koskettaminen minimoi staattisen sähkönpurkauksen todennäköisyyden. Ennen E-blocks -järjestelmän liitäntöjen muuttamista on suositeltavaa katkaista järjestelmästä virta. 50