Karakteres LCD kijelző használata MiniRISC processzoron

Hasonló dokumentumok
LOGSYS LOGSYS LCD KIJELZŐ MODUL FELHASZNÁLÓI ÚTMUTATÓ november 8. Verzió

Digitális technika (VIMIAA01) Laboratórium 10

Digitális technika (VIMIAA01) Laboratórium 9

Digitális technika (VIMIAA01) Laboratórium 9

PWM elve, mikroszervó motor vezérlése MiniRISC processzoron

A vezérlő alkalmas 1x16, 2x16, 2x20, 4x20 karakteres kijelzők meghajtására. Az 1. ábrán látható a modul bekötése.

SZORGALMI FELADAT. 17. Oktober

Programozási segédlet DS89C450 Fejlesztőpanelhez

Digitális technika (VIMIAA02) Laboratórium 12

Digitális technika (VIMIAA02) Laboratórium 12

Yottacontrol I/O modulok beállítási segédlet

LOGSYS LOGSYS SPARTAN-3E FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 19. Verzió

A/D és D/A konverterek vezérlése számítógéppel

Az MSP430 mikrovezérlők digitális I/O programozása

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Adatfeldolgozó rendszer tervezése funkcionális elemekkel

Az interrupt Benesóczky Zoltán 2004

Kaméleon K860. IAS Automatika Kft

A mikroprocesszor felépítése és működése

Digitális technika VIMIAA01 9. hét Fehér Béla BME MIT

Digitális technika VIMIAA01 9. hét

Perifériák hozzáadása a rendszerhez

Mikrorendszerek tervezése

LOGSYS LOGSYS SZTEREÓ CODEC MODUL FELHASZNÁLÓI ÚTMUTATÓ szeptember 16. Verzió

SysCVideo: fiktív grafikus kártya SystemC modulként, SDL alapú megjelenítéssel

1. ábra: Perifériára való írás idődiagramja

Dinnyeválogató v2.0. Típus: Dinnyeválogató v2.0 Program: Dinnye2 Gyártási év: 2011 Sorozatszám:

SYS700-PLM Power Line Monitor modul DDC rendszerelemek, DIALOG-III család

Digitális technika (VIMIAA01) Laboratórium 11

Digitális rendszerek. Mikroarchitektúra szintje

IDAXA-PiroSTOP. PIRINT PiroFlex Interfész. Terméklap

Mérési jegyzőkönyv. az ötödik méréshez

SR mini PLC Modbus illesztő modul. Modul beállítása Bemeneti pontok kiosztása főmodul esetén Bemeneti pontok címkiosztása kiegészítő modul esetében

_INVHU000_WriteReadParameter.cxf Frekvenciaváltók

A Számítógépek hardver elemei

A Memory Interface Generator (MIG) beállítása a Logsys Kintex-7 FPGA kártyához

DIGITÁLIS TECHNIKA I

LOGSYS LOGSYS ECP2 FPGA KÁRTYA FELHASZNÁLÓI ÚTMUTATÓ szeptember 18. Verzió

PERREKUP DxxTx - HDK10 Rekuperátor vezérlő Használati Utasítás

DIALOG II PLM-B-000-LCD Hálózati paraméter felügyeleti modul Speciális készülékek

A számítógép alapfelépítése

PIC16F877 KÍSÉRLETI PANEL

Digitális technika VIMIAA hét

Digitális technika (VIMIAA01) Laboratórium 11

SYS700-A Digitális szabályozó és vezérlõ modul DDC rendszerelemek, DIALOG-III család. Terméktámogatás:

Összetett feladatok megoldása

Az I2C egy soros, 8 bit-es, kétirányú kommunikációs protokoll, amelynek sebessége normál üzemmódban 100kbit/s, gyors üzemmódban 400kbit/s.

Roger UT-2. Kommunikációs interfész V3.0

Nagy Gergely április 4.

Multi-20 modul. Felhasználói dokumentáció 1.1. Készítette: Parrag László. Jóváhagyta: Rubin Informatikai Zrt.

loop() Referencia:

XII. PÁRHUZAMOS ÉS A SOROS ADATÁTVITEL

Mikrorendszerek tervezése

2008. október 9. Verzió

Programozott soros szinkron adatátvitel

SIOUX-RELÉ. Sioux relé modul telepítési leírás Szerkesztés MACIE0191

3. A DIGILENT BASYS 2 FEJLESZTŐLAP LEÍRÁSA

I. C8051Fxxx mikrovezérlők hardverfelépítése, működése. II. C8051Fxxx mikrovezérlők programozása. III. Digitális perifériák

Digitális technika (VIMIAA02) Laboratórium 5

Digitális technika (VIMIAA02) Laboratórium 5

T Bird 2. AVR fejlesztőpanel. Használati utasítás. Gyártja: BioDigit Kft. Forgalmazza: HEStore.hu webáruház. BioDigit Kft, Minden jog fenntartva

Digitális technika (VIMIAA01) Laboratórium 4

Architektúra, megszakítási rendszerek

Serial 2: 1200/2400 bps sebességû rádiós modem vagy

3.6. HAGYOMÁNYOS SZEKVENCIÁLIS FUNKCIONÁLIS EGYSÉGEK

BELÉPTETŐ RENDSZER TERVEZÉSE

KIBŐVÍTETT RUGALMAS AUTOMATIZÁLÁS

Az AVR programozás alapjai. Előadja: Both Tamás

Digitális technika (VIMIAA02) Laboratórium 1

Laboratóriumi műszerek megvalósítása ARM alapú mikrovezérlővel és Linux-szal

Digitális technika (VIMIAA02) Laboratórium 1

Számítógépek felépítése, alapfogalmak

T2-CNCUSB vezérlő család hardver segédlet

LOGSYS LOGSYS HŐMÉRŐ ÉS EEPROM MODUL FELHASZNÁLÓI ÚTMUTATÓ szeptember 16. Verzió 1.0.

Vegyes témakörök. 1. Soros vezérlésű LCD számkijelző. Hobbielektronika csoport 2018/2019. Debreceni Megtestesülés Plébánia

Előadó: Nagy István (A65)

Véges állapotú gépek (FSM) tervezése

Tartalom. Port átalakítók, AD/DA átalakítók. Port átalakítók, AD/DA átalakítók H.1. Port átalakítók, AD/DA átalakítók Áttekintés H.

Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység

Felhasználói kézikönyv MC442H típusú léptetőmotor meghajtóhoz

SYS700-DIDO Digitális szabadon programozható szabályozó (Digitális be- és kimenettel) Szabályozók és vezérlõk

HSS60 ( ) típusú léptetőmotor meghajtó

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

5. Laborgyakorlat. Számláló funkciók, időzítő funkciók.

Összeadás BCD számokkal

DIGITÁLIS TECHNIKA feladatgyűjtemény

Digitális technika VIMIAA01

Digitális technika VIMIAA01

HSS86 ( ) típusú léptetőmotor meghajtó

ARM mikrovezérlők programozása

Útmutató EDC kézivezérlőhöz

Digitális technika (VIMIAA02) Laboratórium 4

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

KeyLock-23 Digitális kódzár 2 kimenettel, 3 bemenettel

A MiniRISC processzor

Digitális technika VIMIAA02 9. hét Fehér Béla BME MIT

Joint Test Action Group (JTAG)

LOGSYS LOGSYS SPARTAN-6 FPGA KÁRTYA (V2.1) FELHASZNÁLÓI ÚTMUTATÓ október 2. Verzió

Miskolci Egyetem Gépészmérnöki és Informatikai Kar. Villamosmérnöki BSc. szak Ipari automatizálás és kommunikáció szakirány

Digitális rendszerek. Digitális logika szintje

Átírás:

Karakteres LCD kijelző használata MiniRISC processzoron F1. A MiniRISC processzor rendelkezik általános célú adat be-/kimeneti (GPIO) interfészekkel. Ezek az interfészek rugalmasan használhatók szinte tetszőleges külső egységek illesztési feladatainak megoldására, nem túl nagy sebességi igények és nem túl precíz időzítési előírások mellett. A sebességi és időzítési korlátok oka az, hogy a jeleket programból, szoftveresen kezeljük, ami értelemszerűen jelentős megkötéseket jelent az időbeli felbontás és beállíthatóság területén. Ugyanakkor nagyon sok alkalmazásban a követelmények nem túl szigorúak, és a programozottan állítható jelekkel nagyon egyszerűen, extra hardver költségek nélkül szinte tetszőleges interfész protokollokat realizálhatunk. Az LCD modul áramköri illesztése A gyakorlat során egy 2 soros 8 karakteres alfanumerikus LCD kijelző illeszthetőségét vizsgáljuk meg, a MiniRISC processzor bővítő csatlakozóin hozzáférhető GPIO portok, jelek segítségével. Az LCD kijelző önmagában egy bonyolult egység, a működését egy belső vezérlőegység biztosítja. Az LCD vezérlő a kijelző használatához egy 8 bites párhuzamos kommunikációs interfészt biztosít, az adatlapján megadott időzítési adatokkal. Az interfész adat és vezérlőjelei: DB[7:0] RS R/W E Nyolcbites, kétirányú adatbusz Parancs/adat regiszter kiválasztó vezérlőjel Írás/olvasás irány vezérlőjel Engedélyező és ütemező vezérlőjel F1.a. Az interfész követelmények áttekintésével ismerjük meg az LCD modul áramköri illesztését a MiniRISC processzor által biztosított GPIO interfész portokhoz. Elemezzük a jelvezetékek szükséges számát, azok kívánt funkcionalitását, az áramköri szintek illeszthetőségének követelményét a különböző típusú (bemenet, kimenet, be-/kimenet) jelek esetén. Tekintsük át az interfészjelek és vezérlőjelek, továbbá az elérhető GPIO bitek egymáshoz rendelését, használati módjuk beállítási lehetőségeit. Ha külső egységet szeretnénk GPIO periférián keresztül vezérelni, akkor az első lépés a szükséges áramköri kapcsolatok realizálhatóságának ellenőrzése. Jelen esetben szükségünk van egy 8 bites kétirányú adatbuszra, továbbá 3 db vezérlőjelre, amik állandóan kimeneti irányt igényelnek. Ennek egy lehetséges megoldása a következő választás: DB[7:0] 8 bites kétirányú adatbusz GPIO_A[7:0] 8 bites port-on keresztül RS, R/W, E 3 db vezérlőjel GPIO_C[4:0] 5 bites port 3 bitje lehet állandó kimeneti jel. Az LCD 5V-os tápfeszültséget igényel, TTL jelszintek mellett. Az FPGA 3,3V-os I/O tápfeszültséget használ, CMOS kimeneti jelszintek mellett. Ez azt jelenti, hogy a CMOS kimeneti jelek jelszintjei kompatibilisek a TTL bemeneti jelek előírásával. (CMOS H kimenet ~3,3V, L kimenet ~0V, TTL H bemenet >2V, TTL L bemenet <0,8V, tehát a működési feltételek teljesülnek). Az adatvonalak illesztése már problémásabb, hiszen itt lehetne olyan helyzet, amikor az 5V tápfeszültségű LCD modul vezérelné az FPGA 3,3V bemenetét, ami nem megengedhető. Ezért ide egy kétirányú 5V 3,3V szintillesztő áramkörre van szükség. Ezt a célt szolgálja a LOGSYS LCD modul

SN74LVC4245 kétirányú buszmeghajtó áramkörének használata. A fenti szempontok alapján megtervezett modul kapcsolási rajzának részlete látható az alábbi ábrán.. Az LCD modul adatátviteli protokoll programozása Az LCD kijelzőben található vezérlő áramkör két darab 8 bites regisztert tartalmaz, utasítás regisztert (IR) és adatregisztert (DR). A két regiszter között az interfész RS regiszterkiválasztó jele választ. Az üzemmód vezérlő vagy beállítási parancsokat az IR utasításregiszterbe írjuk, ugyanitt olvashatjuk a végrehajtás állapotát jelző státusz bitet, a kijelzendő karaktereket pedig az adatregiszterbe írhatjuk. (Az adatregiszter is olvasható, de ez nem gyakori művelet). A használat táblázatos összefoglalása (a DDRAM és a CGRAM a vezérlő memóriaterületei, a DDRAM a kijelzendő karakterek kódját, a CGRAM a karakterkészlet bitképeit tárolja: A kommunikációs interfész átviteli időzítéseit a következő ábra és táblázat szemlélteti, jobb oldalon az írás művelet (R/W = 0), a bal oldalon az olvasás művelet (R/W = 1) idődiagramja látható.:

F1.b A vezérlőjelek és GPIO bitek egymáshoz rendelésének ismeretében tekintsük át a szükséges GPIO műveleteket az adatok kiadásához, beolvasásához, a vezérlő jelek kiadásához. Készítsünk időbeli ütemezési tervet a szükséges elemi műveletekhez, hogy azok az adatátviteli protokoll előírásainak teljesítésével az LCD kijelző elvárásai szerinti jelváltásokat valósítsák meg. Fordítsuk le MiniRISC processzor utasításokra a megtervezett elemi adatmozgatási, jelváltási feladatokat. Az LCD modullal 4 fajta átvitel végezhető. 1. Parancskiadás 2. Státusz lekérdezés 3. Adatkiírás 4. Adatbeolvasás. Ezekből az utolsó nem szükséges a normál használathoz, tehát nem készítjük el. A státusz lekérdezés is elhagyható lenne, de ekkor a másik két művelet után mindig az adatlapban megadott maximális értékű, maximális végrehajtási időket mindig meg kellene várnunk, ami biztosan rosszabb az egyes egyedi példányokkal elérhető sebességnél. Ezért a maradék három esetet realizáljuk. A státusz bit olvasása mindkét kiviteli művelet (parancs vagy adat) szinkronizálásához felhasználható, mégpedig akkor járunk el helyesen, ha a kiviteli műveletek elején vizsgáljuk az LCD modul KÉSZ állapotát.

Az LCD vezérléséhez használt GPIO_A és GPIO_C portok regiszterei és perifériacímeik a következők: Az adatkimeneti és irányregiszterek tartalma visszaolvasható (maszkolás/tesztelés, XOR invertálás). A GPI_A 8 bites adatbusz alapállapota legyen mindig a bemeneti irány, tehát kikapcsolt kimenet. Ez egy biztonsági beállítás, elkerülendő a kimenetek véletlen szembehajtását. Ezt minden átviteli művelet után biztosítjuk, kikapcsolva a meghajtást. A többi regiszter alapértéke a következő: Státusz olvasása: Ez a szubrutin tehát induláskor már helyes adatbusz irányítással indulhat. A processzor beállítja az RS=0, R/W=1, E=0 értékeket. Ezután RS és R/W értékének fenntartása mellett E értékét 1-re állítja. Ez legalább 2 utasítás, tehát teljesül a tas = 80 ns. Az E=1 érték beállítása után tddr=100ns múlva érvényes az adat az adatbuszon, tehát a következő utasításban (ami 187,5ns időt igényel, már mintavételezhető a státuszinformáció. Ha a beolvasott adatbuszon a státuszbájt 7. bitjének (Busy Flag) értéke 1, akkor az LCD még nem végzett. Újabb olvasással várakozunk.

MEGFIGYELÉS: Az E jel magas értékének időtartamára nincs semmilyen korlátozás. Tehát lehet egyetlen kitartott olvasás műveletben folyamatosan figyelni a BF állapotának változását. Ez nem nagy győzelem, de egyszerűsíti a programot. Tehát egy rövid ciklusban várunk, amíg a beolvasott adatbusz 7. bitje 0 lesz. Amint ez teljesül az RS és az R/W bitek stabil állapotban tartása mellett (mert a tah = 10ns) E=0-t állítunk be, és vége a státusz olvasásnak. A státuszflag beolvasásának időbeli lefolyása a következő idődiagramon látható (egy utasítás végrehajtásának ideje 3 órajel ciklus, azaz 187,5 ns). Egy t=187,5ns egyenletes osztású időskálán inkrementálisan rajzoltuk fel a folyamatot, jelölve a várakozó ciklust, majd a befejezést.

Hasonló módon készíthető el a parancs és adatkiviteli szubrutin is. Az eltérés az, hogy a vezérlőjelek kiadása után következik a parancs/adat kiadása, ami igényli az adatvonalak kimeneti engedélyezését is. Tehát először, pl. a parancskiadásnál RS=0, R/W=0 E=0 beállítása. Ezután következik a munkaregiszterbe írt parancskód kiírása a GPIO_A adatregiszterébe. Ezután a GPIO_A DIR irányregiszterét (ADR) minden biten 1-re, azaz kimenetre állítjuk. Ezzel minden feltétel adott az E=1 végrehajtás engedélyezés kiadásához. Ha kiadtuk E=1 értékét, azonnal előkészíthetjük a visszavételét is, mert legalább 2 utasításidő lesz az E=0 kivitele (385ns > tweh), az RS és R/W jelek értékének tartása mellett. Ezután a GPIO_A port kimeneti adatbusz meghajtókat is ki kell kapcsolnunk, tehát az ADR (GPIO_A vonalak iránya) regiszterbe csupa 0 értéket írunk. Ezután biztonsággal visszatérhetünk a szubrutinból. MEGJEGYZÉS: A rajzolt idődiagramhoz képest az adatbusz bekapcsolása az E jel kiadása előtt történt. Ez az előírásoknak nem mond ellent, így is lehetséges a szabályok betartása. Persze lehetne először az E = 1 beállítása, majd ezután az adatbusz aktiválása és az adat kiadása. Egy t=187,5ns léptékű lineáris idődiagramon az átviteli eseményeket bejelölve rajzoltuk le a valódi jelváltozásokat.

F1.c Tekintsük át az LCD modul működését ismertető legfontosabb műszaki paramétereket, különös tekintettel az LCD modul belső vezérlő áramkörének parancs/adatátvitel végrehajtatási időzítésére. Az LCD vezérlő 270kHz-es órajelfrekvenciája miatt a végrehajtás nagyon lassú, minden átvitel után jelentős várakozási időt kell beiktatnunk. Az LCD kijelző rendelkezésre állását a foglaltság jelző bit (Busy Flag) lekérdezéses ellenőrzésével tudjuk tesztelni. Készítsük el a várakozó rutin programkódját. Mikor érdemes a foglaltságjelző bitet tesztelni? Erre kérdésre már válaszoltunk az F1.a. pontban. F1.d Tekintsük át az LCD modul bekapcsolási inicializálásának folyamatát, a szükséges beállítások szerepét, értelmezését. Röviden értelmezzük az inicializálási szubrutin programkódot és működését!

Mivel az alapértelmezett adatbusz szélesség 8 bit és a LOGSYS bővítő csatlakozón az adatbusz összes bitje rendelkezésre áll, ezért a foglaltság jelzés (BF) kezdettől fogva lekérdezhető. A kétsoros üzemmód inicializálásához a következő műveleteket kell végrehajtani a bekapcsolás után: Várakozzunk az LCD kijelző saját belső inicializálásának befejeződéséig, ezalatt BF=1 kb. 15 ms ideig. Adjuk ki a Function Set parancsot: DL=1, N=1, F=0 (BF=1 kb. 4,1 ms ideig) Adjuk ki a Display Off parancsot (BF=1 kb. 39 μs ideig) Adjuk ki a Clear Display parancsot (BF=1 kb. 1,53 ms ideig) Adjuk ki az Entry Mode Set parancsot: I/D=1, SH=0 (BF=1 kb. 39 μs ideig) Adjuk ki a Display On parancsot (BF=1 kb. 39 μs ideig) Az LCD inicializációs szubrutin magába foglalja a két GPIO port felkonfigurálását is. Ennek megfelelően GPIO_A kezdetben 8 bites bemenet, GPIO_C alsó 3 bitje állandó kimenet, és az alapértékük nulla. A parancs kódok a beállításuk után egyenként kiadhatók, mindegyik saját magát időzíti, várakozik a BF flagre.