Hogyan csatlakozhat egy könyvtárhoz egy projekthez?

- az OWIPolled.h fájl konfigurálása

- válassza ki a OneWire interfész-szoftver implementációját

- állítsa be a mikrokontroller órajelét

#define CPU_FREQUENCY 16.000

- állítsa be azt a portot, amelyhez a OneWire busz csatlakoztatva van

#define OWI_PORT PORTD //! 60 μs, és a szünet> 1 μs közötti időrések között.

A nulla átvitel érdekében a mikrokontroller 60-120 μs időtartamra "meghibásodik" az 1 vezetékes buszon. Ezután "felszabadítja" és 1 másodpercig szünetel a következő bit írása előtt.

A készülék átviteléhez a mikrokontroller 1-től 15 mikrométeres időtartamig "meghibásodik" az 1 vezetékes busz, "felengedi" és megáll. A szünetnek olyannak kell lennie, hogy az időrés időtartama> 60 + 1 μs legyen.

Az adatok olvasása 1-vezetékes buszon

DS18B20 egy kiszolgáló eszköz, és továbbítja az adatokat, ha a mikrokontroller generál 1-Wire busz olvasás időrésben. A formáció időrés olvasó mikrovezérlő „nem” 1-vezetékes busz egy ideig 1-15 mikroszekundum, majd a „kiadások” azt, átadó kontroll állapotban 1-vezetékes busz DS18B20 érzékelőt. Ha DS18B20 halad nulla, ez tartja a busz a „Sikertelen” állapot (a logikai nulla), hogy a végén az időrés. Ha 1-et továbbít, akkor a busz "szűk" állapotban marad.

A mikrokontroller képes olvasni a DS18B20 szenzoradatait 15 μs-ban az olvasás időrésének kezdete után.

Hogyan csatlakozhat egy könyvtárhoz egy projekthez?

Tehát, van egy alapvető megértése adatokat cseréltek egy 1-Wire busz, és akkor lépni a következő része -, hogy hogyan kezeljék a DS18B20, hogyan kell kezdeni a folyamatot hőmérséklet átalakulását az érzékelő olvasni egy hőmérséklet beállított hőmérséklet felbontás, stb .D.

A DS18B20 eléréséhez szükséges műveletek sorrendje a következő:

2. A ROM parancs benyújtása

3. A DS18B20 funkcionális parancs benyújtása

ROM parancsokat

Az inicializálással minden világos. A mikrokontroller meghibásodik a buszon, felszabadítja és megvárja a slave válaszát. Ha legalább egy DS18B20 hibás érzékelő van a buszhoz csatlakoztatva, akkor a jelenlét-impulzus válaszol.

A jelenlét-impulzust kapott, a mikrokontrollernek 1-vezetékes ROM parancsot kell küldenie. Öt ilyen csapat van.

keresés rom (0xF0 parancskód)

Ez a parancs lehetővé teszi a mikrokontroller számára, hogy elolvassa a 64 bites slave kódot. A parancs akkor használható, ha csak egy 1 vezetékes eszköz csatlakozik a buszhoz.

A mikrokontroller kiadja a rom parancsot

A mikrokontroller a slave kód 8 bájtját kapja

A buszra csatlakoztatott összes 1-vezetékes eszköz eléréséhez használja a skip rom parancsot. Például ez a parancs használható az összes DS18B20 érzékelő hőmérséklet-átalakítására egyszerre.

A mikrokontroller kiadja a parancsot

A mikrokontroller kiadja a convert t parancsot

A mikrokontroller adja ki a match rom parancsot

A mikrokontroller a slave kód 8 bájtját adja ki

A mikrokontroller funkcionális parancsot ad ki.

riasztáskeresés (0xEC)

Ennek a parancsnak a hatása megegyezik a search rom parancs hatásával, csak az alárendelt eszközök jeleznek egy riasztási jelzővel. A riasztásjelzőt a DS18B20-ban állítják be, ha meghaladják a Tl és Th regiszter által meghatározott hőmérsékleti küszöbértékeket.

Funkcionális parancsok

Belső memória

A DS18B20 hőmérő 8 bájtnyi RAM-mal (karcoláspad és további RAM) és 3 bájt EEPROM-ot tartalmaz.

Hogyan csatlakozhat egy könyvtárhoz egy projekthez?

A 0 és 1 bájt a mért hőmérséklet. A hőmérséklet kezdeti értéke (áramellátásnál) +85 fok. A regiszterek formátuma:

ahol S - a hőmérséklet jele (0 - pozitív hőmérséklet 1 - negatív), BIT10-Bit4 - egész része a hőmérséklet, bit3-BIT0 - törtrész.

A negatív hőmérsékletet a kiegészítő kód tartalmazza. A nyilvántartások tartalmának érthetőbb formában történő fordítását a következő részben ismertetjük.

Bytes 2 és 3 - felső és alsó hőmérséklet küszöbértékek. Ezeknek a bájtoknak az értékeit a felhasználó határozza meg. E bájtok kezdeti értéke az EEPROM memória tartalmától függ. Mindkét regiszter formátuma:

ahol S a hőmérséklet jele (0 pozitív hőmérséklet, 1 negatív), a BIT6-BIT0 a hőmérséklet küszöbértékének teljes része.

4. bájt - a konfigurációs nyilvántartás. Meghatározza a DS18B20 hőmérséklet-felbontását. A regiszter kezdeti értéke az EEPROM memória tartalmától függ. Az új DS18B20 érzékelő alapértelmezett 12 bites felbontású. A konfigurációs nyilvántartás formátuma:

ahol R1, R0 a hőmérő hőmérséklet-felbontását meghatározó bitek.

Hogyan csatlakozhat egy könyvtárhoz egy projekthez?

Amint az táblázatból látható, a konverziós idő függ az adott hőmérséklet-felbontástól.

Az 5-től 7-ig terjedő bájtok le vannak foglalva és nem használatosak

A 8 byte egy CRC (ciklikus redundancia kód). A CRC érték a fogadott adatok ellenőrzésére szolgál.

Most a funkcionális parancsokról.

Ez a parancs elindítja a DS18B20 hőmérséklet-átalakítási folyamatot. A hőmérséklet értékét 0 és 1 bájt RAM érzékelő tárolja. Az átalakítás végrehajtási ideje a konfigurációs nyilvántartásban beállított felbontástól függ.

Ha a DS18B20 parazitikus üzemmódban működik, akkor a konvertáló parancs kiadása után a mikrokontrollernek az 1-vezetékes buszot az átalakítási idő tápfeszültségéhez kell csatlakoztatnia (lásd a diagramot).

Ha a DS18B20 tápellátását külső áramforrás táplálja, akkor a hőmérséklet-átalakítás indításakor figyelemmel kísérheti a végrehajtást. Ehhez a mikrokontrollernek létre kell hoznia olvasónyílásait a buszon és várnia kell az érzékelőre, hogy reagáljon egy egységgel.

Működési sorrend egy érzékelő esetén:

A mikrokontroller kiadja a parancsot

A mikrokontroller kiadja a convert t parancsot

A mikrokontroller időrést képez, és egy egységet vár

írja a karcolódást (0x4E)

Ez a parancs lehetővé teszi a mikrokontroller számára, hogy a DS18B20 érzékelő RAM-ban három byte - Th, Tl és a konfigurációs regisztert (2, 3, 4 byte RAM) írjon.

Működési sorrend egy érzékelő esetén:

A mikrokontroller kiadja a parancsot

A mikrokontroller kiadja a parancs írási regisztert

A mikrokontroller 3 bájt - Th, Tl és a konfigurációs regisztert adja át

olvasható karcoláspad (0xBE)

Ez a parancs lehetővé teszi a mikrokontroller számára, hogy elolvassa a DS18B20 érzékelő RAM tartalmát. Az adatokat a kis sorrendű bit továbbítja a nulláról a nyolcadik bájtra. A mikrokontroller bármikor küldhet visszaállító jelet az 1 vezetékes buszra, és megszakíthatja az adatok fogadását. Például, ha csak az első két byte RAM szükséges.

Működési sorrend egy érzékelő esetén:

A mikrokontroller kiadja a parancsot

A mikrokontroller kiadja a parancsot a karcolódobozról

A mikrokontroller 9 bájtnyi érzékelő RAM-ot fogad el

Működési sorrend egy érzékelő esetén:

A mikrokontroller kiadja a parancsot

Ezzel a parancssal a DS18B20 felülírja a RAM 2, 3 és 4 bájtjait (Tl, Th és a konfigurációs regiszter) az EEPROM-ban tárolt értékekkel.

A mikrokontroller képes figyelemmel kísérni a művelet elvégzését azáltal, hogy az 1-huzalos buszon az olvasási időkereteket képezi. A művelet végrehajtása közben a busz logikai zérus lesz, amikor a művelet befejeződik - egy logikai egység.

A visszahívás E 2 művelet automatikusan végrehajtódik, ha az érzékelő bekapcsolt állapotban van.

Működési sorrend egy érzékelő esetén:

A mikrokontroller kiadja a parancsot

A mikrokontroller kiadja az E2 parancsot

A mikrokontroller egy időrést képez az 1 vezetékes busz állapotának olvasásához és olvasásához

olvassa el a tápegységet (0xB4)

Elküldésével ezt a parancsot és után kialakult olvasási időrés mikrokontroller tudja határozni, hogy DS18B20 Melyik érzékelők. Ha be vannak a vonal (parazita teljesítmény mód) alatt az időrés olvassa el a 1-Wire busz tartják nulla használata esetén külső tápegységet, a busz szigorítani fogják a készüléket.

Működési sorrend egy érzékelő esetén:

A mikrokontroller kiadja a parancsot

A mikrokontroller kiadja a parancs olvasó tápellátását

A mikrokontroller egy időrést képez az 1 vezetékes busz állapotának olvasásához és olvasásához

Ez arra a következtetésre jut, hogy rövid utat adok az unalmas elméletnek. A következő részben továbbhaladunk az 1-vezetékes C könyvtárba, és elemezzük a projekt kódját.

Elmegyünk az elméletből a gyakorlatba. Feladatunk, hogy megkapjuk az aktuális hőmérséklet értékét a DS18B20 érzékelőtől, és kiadjuk a szimbolikus LCD kijelzőre.

Hogyan csatlakozhat egy könyvtárhoz egy projekthez?

Leírás 1-Wire könyvtár

A DS18B20 használatához egy kicsit hangolt 1 Wire könyvtárat használunk az AVR318 alkalmazásból. Ez a könyvtár érdekes abban, hogy nem "élesített" a konkrét egyvezetékes készülékek számára, és két lehetőséget kínál a felhasználónak az 1 vezetékes protokoll - szoftver és hardver megvalósítására. A szoftvertelepítés bármely mikrokontrollerrel együtt használható, a hardver végrehajtása csak az UART / USART modullal. Ez a cikk az 1-vezetékes protokoll szoftvertelepítésével foglalkozik.

Vessünk egy pillantást az 1 Wire könyvtár szerkezetére.

OWISWBitFunction.h, OWISWBitFunction.c, OWIUARTBitFunction.c - ezekben a modulok leírása alacsony szintű funkciók - inicializálási funkciót, a felvételi funkció 0 és 1, a funkció az olvasás 1-vezetékes busz és a funkciója válaszának érzékelése 1-Wire eszközök.

A fejlécfájl egy, a sish fájl két - egy a szoftverhez, a másik pedig a protokoll hardver végrehajtásához.

OWIHighLevelFunction.h, OWIHighLevelFunction.s - Ez a modul az a magasabb szintű funkciókat (ez nyilvánvaló a neve) - parancsok a felvétel funkciót, a funkció a leolvasási adatok függvényében keresi a 1-Wire eszköz a buszon.

Az OWIPolled.h az 1 Wire könyvtár-konfigurációs fájl. Meghatározza a protokoll végrehajtását, a mikrokontroller órajelét, az a portot, amelyhez az 1 vezetékes busz csatlakoztatva van, valamint az UART / USART modul beállításai.

A compilers.h olyan fájl, amely kompatibilis a könyvtárral a három fordító bármelyikével: IAR AVR, GNU GCC (WinAVR), CodeVision AVR.

OWIdefs.h - mindkét megvalósításban használt közös definíciók. A kódfüggvényekkel és az UART / USART mintákkal visszaadott ROM parancsok meghatározása.

OWIdevicespecific.h - konkrét definíciók a hardver végrehajtásához. A mikrokontrollerek UART / USART AVR moduljainak bitjei és regiszterei.

OWIcrc.h, az OWIcrc.c a modul, amely a ciklikus redundancia kód kiszámításának funkcióit tartalmazza.

1-huzalos könyvtár csatlakoztatása

Annak érdekében, hogy használhassuk az 1 Wire könyvtárat, meg kell kapcsolódnunk a projekthez és konfigurálni kell. A könyvtár csatlakoztatása az IAR projekthez a következő lépésekből áll:

1. Írja át az összes könyvtár fájlt a projekt mappájába

2. Csatlakoztassa a sish fájlokat a projekthez

3. Vegye fel a header fájlokat a main.c fájlba

Kapcsolódó cikkek