Realizace
Obsah nákupního košíku je vidět na obrázku 1.16. Textově je tento seznam uveden v tabulce 1.7. Začneme umístěním trimru R5, konektoru JP1 a JP2 na plošný spoj. Trimr R5 umístíme dvěma vývody pevného odporu trimru směrem k vodiči napájecího napětí, resp. směrem k integrovanému obvodu U1. Vývod sběrače trimru pak bude směřovat k vodiči země. Tři dírky vedle trimru umístíme menší konektor JP1 a to tak, aby po zasunutí zásuvky tato lícovala s hranou DPS.
Značka | Ks | Název | Objednací kód | Cena/ks |
DIS1 | 1 | LCD displej 16x2, STN, LED | GES05105205 | 274,- Kč |
R5 | 1 | Trimr 2k2, 10x10mm; 5%, horizontální | GES05302883 | 5,50 Kč |
JP1 | 1 | Konektor male 90° do PCB, 10PIN | GES06600571 | 2,50 Kč |
JP2 | 1 | Konektor male 90° do PCB, 4PIN | GES06600565 | 0,75 Kč |
-- | 1 | Zásuvka k PSS s vodičem 30cm, 10PIN | GES06615186 | 19,90 Kč |
-- | 1 | Zásuvka k PSS s vodičem 30cm, 4PIN | GES06615182 | 9,90 Kč |
Hned vedle konektoru JP1 umístíme delší konektor JP2. Přesné umístění součástek je patrné z obrázku 1.17. Trimr a oba konektory zapájíme. Trimr bude držet v dírkách sám, konektory musíme nejprve lehce přichytit troškou cínu nebo kalafuny za jeden z pinů a pak je zapájet nahotovo.
Nyní je čas začít pájet spoje. Začneme delším konektorem JP2. Drátky na straně součástek (viz obrázek 1.18) zapájíme mezi piny konektoru JP2 a místem kudy prochází datová sběrnice a řídící signály /Strobe a /Autofeed. Postupujeme od levé strany konektoru JP2 (od trimru R5). První pin konektoru JP1 propojíme s řídícím signálem /Strobe, druhý se signálem /Autofeed, třetí s datovým signálem D0 atd. Na straně spojů tyto drátky spojíme s piny konektoru JP2 vytvořením můstku pomocí většího množství cínu. Potom druhé konce těchto drátků spojíme s vodiči datové sběrnice a vodiči řídících signálů tímto postupem (viz obrázek 1.18) - odizolujeme si kus drátku, přípájíme jej jedním koncem k drátku od konektoru JP2 a pak jeho druhý konec připájíme k již existujícím drátku spojujícím integrovaný obvod U1 s datovou/řídící sběrnicí. Nakonec jej štípacími kleštěmi zakrátíme. Delší drátky pro jistotu připájíme k DPS zhruba uprostřed jejich délky.
Pokračovat budeme se spoji konektoru JP1 a trimru R5. Začneme spoji se zemí, pro které budeme používat modré drátky. U trimru R5 spojíme drátkem se zemí levý a prostřední pin (viz obrázek 1.18). U konektoru JP1 nejprve propojíme drátkem pin 1 a 4 (bráno zleva) a pak pin 1 propojíme se zemí. Oranřovým drátkem, který bude končit jednu dírku před konektorem JP1 spojíme pin 2 konektoru JP1 se společným vývodem odporové sítě RN1, který je připojen na napájení. Potom drátkem modrobíle barvy propojíme pin 3 konektoru JP1 s pravým pinem trimru R5. Nakonec na straně spojů propojíme oranžový a modrobílý drátek s piny konektoru JP1. Použijeme opět odizolované kousky drátku (viz obrázek 1.18).
LCD displej budeme připojovat k HW přípravku pomocí dvou kabelů: 4pinového a 10pinového. Díky výrobci konektorů PSS jsme uštřeni nacvakávání žil kabelu na piny konektoru PSS. Jediné, co musíme udělat je přípájení žil obou kabelů k LCD displeji.
Konektory PSS nasadíme do konektorů JP1 a JP2 na HW přípravku. Černou žílu 4-žilového kabelu zapojeného do konektoru JP1, tedy první žílu zleva, připájíme na pin 1 LCD displeje. Drát nasadíme na displej shora a zapájíme jej ze strany spojů na plošném spoji LCD displeje. Podobně postupujeme u hnědé a červené žíly. Poslední oranžovou žílu ale připájíme až na pin 5 LCD dspleje (viz schéma 1.15)! Pokračujeme dále se 10-žilovým kabelem. Jeho první černou žílu zapájíme na pin 4 LCD displeje, dále hnědou žílu na pin 6 atd až skončíme u pinu 14, ke kterému připájíme desátou bílou žílu. Výsledek je patrný z obrázku 1.19. Pomocí tenkých drátků svážeme žíly obou kabelů k sobě. Nejlépe na několika místech. Vytvoříme tak kompaktnější kabel.
Displej můžeme kvůli kompaktnosti pomocí drátků přichytit k plošnému spoji HW přípravku. Výsledek našeho snažení je vidět na obrázku 1.20.
Oživení
Před samotnou zkouškou pod napětím provedeme důkladnou vizuální kontrolu. Na straně součástek zkontrolujeme správnost zapojení oproti schématu na obrázku 1.15. Na straně spojů se zaměříme na vodiče datové a řídící sběrnice. Pečlivě zkontrolujeme, že tyto vodiče nejsou vzájemně propojeny a že jsou pevně uchyceny. Dáme si pozor na nechtěné spoje ukryté pod nánosem kalafuny.
Jestliže vizuální kontrola neodhalila žádné nedostatky, zkusme připojit napájecí napětí +5V. Měla by se rozsvítit horní řada znaků LCD displeje (vzi obrázek 1.21). Trimrem R5 musí být možné regulovat jas LCD displeje. Pokud se tak děje je zapojení v pořádku. Další ověření funčnosti provedeme až při implementaci ovladače pro zařízení LCD displeje.
Ovladač
Vzorový kód ovladače zařízení lcd1602, včetně projektu v Eclipse je ke stažení zdehttp://www.ucsimply.cz/products/modsam9260/#Zdrojové kódy. Tento zdrojový kód vznikl doplněním kostry ovldače dskel, kterou jsme si připravili v části o vývoji ovladačů. Zdrojový kód ovladače zařízení led4x můžeme v počítači s Linuxem buď naimportovat do Eclipse a zkompilovat jej v prostředí Eclipse nebo můžeme kompilaci provádět přímo v příkazové řádce příkazem make.
Postup importu projektu ovladače do Eclipse:
- V Eclipse v hlavním menu zvolíme File->Import....
- V otevřeném dialogovém okně vybereme ve složce General položku Existing Projects into Workspace a stiskneme tlačítko Next.
- V dalším okně zvolíme Select archive file a vložíme cestu k archivu zdrojového kódu ovladače a stiskneme tlačítko Finish.
- Projekt ovladače se naimportuje do aktuálního pracovního prostoru Eclipse.
- Ověříme, že v makefile ovladače je v proměnné KDIR uvedená správná cesta ke stromu zdrojových kódů jádra. Přípomínám, že ovladač musí být kompilován vůči jádru, do kterého ho pak budeme zavádět.
Zdrojové kódy ovladače máme naimportovány. V následujícím textu si zdrojové kód ovladače stručně rozebereme, abychom si objasnili funčknost ovladače.
Ovladač zařízení lcd1602 je ve své podstatě velmi jednoduchý. V rámci inicializace ovladače je provedena i inicializace displeje implementovaná ve funkci init_display() dle inicializační sekvence popsané na obrázku 1.14.
Zobrazování znaků a komunikaci s displejem má na starosti sada funkcí s názvem write_neco(). Z nich se zaměříme na funkci write_buffer(). Ta zajišťuje zobrazení dat z buferu znaků na LCD displeji. Funkce podporuje i dva escape znaky (\t a \r), které pokud jsou součástí řetězce znaků určených k zobrazení, umožňují uživateli posouvat text o jednu mezeru doleva (escape znak \t), případně skočit na další řádek (escape znak \r) - násleující znaky jsou pak zobrazeny na dalším řádku displeje.
Mimo to je podporováno i automatické zalomení textu. Na obrázku 1.22 je vidět zobrazení textu ”Dobrý den mistre!”, který byl do displeje přenesen pomocí příkazu:
$ echo -en "\t\t\t\tDobry den\r\t\t\t\t\tmistre" >/dev/lcd1602
Poznámka: Při každém systémovém volání open() je displej smazán.
Do buferu znaků je možné z uživatelského prostoru zapisovat pomocí systémového volání write() směřovaného na zařízení /dev/lcd1602. To snadno zajistíme např. příkazem echo s volbou -e, která zapne interpretaci escape znaků, a volbou -n, která vypíná automatické přidávání escape znaku konce řádku \n.
Velikost buferu znaků je omezena na 32 znaků (bytů) a zahrnuje i podporované escape znaky.
Systémová volání read() a ioctl() nejsou ovladačem podporována.
Test ovladače
Oživování začneme zapojením napájecího napětí a následně spuštěním pokusného PC. Ovladač zkompilujeme a zavedeme příkazem insmod do jádra na pokusném počítači. V adresáři /dev by se měl objevit soubor zařízení lcd1602. V opačném případě příkaz insmod zahlásí nějakou chybu.
Po zavedení ovladače musí z displeje zmizet první řádek znaků (obdelníků). Pak zkusíme na displej poslat nějaký text, např. příkazem echo - viz výše. V případě problémů bude chyba velmi pravděpodobně v inicializaci displeje. Zkontrolujeme čekací doby mezi jednotlivými kroky inicializační sekvence. Ověříme, že používáme správné řídící signály apod.