Vítejte na Elektro Bastlírn?
Nuke - Elektro Bastlirna
  Vytvořit účet Hlavní · Fórum · DDump · Profil · Zprávy · Hledat na fóru · Příspěvky na provoz EB

Vlákno na téma KORONAVIRUS - nutná registrace


Nuke - Elektro Bastlirna: Diskuzní fórum

 FAQFAQ   HledatHledat   Uživatelské skupinyUživatelské skupiny   ProfilProfil   Soukromé zprávySoukromé zprávy   PřihlášeníPřihlášení 

Jak na Busy v LCD 2x16 v 4bit módu?

 
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Celeron



Založen: Apr 02, 2011
Příspěvky: 17869
Bydliště: Nový Bydžov

PříspěvekZaslal: st leden 08 2014, 17:16    Předmět: Jak na Busy v LCD 2x16 v 4bit módu? Citovat

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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
nekmil



Založen: Mar 06, 2005
Příspěvky: 787
Bydliště: Havířov

PříspěvekZaslal: st leden 08 2014, 18:14    Předmět: Citovat

"Teorie je jasná, B7-B4 na GND" no teď jsi mě poněkud vykolejil. Já dělám v BASCOMU a tam se při 4-bitovém řízení právě na B4-B7 posílají data.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail
Mendor



Založen: Apr 16, 2008
Příspěvky: 223
Bydliště: Kladno

PříspěvekZaslal: st leden 08 2014, 18:20    Předmět: Citovat

nekmil napsal(a):
...Já dělám v BASCOMU a tam se při 4-bitovém řízení právě na B4-B7 posílají data.

Hlavně klid, máš to správně. On se asi jenom splet.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Atlan



Založen: May 10, 2004
Příspěvky: 4509
Bydliště: Košice

PříspěvekZaslal: st leden 08 2014, 23:12    Předmět: Citovat

Nejako ta nevidim ovladat RS bez toho nejde citat FLAG busy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17869
Bydliště: Nový Bydžov

PříspěvekZaslal: st leden 08 2014, 23:58    Předmět: Citovat

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

Jirka
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rnbw



Založen: Mar 21, 2006
Příspěvky: 33995
Bydliště: Bratislava

PříspěvekZaslal: čt leden 09 2014, 8:19    Předmět: Citovat

Kod davaj to tagu [code]
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
AB1



Založen: Nov 23, 2009
Příspěvky: 312

PříspěvekZaslal: čt leden 09 2014, 9:52    Předmět: Citovat

Tady je o tom něco i s kódem.
http://www.avrbeginners.net/interfacing/44780_lcd/4bit.html
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17869
Bydliště: Nový Bydžov

PříspěvekZaslal: čt leden 09 2014, 10:52    Předmět: Citovat

Dík, je to sice AVR s kterým nedělám ale instrukce vypadají podobně jako A51, tak to snad s tabulkou instrukcí rozlousknu.
Jirka
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
judeware



Založen: Aug 04, 2009
Příspěvky: 1300
Bydliště: okres Písek

PříspěvekZaslal: čt leden 09 2014, 23:32    Předmět: Citovat

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.



HD44780.png
 Komentář:

Stáhnout
 Soubor:  HD44780.png
 Velikost:  62.6 kB
 Staženo:  57 krát

Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Celeron



Založen: Apr 02, 2011
Příspěvky: 17869
Bydliště: Nový Bydžov

PříspěvekZaslal: pá leden 10 2014, 1:29    Předmět: Citovat

to judeware: Není to jinak. Smile Ale máš pravdu s časováním. Number one 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. Datlující
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
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
Přidat nové téma   Zaslat odpověď       Obsah fóra Diskuzní fórum Elektro Bastlírny -> Programování PIC, ATMEL, EEPROM a dalších obvodů Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
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

Powered by phpBB © 2001, 2005 phpBB Group
Forums ©
Nuke - Elektro Bastlirna

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.


PHP-Nuke Copyright © 2005 by Francisco Burzi. This is free software, and you may redistribute it under the GPL. PHP-Nuke comes with absolutely no warranty, for details, see the license.
Čas potřebný ke zpracování stránky 0.16 sekund