ETT harjoitustyö: Sovitin 1-Wire-väylään



Samankaltaiset tiedostot
7.3. Oheisrautaa. DS

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

Mikrokontrollerit. Mikrokontrolleri

Piirien väliset ohjaus- ja tiedonsiirtoväylät H. Honkanen

Nokeval No Käyttöohje. Tekstinäyttö 580-ALF

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

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

Harjoitustyö - Mikroprosessorit Liikennevalot

OMNIA OPINNÄYTETYÖ AMMATTIOPISTO. Diginoppa ICTP09SLG OMNIAN AMMATTIOPISTO

A15 - Inertial Measurement Unit

Mikro-ohjain µc harjoitukset - yleisohje

Simulaattorin asennus- ja käyttöohje

PROBYTE CONTROL GSM GSM/SMS-hälytys- ja ohjauslaite

BL40A1810 Mikroprosessorit, harjoitus 1

NP-2T DL ohje. Oy Nylund-Group Ab

PROBYTE CONTROL GSM. GSM/SMS-hälytys- ja ohjauslaite. GSM Control 7/11/01 sivu 1/5

GateWay v10 Laitekuvaus

Taitaja2008, Elektroniikkalajin semifinaali

TKT224 KOODIN KOON OPTIMOINTI

MrSmart 8-kanavainen lämpötilamittaus ja loggaus, digitoija ja talletusohjelma

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

Tehtävään on varattu aikaa 8:30 10:00. Seuraavaan tehtävään saat siirtyä aiemminkin. Välipalatarjoilu työpisteisiin 10:00

Käyttöohje BTGP-38KM Bluetooth GPS Data Logger V1.0

Etälukija PR Käyttäjäopas. Global Safety & Security Solutions Oy info@globalsafety.fi. PR1000v.2

OPERAATIOVAHVISTIMET 2. Operaatiovahvistimen ominaisuuksia

Tämä on PicoLog Windows ohjelman suomenkielinen pikaohje.

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

Asennusohje. EasyLine GSM

MASSER Loader V2.00. käyttö- ja asennusohje

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

KOHINASALPAKORTTI BX58 JA RX58

smartallinone Sarjaliikenteellä toimiva releohjain

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

HARJOITUSTYÖ: LabVIEW, Kiihtyvyysanturi

Sääasema Probyte 2003

AALTO-VALVONTALAITE TST5102

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

CEM DT-3353 Pihtimittari

Sääasema Probyte JUNIOR

Tehtävä 2: Tietoliikenneprotokolla

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

S11-09 Control System for an. Autonomous Household Robot Platform

Luentaohjelma M-Bus mittareille Versio 1.77 ja uudemmat

Toinen harjoitustyö. ASCII-grafiikkaa

CO 2 -anturi. Langaton. Käyttöohje. -fi. Englannin kielestä käännetty asiakirja A001

SuperWISE II / SuperWISE SC II

Sisäilmaston mittaus hyödyntää langatonta anturiteknologiaa:

ERISTYSTASON VALVONTARELE MEV-7 (LC-7/6)

- Käyttäjä voi valita halutun sisääntulon signaalin asetusvalikosta (esim. 0 5V, 0 10 V tai 4 20 ma)

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

SuperWISE II / SuperWISE SC II

Taloyhtiön laajakaistan käyttöohje, Tekniikka: HomePNA. Käyttöjärjestelmä: Mac OS X

Käyttö- ja asennusohje. Neutron12-LAN etäluentalaite

ABB aurinkosähköinvertterit Pikaohje PMU laajennuskortti

Käyttö- ja asennusohje

1/10 E-RESULTS LITE-OHJEET ITÄRASTEILLE (JL )

Datatähti 2019 loppu

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

Projektityöt. Sami Alaiso, Jyri Lujanen 30. marraskuuta 2009

Maha Eurosystem jarrulaskentaohjelman asennusohje versio

WT KÄYTTÖOHJE WT-1010_käyttöohje_ pdf. GSM-välitin hälytysjärjestelmille

Hammastankohissin modernisointi. Heikki Laitasalmi

Asennusohje SLC-16 Tilannevalo-ohjain. ApplyLight SLC-16 Asennusohje

NP-3T DL ohje. Nylund-Group

A14-11 Potilaan mittaustiedon siirtäminen matkapuhelimeen

Käyttöohje V1.0 DCS771. USB-RS-485-muunnin

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

Käyttö- ja asennusohje

Asennus, sähkölämmityspatteri TBCE/TBRE/TCLE-02 GOLD/COMPACT/SILVER C

Yleistä. Probyte GSM-PLUG PROBYTE OY

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

KÄYTTÄJÄN KÄSIKIRJA OE/OSSPEAKER V KÄYTTÄJÄN KÄSIKIRJA OE/OSSPEAKER V.10.3 SISÄLLYSLUETTELO

- Käyttäjä voi valita halutun sisääntulon signaalin asetusvalikosta (esim. 0 5V, 0 10 V tai 4 20 ma)

Tutustu ohjelman omiin ohjeisiin valitsemalla: Ohje > Avustus.., jotka avautuvat selaimessa

TiiMi Talotekniikka. LATTIALÄMMITYS- TERMOSTAATTI TiiMi 7250TL. v. 1.0

DIMLITE Daylight. Sähkönumero Käyttöohje

AS Automaatio- ja systeemitekniikan projektityöt

Arduino ohjelmistokehitys

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Å Ä Ö

SISÄLLYSLUETTELO RC-436

Peltorobotin akselimoduulin kontrolleri

iloq P10S.10/20 -ohjelmointilaite Käyttöohje

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

HARJOITUSTYÖ: LabVIEW, Liiketunnistin

Pörisevä tietokone. morsetusta äänikortilla ja mikrofonilla

Hyvä Webaston käyttäjä! Tämä käyttöohje on tarkoitettu valtuutetun asentamon antaman käytönopastuksen

Topfieldin sarjaporttipäivitystyökalun asennus(rs232)

Ohjelmistopäivitysohje

KAUKO-OHJATTAVA OHJAUSKESKUS

Käyttöohje Firmware V1.0-V1.2 HTB230. Anturirasialähetin

ERISTYSTASON VALVONTARELE MEV-7 (LC-7 ja Kosketusnäyttö)

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

SM211 RS485 - JBUS/MODBUS mittarille SM103E. Käyttöohje

ARVI-järjestelmän ohje arvioinnin syöttäjälle

Elektroniikkalajin semifinaalitehtävien kuvaukset

Käyttö- ja asennusohje

I T. SurePath. Järjestelmä on täysin yhteensopiva kaikkien DALI hyväksyttyjen turva- ja poistumistievalojen kanssa.

Suunnittelu / Asennusohjeet

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää

Projektisuunnitelma. Radio-ohjattavan pienoismallin mekatroniikan ja ohjelmiston kehitys

Transkriptio:

ETT harjoitustyö: Sovitin 1-Wire-väylään Kalle Tuulos 22. helmikuuta 2002 Sisältö 1 Johdanto 1 2 1-Wire-väylän lyhyt esittely 1 3 Vaatimukset rakennettavalle laitteistolle 2 4 Laitteiston toteutus 2 4.1 Sovittimen laitteistototeutus................................. 3 4.2 Sovittimen mikrokontrollerin ohjelmisto........................... 5 4.2.1 Sarjaportin käsittely................................. 5 4.2.2 1-Wire-väylän käsittely................................ 6 4.3 PC:n ohjelmisto........................................ 6 4.4 Looginen rajapinta sovittimen ja PC:n välillä........................ 6 4.4.1 Viestit PC:ltä sovittimelle.............................. 7 4.4.2 Viestit sovittimelta PC:lle.............................. 7 5 Laitteiston käyttö 8 6 Havaintoja työstä 8

Kalle Tuulos ETT:n harjoitustyöt 22. helmikuuta 2002 1 1 Johdanto Tässä harjoitustyössä suunnitellaan ja rakennetaan sovitin, jonka avulla voidaan kotitietokoneessa ajettavalla ohjelmistolla käyttää 1-Wire-väylään kytkettyjä päätelaitteita. Työn perimmäisenä tarkoituksena on tutkia 1-Wire-väylän soveltuvuutta pientalon ohjausväyläksi. Väylään tultaisiin kytkemään mm. lämpötila-antureita ja releohjaimia. Kytkettävien oheislaitteiden yhteismäärä on välillä 50... 100. Rakennettavalla sovittimen prototyypillä tullaan tutkimaan mm. sen suorituskykyä ja luotettavuutta. Eräs tärkeä selvityskohde on sovittimen mikroprosessorin ohjelmakoodin koko ja RAM-muistin tarve. Prototyypillä voidaan oskilloskooppia käyttäen tutkia myös väylällä kulkevien signaalien aaltomuotoja. Niiden oikeamuotoisuus on erittäin tärkeää 1-Wire-väylän luotettavuuden kannalta. Tämä ei enää kuitenkaan kuulu tämän työn alueeseen. Tässä työssä käytetään päätelaitteina kahta lämpötila-anturia, joiden tyyppi on DS18S20. Näiden antureiden mitta-alue on -55... +125 C. Sekä sovittimen sekä PC-ohjelmiston lähdekoodit ovat saatavilla osoitteessa: http://www.tuulos.net/kalle/studies/onewire_sovitin.html 2 1-Wire-väylän lyhyt esittely 1-Wire-väylä (katso kuva 1) on tiedonsiirtoväylä, jossa väyläohjain kommunikoi yhtä datalinjaa ja yhteistä maatasoa käyttäen yhden tai useamman päätelaitteen kanssa. Päätelaitteet voivat ottaa tarvitsemansa energian datalinjasta, joten ne eivät välttämättä tarvitse erillistä käyttöjännitteen syöttöä. Miltei kaikissa päätelaitteissa on kuitenkin valmius erillisen jännitteensyöttöön käyttöön. Päätelaitteet kytketään 1-Wire-väylään rinnan. Jokaisella päätelaitteella on 8-bittinen perhekoodi, 48-bittinen yksilöllinen koodi ja 8-bittinen tarkistussumma. Näistä saatua 64 bittistä tunnistetta kutsutaan päätelaitteen ID-koodiksi. Kaikki toiminteet voidaan kohdistaa ID-koodia hyväksikäyttäen tietylle päätelaitteelle. Vastaavasti 1-Wire-standardi määrittää tietyt algoritmit päätelaitteiden ID-koodien selvittämiseen. 1-Wire-väylä on synkroninen sarjaväylä, jossa liikennöinti tapahtuu yhdellä kertaa aina yhteen suuntaan, joko päätelaitteelta sovittimelle tai päinvastoin. Sovittin voi lähettää myös sellaisia komentoja, jotka kohdistuvat samanaikaisesti kaikille väylällä oleville päätelaitteille. Väylän liikennöinti perustuu sovittimen väylälle antamiin kellopulsseihin. Tieto kulkee väylällä yksi bitti kerrallaan siten, että bitin sijainti ajallisesti on aina n. 5...10 µs kuluttua kellopulssista. Näin jokaista bittiä vastaa yksi kellopulssi. Kellopulssien (ja näin myös bittien) välinen aika voi vaihdella tietystä minimiajasta (61 µs) äärettömään. Näin ollen, väylän tiedonsiirtokapasiteetti on maksimissaan 16393 bittiä sekunnissa. Kuten yllä mainittiin, päätelaitteet voivat ottaa käyttöenergiansa väylän datalinjasta. Tämän vuoksi datalinja on kytketty käyttöjännitteeseen (+ 5 V) n. 5 kω vastuksen kautta. Päätelaitteet voivat varata energiaa sisäiseen kondensaattoriinsa korkeintaan 1 µa virralla. Mikäli päätelaitteen virrantarve on tätä suurempi, on sen otettava energiansa erillisestä käyttöjännitteen syötöstä. 1-Wire-väylän kehittäjä on Dallas Maxim -yhtiö. Sekä väylän että usean päätelaitteen määritelmät ovat julkisesti saatavilla esimerkiksi osoittessa: http://www.ibutton.com/ ja http://www.dalsemi.com/ # 8 9 E H A I L E J E, = J = O J J E J A = = 9 E H A 9 E H A 9 E H A 9 E H A F J A F J A F J A F J A = E J A = E J A = E J A! = E J A Kuva 1: Periaatekuva 1-Wire-väylästä

Kalle Tuulos ETT:n harjoitustyöt 22. helmikuuta 2002 2 3 Vaatimukset rakennettavalle laitteistolle 1-Wire-väylän sovittimen prototyypin on täytettävä seuraavat vaatimukset: 1. Sovittimen on tuettava kolmea 1-Wire-väylää. 2. Kaikki 1-Wire-väylän ohjaukseen liittyvät aikakriittiset toiminnot on hoidettava sovittimessa. Eiaikakriittiset toiminnot voidaan hoitaa PC:n ohjelmistolla. 3. Sovittimen ja PC:n välinen liitäntä on RS-232 sarjaportti seuraavin asetuksin: liikennenopeus 2400 bps, 8 databittiä, ei pariteettibittejä, 1 stop-bitti, ei kättelyä, half duplex. 4. Sovittimeen ja PC:n väliseen rajapintaan on toteutettava virtuaalinen 1-Wire-laitteistoajuri siten, että 1-Wire-väylään liittyviä algoritmeja voidaan ajaa PC:llä. 5. Sovittimen on toimittava vapaavalintaisella tasajännitteellä 8...30 V. 6. Sovittimen 1-Wire-väyläliittimien on oltava helppokäyttöisiä ja varmatoimisia, jotta päätelaitteita voidaan kytkeä väylälle ja irrottaa väylältä ilman erikoistyökaluja. 4 Laitteiston toteutus Sovittimen ja PC:n välisessä työnjaossa on valittu malli, jossa sovittimen tehtäväksi jää aikakriittiset perusasiat ja PC huolehtii monimutkaisemmista algoritmeista. Tästä vaatimuksesta seuraa kaksi seikkaa: Ensimmäiseksi, sovittimen ja PC:n välille on luotava ei-aikakriittinen rajapinta. Toiseksi, sovittimessa on oltava sellainen mikrokontrolleri, joka kykenee ohjaamaan 1-Wire-väylää standardissa määrätyissä aikarajoissa. Tämän mallin etuna on laitteiston myöhemmän kehityksen yksinkertaisuus: sovittimen mikrokontrollerin ohjelmistoa ei tarvitse päivittää, mikäli 1-Wire-väylään kytketään uudenlaisia päätelaitteita, kunhan ne vain noudattavat 1-Wire-standardin perustoiminteita. Lisäksi PC:n ohjelmistoa voidaan ajaa miltei minkä tahansa käyttöjärjestelmän päällä, sillä ohjelmistossa ei ole aikakriittisiä tai laitteistosidonnaisia komponentteja. Kuva 2: Valokuva sovittimen prototyypistä

Kalle Tuulos ETT:n harjoitustyöt 22. helmikuuta 2002 3 I/O Käyttö RB0 Sarjaportin sisääntuleva liikenne RB1 Sarjaportin ulosmenevä liikenne RB3 Aktiivisuus-LED RB4 1-Wire-väylä nro. 1 RB5 1-Wire-väylä nro. 2 RB6 1-Wire-väylä nro. 3 Taulukko 1: Mikrokontrollerin I/O-linjojen käyttö Osa Seloste C1 Polyesterikondensaattori 30 pf C2 Polyesterikondensaattori 30 pf C3 Elektrolyyttikondensaattori 1.0 uf, 63 V C4 Elektrolyyttikondensaattori 2.2 uf, 35 V C5 Elektrolyyttikondensaattori 1.0 uf, 63 V C6 Elektrolyyttikondensaattori 1.0 uf, 63 V C7 Elektrolyyttikondensaattori 1.0 uf, 63 V C8 Elektrolyyttikondensaattori 1.0 uf, 63 V C9 Polyesterikondensaattori 100 pf D1 LED punainen D2 LED vihreä IC1 Mikrokontrolleri PIC16F84-10/P IC2 Linjaohjain MAX232CPE IC3 Regulaattori 78L05 Q1 Kide 10 MHz R1 Vastus 1 kω, 1/4 W, 5 % R2 Vastus 1 kω, 1/4 W, 5 % R3 Vastus 4.7 kω, 1/4 W, 5 % R4 Vastus 4.7 kω, 1/4 W, 5 % R5 Vastus 4.7 kω, 1/4 W, 5 % R6 Vastus 1 kω, 1/4 W, 5 % X1 Käyttöjännitteen (8... 30 V, 40 ma DC) liitin X2 RS232-väylän liitin X3 1-Wire -väylän nro 1 ruuviliitin X4 1-Wire -väylän nro 2 ruuviliitin X5 1-Wire -väylän nro 3 ruuviliitin Taulukko 2: Osaluettelo 4.1 Sovittimen laitteistototeutus Sovittimen (katso kuva 2) mikrokontrolleriksi valittiin Microchip PIC16F84, joka toimii 10 MHz kellotaajuudella. Tässä RISC-tyyppisessä mikrokontrollerissa on 1024 sanan ohjelmamuisti ja 80 tavun RAM. Mikrokontrollerin I/O-linjat on kytketty taulukon 1 mukaisesti. Sovitin kommunikoi PC:n kanssa RS-232 -portin kautta, mutta PIC16F84:ssa ei ole sisäänrakennettua tukea sarjaportille. Esimerkiksi RS-232:n logiikkatasot ovat erilaiset mikrokontrolleriin nähden. Sovittimessa on käytetty MAX232-piiriä RS-232:n logiikkatasojen sovittamiseen. Sovittimeen on tarkoitus kytkeä vain suhteellisen lyhyitä (muutamia metrejä) 1-Wire-väyliä, joten väylän sähköinen ohjaus voidaan toteuttaa yksinkertaisimmalla mahdollisella tavalla, linjan ylösvetovastuksella ja mikrokontrollerin I/O-liitännällä. Pidemmille 1-Wire-väylille tarvitaan monimutkaisempia ohjausmenetelmiä, esim. linjan ylösvetovastuksen tilalla käytetään aktiivista linjan ylösvetoa. Mikrokontrollerin, RS232-linjapuskurin ja 1-Wire-väylien ohjausten lisäksi sovittimessa on vain virtalähdeosa, joka on rakennettu +5 V regulaattorin ympärille. Sovittimen kytkentäkaavio on esitetty kuvassa 3 ja osaluettelo taulukossa 2.

Kalle Tuulos ETT:n harjoitustyöt 22. helmikuuta 2002 4 Kuva 3: Sovittimen kytkentäkaavio

Kalle Tuulos ETT:n harjoitustyöt 22. helmikuuta 2002 5 4.2 Sovittimen mikrokontrollerin ohjelmisto Koko sovittimen mikrokontrollerin ohjelmisto on kirjoitettu modulaarisesti C-kielellä siten, että laitteistoriippuvaiset toiminteet on toteutettu omiksi moduuleikseen ja algoritmit omikseen. Näin ohjelmiston uudelleenkäyttö toisenlaisessa mikrokontrollerissa on helppoa muutoksia tarvitaan ainoastaan laitteistoajureihin. Sovittimelle kehitettiin virtuaalinen laitteistoajuri, joka mahdollistaa 1-Wire-väylän aikakriittisten pienoperaatioiden (esim. kirjoita väylälle bitti, lue bitti väylältä) käyttämisen samalla rajapinnalla joko mikrokontrollerista tai PC:stä. Tämä helpottaa huomattavasti ohjelmiston kehittämistä. Tästä on toisaalta seurauksena ohjelmakoodin koon kasvaminen ja ohjelmiston suoritusnopeuden hidastuminen. Mikrokontrollerin ohjelmisto koostuu päätasosta, joka pelkästään käsittelee sisään tulevat viestit ja moduuleista, jotka suorittavat käsketyt toiminnot käyttäen hyväksi laitteistorajapintafunktioita. Ohjelmisto on rakennettu siten, että aina yhden toiminteen loputtua sovitin lähettää vastausviestin PC:lle ja jää odottamaan seuraavan toiminteen käskyä. Mikrokontrollerin ohjelmamuististakapasiteetista, 1024 sanaa, tuli käytettyä 1016 sanaa. Samoin RAMkapasiteetista, 80 tavua, tuli käytettyä 66 tavua. Itse asiassa muisti loppui kesken, eli tietyt asiat (esim. CRC:n tarkastus) oli hoidettava PC:n ohjelmistossa. Tarkoituksenani on julkistaa mikrokontrolleriin tehty ohjelmisto Internetissä, joten mikrokontrollerin lähdekoodi on kommentoitu englanniksi. 4.2.1 Sarjaportin käsittely Yksinkertaisissa mikrokontrollereissa, joissa ei ole sisäänrakennettua UARTia (sarjaporttiajuria), sarjaportin käsittely on tehtävä ohjelmallisesti. Tässä toteutuksessa sarjaportin käsittely on rakennettu keskeytyspalvelimen ympärille. Kuten taulukosta 1 käy ilmi, on sarjaportin sisääntuleva liikenne kytketty mikrokontrollerin I/O-linjaan RB0. Tässä linjassa on mahdollisuus reuna-aktiiviselle keskeytykselle, ja keskeytys on ohjelmoitu laskevalle reunalle. Sarjaportin lepotilassa linjan tila on looginen yksi. Kun liikennöinti alkaa, alkubitin laskeva reuna laukaisee mikrokontrollerissa keskeytyksen. Tämän jälkeen mikrokontrolleri ohjelmoi ajastinkeskeytyksen ensin 1/2 bitin päähän, jolloin ollaan ajallisesti alkubitin puolivälissä. Tämän jälkeen ajastinkeskeytyksiä ohjelmoidaan yhden bitin väliajoin ja aina keskeytyksen tultua luetaan sarjalinjan tila. Kun 8 databittiä on luettu, on vuorossa stop-bitti, jonka arvoa tässä toteutuksessa ei lueta. Stop-bitin aikana luetut bitit kootaan tavuksi, joka talletetaan sisääntulevan viestin puskuriin. Ajastinkeskeytyksen ohjelmointi puretaan ja RB0-linja asetetaan reuna-aktiiviseen tilaan odottamaan uutta alkubittiä. Periaatekuva vastaanottoprosessista on esitetty kuvassa 4. Kuten kappaleesta 4.4 käy ilmi, on sarjaportin yli siirrettävässä liikenteessä tietty viestimuoto. Näin ollen, dataa vastaanotettaessa, koko viesti kootaan sisääntulevan viestin puskuriin ennen toiminnon tulkitsemista ja suorittamista. Datan lähetys sovittimelta PC:lle toimii vastavasti ajastinkeskeytyksellä. Kun lähtevä viesti on kopioitu ulosmenevän viestin puskuriin, voidaan lähetysprosessi aloittaa. Mikroprosessori ohjelmoi ajastinkeskeytyksen tapahtumaan yhden bitin väliajoin ja aina keskeytyksen tullessa, yksinkertaisesti muuttaa RB1-linjan I = H = L O J E = = K > E J J E > E J J E > E J J E > E J J E! > E J J E " A I A O J O I I = H = F H J E I J = = K > E J E = I A L = I J = H A K = I J = = = I J E A I A O J O I > E J E A A = = I J E A I A O J O I > E J E A A K A I = H = E = J E = = = I J E A I A O J O I > E J E A A K A I = H = E = J E = = = I J E A I A O J O I > E J E A A K A I = H = E = J E = = = I J E A I A O J O I > E J E A A K A I = H = E = J E = Kuva 4: Sarjaportin sisääntulevan liikenteen käsittely

Kalle Tuulos ETT:n harjoitustyöt 22. helmikuuta 2002 6 tilan vastaamaan lähetettävien bittien arvoja. Sekä datan lähetys että vastaanotto on toteutettu samaan keskeytyspalvelimeen, joten sovitin osaa periaatteessa samanaikaisesti sekä lähettää että vastaanottaa dataa (full duplex). Sovittimen ja PC:n välinen rajapinta on kuitenkin määritelty siten, että kommunikointi tapahtuu vuoroissa (half duplex). 4.2.2 1-Wire-väylän käsittely Kaikki 1-Wire-väylän aikakriittiset toiminteet on toteutettu käyttäen hyväksi muutamaa perusfunktiota: kirjoita väylälle bitti, lue bitti väylältä, resetoi väylä. Näillä funktioilla voidaan toteuttaa kaikki 1-Wire-väylällä tarvittavat toimenpiteet. Perusfunktioiden lisäksi ohjelmistossa on toteutettu joitakin useimmin tarvittavia rutiineja, esimerkiksi päätelaitteiden ID-koodin kyselyt sekä yksittäisiltä laitteilta että Search ROM -algoritmia hyväksi käyttäen. Myös lämpötila-antureiden lämpötilan lukuun tarvittavat rutiinit on toteutettu sovittimeen. 4.3 PC:n ohjelmisto PC:n ohjelmistossa suoritetaan sellaisia toiminteita, jotka eivät ole aikakriittisiä ja jotka vaativat paljon RAM-muistia. Esimerkiksi lämpötila-antureiden tulosten käsittely on parasta suorittaa PC:ssä. PC:n ohjelmiston perimmäinen tarkoitus on kuitenkin olla vain tukemassa sovittimen prototyypin tutkiskelua, joten ohjelmistosta ei tehty kovinkaan monipuolista. Kuten edellä mainittiin, PC:n ohjelmistossa on toteutettu virtuaalinen laitteistoajuri, joka mahdollistaa 1-Wire-väylän alkeisoperaatioiden käyttämisen. Näin ollen mikä tahansa 1-Wire-väylän algoritmi voidaan toteuttaa PC:n ohjelmistolla. Esimerkiksi Search ROM -algoritmi toteutettiin ja varmennettiin PC:llä, sillä PC:n debuggeri on huomattavasti monipuolisempi kuin sovittimen mikrokontrollerin - eikä sovittimen mikrokontrollerin debuggeri edes voi debugata ajossa olevaa mikrokontrolleria. 1-Wire-väylän Search ROM -algoritmin vuokaavio on esitetty Dallas Maxim:n dokumentissa Application Note 162: Interfacing the DS18x20/DS1822 1-Wire Temperature Sensor in a Micro-Controller Environment. Kaikki 1-Wire-väylässä kulkeva hyötydata (esim. lämpötilamittausten tulokset, löytyneet ID-koodit) on virhesuojattu CRC-summalla, joka lasketaan seuraavalla polynomifunktiolla: CRC = X 8 + X 5 + X 4 + 1 (1) CRC-summa nollataan aina uuden siirron alkaessa, ja jokainen siirretty hyötydatabitti syötetään CRCpolynomille. Mikäli koko hyötydatan CRC-summa ei ole nolla, on siirrossa tapahtunut virhe, jolloin data on siirrettävä uudelleen. CRC-tarkastus on luonteeltaan sovittimelle kuuluva asia. Koska sovittimen ohjelmamuisti loppui kesken, tehdään CRC-tarkastus PC:n ohjelmistossa. Muita PC:ssä suoritettavia asioita on luonnollisesti mittaustulosten näytölle tulostaminen ja lämpötilaanturien ID-koodien luku konfigurointitiedostosta. 4.4 Looginen rajapinta sovittimen ja PC:n välillä Kaikki kommunikaatio sovittimen ja PC:n välillä tapahtuu määrämuotoisilla viesteillä. Viestit koostuvat otsikkokentästästä ja dataosuudesta. Otsikkokentän pituus on aina 3 tavua ja dataosuuden pituus vaihtelee, viestistä riippuen, 0... 9 tavun välillä. Viestien ominaisuudet on määritelty tiedostossa interfce.h, joka on yhteinen sovittimen ja PC:n välillä. Viestien otsikkokenttä sisältää seuraavat tiedot, seuraavassa järjestyksessä: 1. Viestin pituus tavuina (sisältäen otsikon). Viestin pituus on vähintään 3 tavua. 2. Viestin tunnus. Jokaisella viestillä on oma, yksilöllinen tunnus. 3. 1-Wire-väylän tunniste (joko 1, 2 tai 3). Tällä valitaan, mihin 1-Wire-väylään haluttu toiminto kohdistuu. Tietyillä viesteillä tämän kentän sisällöllä ei ole merkitystä.

Kalle Tuulos ETT:n harjoitustyöt 22. helmikuuta 2002 7 4.4.1 Viestit PC:ltä sovittimelle PIC INIT REQ Alusta sovitin. Kun alustus on onnistunut, lähetä vastaus viestillä: PIC INIT RES. Nykyisessä toteutuksessa tätä viestiä ei tarvita, eikä tämän viestin lähettäminen sovittimelle aiheuta sovittimessa mitään toimenpiteitä. Tämä viesti on luotu lähinnä varaukseksi tulevaisuuden tuotantosovitinta varten. PIC 1WIRE ON REQ Kytke 1-Wire-väylään käyttöjännite. Toiminnon jälkeen lähetä vastaus viestillä: PIC 1WIRE ON RES. Tämä viesti on tarkoitettu lähinnä testikäyttöön. PIC 1WIRE OFF REQ Sammuta 1-Wire-väylän käyttöjännite. Toiminnon jälkeen lähetä vastaus viestillä: PIC 1WIRE OFF RES. Tämä viesti on tarkoitettu lähinnä testikäyttöön. PIC 1WIRE RESET REQ Anna 1-Wire-väylälle reset-pulssi. Toiminnon jälkeen lähetä vastaus väylän tilasta viestillä: PIC 1WIRE RESET RES. PIC 1WIRE SEND BIT REQ Lähetä 1-Wire-väylälle yksi bitti. Lähetettävä bitti saapuu viestin neljännessä tavussa, sen MSB:nä. Toiminnon jälkeen lähetä vastaus viestillä: PIC 1WIRE SEND BIT RES. PIC 1WIRE SEND BYTE REQ Lähetä 1-Wire-väylälle yksi tavu. Lähetettävä tavun on oltava viestin neljäs tavu. Toiminnon jälkeen lähetä vastaus viestillä: PIC 1WIRE SEND BYTE RES. PIC 1WIRE REC BIT REQ Vastaanota 1-Wire-väylältä yksi bitti. Lähetä vastaanotettu bitti viestillä: PIC 1WIRE REC BIT RES. PIC 1WIRE REC BYTE REQ Vastaanota 1-Wire-väylältä yksi tavu. Lähetä vastaanotettu bitti viestillä: PIC 1WIRE REC BIT RES. PIC 1WIRE SEARCH ROM REQ Etsi 1-Wire-väylällä olevien päätelaitteiden ID-koodit. Lähetä löytyneet ID-koodit viestillä PIC 1WIRE NEW DEV IND. Kun uusia ID-koodeja ei enää löydy, lähetä viesti PIC 1WIRE LAST DEV IND. PIC 1WIRE READ TEMP REQ Hae 1-Wire-väylällä olevan lämpötila-anturin lämpötila. Lähetä luettu lämpötila viestillä PIC 1WIRE READ TEMP RES. Mikäli väylällä on useita lämpötila-antureita, vastaus ei ole järkevä, vaan lämpötilan lukuun tulisi käyttää viestiä PIC 1WIRE READ TEMP W ID REQ. PIC 1WIRE READ TEMP W ID REQ Hae 1-Wire-väylältä tietyn ID-koodilla yksilöidyn lämpötila-anturin lämpötila. Lähetä luettu lämpötila viestillä PIC 1WIRE READ TEMP W ID RES. ID-koodin tulee olla viestin tavuissa 4... 12. PIC 1WIRE READ ID REQ Hae 1-Wire-väylältä yksittäisen päätelaitteen ID-koodi. Lähetä luettu ID-koodi viestillä PIC 1WIRE READ ID RES. Mikäli väylällä on useita päätelaitteita, vastaus ei ole järkevä, vaan ID-koodien hakuun tulisi käyttää viestiä PIC 1WIRE SEARCH ROM REQ. 4.4.2 Viestit sovittimelta PC:lle PIC INIT RES Tämä viesti on vastaus viestille PIC INIT REQ. PIC 1WIRE ON RES Tämä viesti on vastaus viestille PIC 1WIRE ON REQ. PIC 1WIRE OFF RES Tämä viesti on vastaus viestille PIC 1WIRE OFF REQ. PIC 1WIRE RESET RES Tämä viesti on vastaus viestille PIC 1WIRE RESET REQ. Mikäli 1-Wire-väylällä on päätelaitteita, on tämän viestin neljännen tavun MSB 1, muutoin koko neljännen tavun arvo on 0. PIC 1WIRE SEND BIT RES Tämä viesti on vastaus viestille PIC 1WIRE SEND BIT REQ. PIC 1WIRE SEND BYTE RES Tämä viesti on vastaus viestille PIC 1WIRE SEND BYTE REQ. PIC 1WIRE REC BIT RES Tämä viesti on vastaus viestille PIC 1WIRE REC BIT REQ. Vastaanotetun bitin arvo on tämän viestin neljännen tavun MSB:nä.

Kalle Tuulos ETT:n harjoitustyöt 22. helmikuuta 2002 8 PIC 1WIRE REC BYTE RES Tämä viesti on vastaus viestille PIC 1WIRE REC BYTE REQ. Vastaanotettu tavu on tämän viestin neljäntenä tavuna. PIC 1WIRE NEW DEV IND Kun päätelaitteiden ID-koodien haku on käynnistetty, sovitin lähettää löytyneet uudet ID-koodit käyttämällä tätä viestiä. Jokainen löytynyt ID-koodi lähetetään omana viestinään. ID-koodi on tämän viestin tavuina 4... 12. PIC 1WIRE LAST DEV IND Kun päätelaitteiden ID-koodien haku on käynnistetty, sovitin ilmoittaa haun päättymisestä käyttämällä tätä viestiä. PIC POWERUP IND Tämä viesti lähetetään silloin, kun sovittimeen on kytketty käyttöjännite ja sovittimen ohjelma on lähtenyt käyntiin. PIC 1WIRE READ TEMP RES Tämä viesti lähetetään, kun lämpötila-anturin lämpötila on luettu. Anturin lämpötilatiedot lähetetään tämän viestin tavuissa 4... 12. PIC 1WIRE READ TEMP W ID RES Tämä viesti lähetetään, kun ID-koodilla valitun lämpötilaanturin lämpötila on luettu. Anturin lämpötilatiedot lähetetään tämän viestin tavuissa 4... 11. PIC 1WIRE READ ID RES Tämä viesti lähetetään, kun 1-Wire-väylällä olevan päätelaitteen IDkoodi on luettu. ID-koodi lähetetään tämän viestin tavuissa 4... 9. PIC 1WIRE TEMP READ ERR IND Tämä viesti lähetetään, jos sovitinta on pyydetty lukemaan jonkin lämpötila-anturin lämpötilatiedot, mutta valitussa 1-Wire-väylässä ei ole lainkaan päätelaitteita. PIC ERROR IND Tämä viesti lähetetään, jos sovittimessa on jokin virhetilanne. 5 Laitteiston käyttö Aivan ensimmäiseksi kytketään sovittimen ja PC:n välinen RS232-kaapeli. Tämän jälkeen voidaan kytkeä PC:hen virta päälle ja käynnistää PC:ssä ajettava ohjelma. Ohjelman käynnistyksen jälkeen kytketään sovittimeen virta. Sovitin lähettää käynnistyessään viestin PC:lle, jolloin PC:ssä ajettava ohjelma havaitsee sovittimen olevan toiminnassa. PC:n ohjelmalla (lab.exe) voidaan etsiä 1-Wire-päätelaitteiden (joita ohjelmassa kutsutaan aina antureiksi) ID-koodeja, joko tietyltä väylältä, johon on kytketty vain yksi anturi tai kaikilta sovittimeen liitetyiltä väyliltä, jolloin ohjelma tulostaa kaikkien sovittimeen kytkettyjen päätelaitteiden ID-koodit. Löytyneet ID-koodit tulisi syöttää PC:n ohjelman konfigurointitiedostoon (lab.cfg) lyhyen päätelaitekohtaisen sanallisen tunnisteen kera. Tähän konfigurointitiedostoon kytkettävät laitteet oletetaan olevan aina lämpötila-antureita. Kun PC:n ohjelmasta valitaan lämpötilan mittaus, lukee ohjelma konfigurointitiedostostoon syötetyt IDkoodit ja suorittaa lämpötilamittauksen jokaiselle lämpötila-anturille, yksi kerrallaan. Tulokset tulostetaan ruudulle celcius-asteina. Mikäli tietystä anturista ei saada tulosta, tästä ilmoitetaan sanallisesti. Sovittimessa on vihreä aktiviteetti-led, joka valaisee sovittimen ollessa aktiivinen eli kun sovitin parhaillaan tekee jotain 1-Wire-väylälle. Aktiviteetti-LEDiä tarkkailemalla nähdään vikatilanteissa nopeasti, esim. onko sovittimen ja PC:n välinen sarjakaapeli kytketty: mikäli PC:n ohjelmisto ei löydä sovitinta virran kytkemisen yhteydessä, voidaan jollain PC:ssä olevalla terminaaliohjelmistolla lähettää sovittimelle mielivaltaista dataa. Jos kaapeli PC:n ja sovittimen välillä on kytketty, pitäisi aktiviteetti-ledin vilkkua sovittimen vastaanottaessa dataa. Testien aikana 1-Wire-väylässä ei tulisi olla mitään mahdollisesti vahinkoa aiheuttavia laitteita (esim. releohjaimia) ja testien jälkeen tulisi sovittimen virta sammuttaa. 6 Havaintoja työstä 1. Vikasietoisuusteen on panostettava todellisessa tuotantosovittimessa. Sovittimen ja PC:n yhteispelin on pelattava niin hyvin, ettei laitteisto missään vaiheessa jumiudu. 2. Sovittimen ja PC:n välistä liikennettä olisi tarkkailtava sarjaliikenneanalysaattorilla, jotta saataisiin selville, miksi PC:n ohjelma aina joskus jumiutuu. 3. Toinen antureista ei anna mittaustulosta ilman käyttöjännitettä. Toinenkin antaa n. +2 asteen systemaattisen virheen ilman käyttöjännitettä. Nämä havainnot ovat ristiriidassa lämpötila-antureiden datalehtien kanssa.

Kalle Tuulos ETT:n harjoitustyöt 22. helmikuuta 2002 9 4. Microchip 16F84 on epäluotettava! Aina sillointällöin sovittimen ohjelma oli virrat kytkettäessä epämääräisessä tilassa (eli ohjelma ei käynnistynyt oikein) tai vaikka ohjelma tuntuikin käynnistyvän ja toimivan osittain oikein, sovitin antoi PC:lle vääriä vastausviestejä. Tämä johtui todennäköisesti ongelmista flash-ohjelmointimenettelyssä. 5. Sovittimen ohjelmamuisti täyttyi. Lopulliseen tuotteeseen tarvittaisiin enemmän muistia, jotta kaikki 1-Wire-väylän toiminteet saataisiin ohjattua suoraan sovittimella. 6. 10 MHz kellotaajuus PIC16F84:ssa (yhden käskyjakson pituus 400 ns) riittää juuri ja juuri 1-Wireväylän ajoitusten ohjaamiseen. Mikäli väylän ajoituksia halutaan ohjata tarkemmin, kellotaajuuden täytyisi olla vähintään 20 MHz tai vaihtoehtoisesti, sovittimessa täytyisi käyttää erityyppistä mikrokontrolleria. 7. Sovittimessa toteutettiin virtuaaliset laitteistoajurit, joilla 1-Wire-väylän algoritmeja voidaan ajaa PC:ssä. Tämä havaittiin erittäin käyttökelpoiseksi esim. Search ROM-algoritmin kehittämisessä. 8. Jostain syystä Search ROM -algoritmi ei toimi sovittimessa, vaikka täsmälleen sama algoritmi (sama tiedosto) toimii PC:n ohjelmistossa ja molemmissa, sekä PC:ssä että sovittimessa, on käytössä sama virtuaalinen laitteistorajapinta. Vian syyn selvittämiseen tarvittaisiin logiikka-analysaattoria ja oskilloskooppia, joita minulla ei kotona ole, joten tässä prototyypissä en saanut Search ROM - algoritmia toimimaan. Algoritmi toimii kuitenkin PC:n ohjelmistossa, joten väylää voidaan hyödyntää täysin.