Projekti 05/26/ Wire -kikkare. Timo Raatikainen Arto Rantala Reijo Rantala

Samankaltaiset tiedostot
FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

Choose Finland-Helsinki Valitse Finland-Helsinki

FinFamily Installation and importing data ( ) FinFamily Asennus / Installation

C++11 seminaari, kevät Johannes Koskinen

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

7.3. Oheisrautaa. DS

812336A C++ -kielen perusteet,

Olet vastuussa osaamisestasi

KONEISTUSKOKOONPANON TEKEMINEN NX10-YMPÄRISTÖSSÄ

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

Avoimen lähdekoodin kehitysmallit

TeleWell TW-LTE/4G/3G USB -modeemi Cat 4 150/50 Mbps

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

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

TIETORAKENTEET JA ALGORITMIT

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

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

Salasanan vaihto uuteen / How to change password

Jukka Larja, Kim Nylund. 15. maaliskuuta 2005

Tech Conference Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI

Alternative DEA Models

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

6.3. AVR_rauta. EEPROM-muisti pva

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

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

Tietotyypit ja operaattorit

Autodesk Lisenssitiedosto Autodesk, Inc.

ETELÄESPLANADI HELSINKI

1. Liikkuvat määreet

S SÄHKÖTEKNIIKKA JA ELEKTRONIIKKA

1. SIT. The handler and dog stop with the dog sitting at heel. When the dog is sitting, the handler cues the dog to heel forward.

Asynkroninen ohjelmointi.net 4.5 versiolla

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

LX 70. Ominaisuuksien mittaustulokset 1-kerroksinen 2-kerroksinen. Fyysiset ominaisuudet, nimellisarvot. Kalvon ominaisuudet

S SÄHKÖTEKNIIKKA JA ELEKTRONIIKKA

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

Anturit ja Arduino. ELEC-A4010 Sähköpaja Tomi Pulli Signaalinkäsittelyn ja akustiikan laitos Mittaustekniikka

Infrastruktuurin asemoituminen kansalliseen ja kansainväliseen kenttään Outi Ala-Honkola Tiedeasiantuntija

Kaivostoiminnan eri vaiheiden kumulatiivisten vaikutusten huomioimisen kehittäminen suomalaisessa luonnonsuojelulainsäädännössä

You can check above like this: Start->Control Panel->Programs->find if Microsoft Lync or Microsoft Lync Attendeed is listed

Windows Phone 7.5 erilainen ja fiksu älypuhelin. Vesa-Matti Paananen Liiketoimintajohtaja, Windows Phone Microsoft Oy

ELM GROUP 04. Teemu Laakso Henrik Talarmo

MODBUS -väyläohjaus DITRONIC TOUCH -KOSKETUSNÄYTTÖ. s-posti:

Information on Finnish Language Courses Spring Semester 2018 Päivi Paukku & Jenni Laine Centre for Language and Communication Studies

Office 2013 ja SQL Server 2012 SP1 uudet BI toiminnallisuudet Marko Somppi/Invenco Oy

Other approaches to restrict multipliers

DS-tunnusten haku Outi Jäppinen CIMO

National Building Code of Finland, Part D1, Building Water Supply and Sewerage Systems, Regulations and guidelines 2007

Ohjelmoinnin perusteet Y Python

Information on Finnish Language Courses Spring Semester 2017 Jenni Laine

Sisällysluettelo Table of contents

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

WBelectronics. Infinity USB Phoenix - Käyttöohje

A15 - Inertial Measurement Unit

Arduino. Kimmo Silvonen (X)

TW- WLAN ac SOVITTIMEN ASENNUSOHJE

Network to Get Work. Tehtäviä opiskelijoille Assignments for students.

TAMPEREEN TEKNILLINEN YLIOPISTO

Ohjelmoinnin perusteet Y Python

MPCC-työkalua voidaan käyttää yhden laitteen valvontaan ja yhden tai useamman laitteen konfigurointiin (Modbus broadcast, osoite 0).

13. Loogiset operaatiot 13.1

BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.

Tietorakenteet ja algoritmit

Ohjelmointi 1 C#, kevät 2013,

Ohjelmoinnin perusteet Y Python

Verilogvs. VHDL. Janne Koljonen University of Vaasa

S SÄHKÖTEKNIIKKA JA ELEKTRONIIKKA

N300 WiFi USB Micro -sovitin (N300MA)

11. Javan valintarakenteet 11.1

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Millainen on onnistunut ICT-projekti?

Returns to Scale II. S ysteemianalyysin. Laboratorio. Esitelmä 8 Timo Salminen. Teknillinen korkeakoulu

The CCR Model and Production Correspondence

Operatioanalyysi 2011, Harjoitus 3, viikko 39

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Ohjelmien lisensoinnista

Lähettimet. Vastaanotin Hälytykset. OV-yksikkö DPR990

Ohjelmoinnin peruskurssi Y1

HARJOITUS- PAKETTI A

Java-kielen perusteet

The Viking Battle - Part Version: Finnish

Open Source -ohjelmien perusteet

Rekisteröiminen - FAQ

Javan asennus ja ohjeita ongelmatilanteisiin

Ajettavat luokat: SM: S1 (25 aika-ajon nopeinta)

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

KÄYTTÖOHJE PEL 1000 / PEL 1000-M

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

1 Muutokset piirilevylle

Ohjelmoinnin perusteet Y Python

HYÖDYNNÄ SUBSCRIPTION-ETUSI

PAINEILMALETKUKELA-AUTOMAATTI AUTOMATIC AIR HOSE REEL

Operatioanalyysi 2011, Harjoitus 4, viikko 40

Kirjasto Relaatiotietokannat Kevät Auvinen Annemari Niemi Anu Passoja Jonna Pulli Jari Tersa Tiina

SEM1, työpaja 2 ( )

SÄHKÖKÄYTÖN EMULOINTI SIMULINK-DSPACE-M1 -YMPÄRISTÖSSÄ

TKT224 KOODIN KOON OPTIMOINTI

Transkriptio:

1-Wire -kikkare Timo Raatikainen Arto Rantala Reijo Rantala

Sisällysluettelo Sisällysluettelo:... 2 Projektin kuvaus lyhyesti... 3 1-Wire... 3 Toimintaperiaate...3 Projekti... 4 Kääntäjä...4 Kirjastojen luonti...4 Työkalut...4 Tulevaisuuden mahdollisuudet...4

Projektin kuvaus lyhyesti Projektin tavoitteena oli suunnitella ja toteuttaa EVTEK-8051 mikrokontrollerilaudalle sarjaporttiin adapterikortti 1-Wire -laitteiden käyttöä varten. Adapterin sydämenä toimii Dallas Semiconductor:n DS2480B joka toimii rajapintana sarjaportin ja 1-Wire -väylän välillä. [1] 1-Wire 1-Wire käyttää käyttää yhtä signaali- ja maajohdinta digitaaliseen liikenteeseen ja tehonsyöttöön, käytännössä kierrettyä parikaapelia pitkin. Väylällä on sekä master että useampia slavelaitteita, jokaisella näistä on oma yksilöllinen 64-bittinen sarjanumeronsa joka toimii samalla laitteen tunnisteena onewire-verkossa. Sarjanumerosta selviää laitteen tyyppi (8 alinta bittiä ), osoite (48 bittiä) ja ensimmäisten 58 bitin CRC-summa (8 ylintä bittiä). Liitettävien laitteiden suhteen käytännössä vain mielikuvitus on rajana, sopivilla muuntimilla minkä tahansa anturin/mittalaitteen ulosantama data saadaan muunnettua onewire-väylälle. Dallas Semiconductor suosittelee onewire-verkossa käytettäväksi CAT5 UTP-parikaapelia, tosin mahdolliset ylimääräiset johdinparit vaikutuksineen pitää ottaa suunnittelussa huomioon. 1-Wire tunnetaan myös muilla nimillä, ibutton ja MicroLAN. Toimintaperiaate Jokaisella 1-Wire -laitteella on oma 64-bittinen tunnisteensa ROM-muistissa, tunnisteen avulla 1- Wire master komentaa laitteita 1-Wire verkossa. Mikäli tunnisteita ei ole etukäteen tiedossa, ne voidaan hakea verkosta erityisen hakualgoritmin avulla. Käytännössä haku tapahtuu siten että väylä resetoidaan ja lähetetään presencesekvenssi, jonka jälkeen vastaanotetaan kaikkien väylällä olevien laitteiden tunnistenumeron alimpien bittien looginen JA, sekä alimpien bittien komplementtien looginen JA. Näiden kahden bitin perusteella voidaan päätellä ollaanko ristiriitatilenteessa (00), väylällä olevien laitteiden tunnisteen ensimmäinen bitti 0 tai 1 (01 ja 10) vai onko väylä tyhjä (11). Tämän jälkeen valitaan haun suunta master lähettää halutun bitin väylälle, jolloin kaikki laitteet joiden tunnisteen LSB on sama kuin valittu suunta, jäävät linjalle muiden mennessä odotustilaan. Hakua jatketaan kunnes kaikkien halutun suunnan laitteiden tunnisteet ovat selvillä. Ristiriitatilanteessa valitaan ensin 0-suunta, jolla jatketaan kunnes kaikki haaran laitteet on tunnistettu vaihdetaan 1-suuntaan. Master muistaa ensimmäisen 8 bitin aikaiset ristiriitatilanteet ja ryhmittelee tämän mukaisesti laitteet perheittäin (8 bittinen family code). [2]

Projekti Perustaksi valittu DS2480B voidaan kytkeä 5 voltin RS232 -järjestelmään tai UART:iin, RS232C (±12V):n käyttö vaatii passiivisen kuristinpiirin ja jännitemuuntimen (5V -> ±12V) käyttöä. Piiri itsessään osaa hoitaa aikakriittisen kommunikaation väylällä isäntälaitteen siihen puuttumatta. Piiri kykenee neljään eri siirtonopeuteen; 115.2kbps, 57.6kbps, 19.2kbps, 9.6kbps, viimeisimmän ollessa oletusarvo käynnistettäessä. Kääntäjä Kääntäjänä käytettiin Small Device C Compileria (SDCC) versio 2.4.0. Koska kääntäjä ei sitä oletuksena osaa tehdä, täytyy käännetty assembly-koodi muokata tarkoitusta varten luodulla apuohjelmalla, joka muuttaa keskeytysrutiinin koodisegmentin nimen. Linkkerille annetaan erityisohjeet ko. koodisegmentin sijoittamista varten, koska EVTEK-5103 vaatii sarjaportti 2:n keskeytysaliohjelman sijoittamisen muistipaikkaan 0xB800. [3] Kirjastojen luonti Projektin tavoitteena oli tuottaa helppokäyttöiset aliohjelmakirjastot, joiden avulla voidaan käsitellä erilaisia 1-Wire väylään liitettyjä laitteita. Pääosin tavoite saavutettiin, joskin laajennuksen varaa jäi jäljelle. Valmiiksi saatiin alustustoiminnot, joilla 1-Wire väylän kanssa pystytään kommunikoimaan, sekä yksi aliohjelmafunktio, jolla voidaan lukea lämpötila DS1820 -anturilta. Projektia voisi jatkaa luomalla erilliset funktiot muiden 1-Wire laitteiden käyttöön, mutta sitä ei tämän projektin puitteissa katsottu järkeväksi, sillä erilaisia 1-Wire laitteita on tarjolla pilvin pimein. Esimerkkifunktioita soveltamalla ja datalehtiä tutkimalla voidaan tarvittaessa vaihtoehtoisia ajureita kehittää kohtuullisen pienellä vaivalla. Kirjastot rakennettiin muokkaamalla Maximin ja Dallas Semiconductorin esimerkkikoodia toimimaan EVTEK-5103 laudalla. Itse koodista saa parhaiten selville, mitä kaikkea sille on tehty toimivuuden aikaansaamiseksi. Työkalut SDCC:n lisäksi käytettiin muutamia itse tehtyjä ohjelmistotyökaluja. Tärkeimpinä näistä jo mainittu segmentrename, automaattinen käännösskripti compile.sh, sekä sarjaliikenteen seurantaan tarkoitettu ohjelma, jolla sarjaväylässä liikkuvia komentoja pystyttiin seuraamaan reaaliajassa, mahdollistaen toiminnan tarkan seurannan. Työkalun myöhemmät versiot mahdollistavat jo heksamuotoisten komentojen kirjoittamisen ja vastaanottamisen suoraan tietokoneelta, jolloin DS2480B -piiriä voidaan ohjata täysin manuaalisesti. Ominaisuus helpottaa merkittävästi piirin toiminnan ymmärtämistä. Tulevaisuuden mahdollisuudet Koska EVTEK-5103 laudalla on vain yksi vapaa sarjaportti, olisi järkevää toteuttaa 1-Wire -väyläliitäntä rinnakkaisporttiin. Tällöin sarjaporttia voitaisiin käyttää ulkomaailman kanssa kommunikointiin. Raportoinnin tulisi myös olla monipuolisempaa, mikä mahdollistuisi paremmilla oheislaitteilla/ajureilla, kuten LCD-näytön ohjauksella.

Lopuksi tietysti tärkein laajennuskohde on 1-Wire-oheislaitemodulien rakentaminen, joilla koko projektin hyödyllisyyttä opiskelukäytössä on mahdollista lisätä. Viitteet: [1] : http://pdfserv.maxim-ic.com/en/an/app192.pdf Using the DS2480B Serial 1-Wire Line Driver [2] : http://pdfserv.maxim-ic.com/en/an/app187.pdf 1-Wire Search Algorithm [3] : Liite 1 - segmentrename.c [4] : Liite 2 - piirilevykaavio

Liite 1 segmentrename.c Ohjelmasta on olemassa erillinen Windows-versio joka on saatavissa pyynnöstä. /* segmentrename.c - Copyright (C) 2005 Arto Rantala May be freely used, modified and distributed inside EVTEK provided this copyright notice is included. Any modification or distribution outside of EVTEK is permitted only under the GNU General Public License available at http://www.gnu.org/copyleft/gpl.html. This program is offered with absolutely NO WARRANTY. This program is used for modifying.asm programs created by the SDCC compiler. It can be used for changing the names of certain code segments from CSEG to something else, permitting assignment of these code segments to other memory spaces. In its current state it finds the line in the file that begins with "; code", then finds the next line with the word "CSEG" in it and subsequently proceeds to replace that word with the second commandline parameter. Version history: v. 1.0 - first release */ #include <strings.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int findandreplace(int fd,char* string); int main(int argc, char *argv[]){ int i; int fd; int result; printf("segmentrename (C) 2005 Arto Rantala\n"); if (argc==3){ if ((fd=open(argv[1],o_rdwr))>-1){ result=findandreplace(fd,argv[2]); else{ printf("unable to open file %s\n",argv[1]); else{ printf("usage: %s filename replacement_string\nwarning: The original file will be overwritten!\n",argv[0]); result=-1; if (result==0) printf("done\n"); else printf("error\n"); return result; int findandreplace(int fd,char* string){ int i; char* buffer; char* outputbuffer; char* found; int filesize,foundpos; int result; filesize=lseek(fd,0,seek_end); lseek(fd,0,seek_set); buffer=(char*)malloc((filesize+1)*sizeof(char)); outputbuffer=(char*)malloc((filesize+strlen(string)+1)*sizeof(char)); if(read(fd,buffer,filesize)>0){ found=strstr(buffer,"; code"); found=strstr(found,"cseg"); if(found!=null){ foundpos=(int)found-(int)buffer; for (i=0;i<foundpos;i++){ outputbuffer[i]=buffer[i]; for (i=0;i<strlen(string);i++){ outputbuffer[foundpos+i]=string[i]; for (i=0;i<filesize-foundpos-4;i++){ outputbuffer[foundpos+strlen(string)+i]=buffer[foundpos+4+i]; lseek(fd,0,seek_set); result=write(fd,outputbuffer,filesize+strlen(string)-4); else{ printf("unable to find the string. Has the file already been fixed once?\n"); result=0; free(buffer); free(outputbuffer); if (result>0) return 0; else return -1;

Liite 2 - piirilevykaavio