Založen: Apr 02, 2011 Příspěvky: 17869 Bydliště: Nový Bydžov
Zaslal: st leden 08 2014, 17:16 Předmět: Jak na Busy v LCD 2x16 v 4bit módu?
LCD s 2x16 v 8 bit módu používám už léta se všema funkcema, co řadič HD 44780 či ekvivalent umí. Protože mám tentokrát k dispozici jen málo portů, chtěl jsem zkusit 4bit řízení. Teorie je jasná, B7-B4 na GND. Pošlou se horní 4 bity, pak E do 1, pak 0, následně spodní 4 bity, znova E jako pro horní bity. Při inicializaci se posílá 1. instrukce pouze horní 4 bity konkrétně 0010 aby se interface převrátil na 4bit. Na netu je spousta příkladů, jak to naprogramovat v A51 či C51 ale všichni to dělají s pauzama za zápisem do řadiče. Jenže to je pro mě nepřijatelný, tlačí mě časování. Takže je nutný testovat BUSY. Na 8bit interface s tím nemám problém (i s tímto konkrétním displejem) ale jak se to dělá u 4bitu?? Nikde jsem to nenašel... Předpokládám, že se BUSY musí testovat po každým zapisu 4bit dat ale jak konkrétně, když je BUSY na 7 bitu stavovýho slova? Taky nadvakrát? Dýlku čtení píšou 0uS, takže předpokládat, že jakmile nastavím RW=1, tak při prvním E=1 je vždy ihned k dispozici horní půlka a po druhým E=1 spodní půlka stavovýho slova? Jestli to tak má být, tak mi to nechodí, stavový slovo mi stále vrací 00 a to i pokud je kurzor na pozici větší než 0 a tudíž DDRAM adresa by měla být ve stavovým slově větší než 0. Pokud to ale krokuju ručně, tak displej píše správně, pokud to jede v reálu, píše kraviny, nahodilý znaky z poslanýho textu.
Když tu není Andrea, jestlipak se tu najde někdo, kdo bude vědět v čem je dílo??
Díky
Jirka
Založen: Apr 02, 2011 Příspěvky: 17869 Bydliště: Nový Bydžov
Zaslal: st leden 08 2014, 23:58 Předmět:
Atlan napsal(a):
Nejako ta nevidim ovladat RS bez toho nejde citat FLAG busy
Pleteš se, čtení stavu je vývod RW. RS je identifikace instrukce nebo data. RW a RS a E mám určitě dobře, psal jsem, že to v 8 bitu chodí. Viz zde pro 8 bitu AT98C4051 (normální je pro 8 bit, modrá je přidaná pro 4 bit, vlastní čtení DDRAM se jen simuluje, nepotřebuju ji). Musel jsem přidat tečky Nuke neumí TAB a víc mezer za sebou. E, RW a RS jsou na P3.
BUSY:
.....CLR......E_LCD..........;LCD DISABLE
.....MOV.....P1,#0FFH.....;PREVRACENI P1 NA CTENI
.....CLR......RS_LCD........;INSTRUKCE
.....SETB.....RW_LCD......;CTI STAV
.....NOP.........................;PRO UKLIDNENI
.....SETB.....E_LCD.........;LCD ENABLE
BUSY1:
.....JB.........P1.7,BUSY1...;CEKA NA 0
.....CLR.......E_LCD.........;LCD DISABLE
.....SETB.....E_LCD.........;LCD ENABLE, CTENI DRUHY PULKY
.....NOP..........................;PRO UKLIDNENI
.....CLR......E_LCD...........;LCD DISABLE
.....CLR......RW_LCD.......;VRAT NA ZAPIS
.....SETB.....RS_LCD.......;NASLEDUJI DATA
.....RET
Založen: Aug 04, 2009 Příspěvky: 1300 Bydliště: okres Písek
Zaslal: čt leden 09 2014, 23:32 Předmět:
Jiří,
podle mě je to trochu jinak. Z datasheetu hlavně vyplývá, že:
- minimální perioda hodin na vstupu Enable je 1µs
- oba dílčí přenosy bajtu jsou strobované sestupnou hranou Enable
Jenže při čtení busy/not busy je jen D7 onen klíčový bit, zbytek bajtu je aktuální adresní ukazazel CGRAM! Takže správně by to mělo vypadat následovně:
[1] přečíst stav busy/not busy
[2] počkat, až bude stav not busy
[3] poslat (příkladně) zápisový bajt
[4] odchod z podprogramu
A vlastní přenos bajtu (je fuk jestli zápis čehokokoli, čtení, zjišťování stavu) provádět stylem:
[1b] přenos prvního nibble (strobovaný sestupnou hranou Enable)
[2b] pauza 1µs
[3b] přenos druhého nibble (viz [1b])
Platí i pro tu proceduru "Read busy flag". První nibble obsahuje busy bit a část adresy, druhý zbylou část adresy CGRAM, takže podle něj (toho druhého) nelze odhadovat okamžik, kdy je dovolený další přenos bajtu po částech. Viz výše.
Založen: Apr 02, 2011 Příspěvky: 17869 Bydliště: Nový Bydžov
Zaslal: pá leden 10 2014, 1:29 Předmět:
to judeware: Není to jinak. Ale máš pravdu s časováním. Koukal jsem na obslužák LCD napsanej pro AVR, co sem dal odkaz AB1 a dělají to úplně stejně jako já akorát přidali 2 NOPy mezi čtení první a druhý půlky stavovýho slova.
1/ nastaví RW=1, RS=0, E=1
2/ počkají 1 x NOP
3/ načtou první půlku stavu
4/ nastaví E=0
5/ počkají 2 x NOP
6/ nastaví E=1
7/ počkají 1 x NOP
8/ načtou druhou půlku stavu
9/ nastaví E=0
10/ otestují bit Busy a pokud stále je, tak to čtou celý znova
Takže i když datašít ukazuje na sestupnou hranu, tak řadič reaguje už na úroveň E=1. Takhle to v 8bit režimu používám od roku 1992.
Ale nejpodstatnější je, že když jsem přidal už 1 NOP ( do bodu 5/) tak se to rozjelo!!! Jestli počítám správně, tak při krystalu 12MHz je dýlka vykonání NOP právě kolem 1uS a nejspíš řadič LCD nedokázal na ten "pulz do nuly" mezi dvěma E(nable) zareagovat.
Díky všem kdo se ozvali.
Jirka
Nemůžete odesílat nové téma do tohoto fóra. Nemůžete odpovídat na témata v tomto fóru. Nemůžete upravovat své příspěvky v tomto fóru. Nemůžete mazat své příspěvky v tomto fóru. Nemůžete hlasovat v tomto fóru. Nemůžete připojovat soubory k příspěvkům Můžete stahovat a prohlížet přiložené soubory
Informace na portálu Elektro bastlírny jsou prezentovány za účelem vzdělání čtenářů a rozšíření zájmu o elektroniku. Autoři článků na serveru neberou žádnou zodpovědnost za škody vzniklé těmito zapojeními. Rovněž neberou žádnou odpovědnost za případnou újmu na zdraví vzniklou úrazem elektrickým proudem. Autoři a správci těchto stránek nepřejímají záruku za správnost zveřejněných materiálů. Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva. Použití konstrukcí v rozporu se zákonem je přísně zakázáno. Vzhledem k tomu, že původ předkládaných materiálů nelze žádným způsobem dohledat, nelze je použít pro komerční účely! Tento nekomerční server nemá z uvedených zapojení či konstrukcí žádný zisk. Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ. V případě, že zjistíte porušení autorského práva či jiné nesrovnalosti, kontaktujte administrátory na diskuzním fóru EB.