Ahoj,
snazim se rozchodit 4 bitovou komunikaci s LCD. Program je psany v ASM a je vicemene prevzaty z knihy od Davida Matouska - Prace s ATMEGA16.
Info o LCD jsem cerpal predevsim odtud: http://doveda.byl.cz/lcd/index.htm
Jde konkretne o typ tento LCD: http://www.gme.cz/cz/mc1602e-sbl-h-p513-128.html
Prikladam projekt v AVRStudiu, ktery se sklada ze dvou casti - hlavni program lcdfinal.asm + lcd.inc = knihovnma pro praci s LCD. Prikladam take schema....
Program jsem nekolikrat prochazel, krokoval,....ale porad nevim kde delam chybu Sad ....
Program by mel postupovat tak, ze vola metodu LCDINI z knihovny lcd.inc, tam se natavi 4b komunikace,.....
a pote by mel zobrazovat text.........
Jedine, kde si nejsem jist, je casovani,ale snazil jsem se to udelat tak, ze:
nastavim RS , po case 100ns nastavim E na logickou jednicku
-sirku E pulzu mam min 300ns
-data mam vystavena 60ns pred tim nez shodim E na nulu
-a musi byt vystavena este 10ns pote, co shodim E na logickou nulu
a po nahrani do MCU LCD nefunguje .........displej se rozsviti a v prvnim radku jsou videt ctverecky(vsechny pixely cerne....)
Jinak LCD je urcite vporadku(po nahrani vzoroveho programu z doveda.byl.cz pro 16F84ku pracuje vporadku:-),
S LCD pracuji prvne tak prosim trpelivost Smile
Tak kdyby byl nekdo tak moc hodnej a prosel muj kod, abych vedel co delam spatne, tak bych byl moc vdecnej Smile........
Predem moc diky za rady a pripominky
Fórum › Mikrokontroléry
ATMEGA8 + řízení LCD MC1602E, 4-bitová komunikace
prvni radek ctvereckovany je priznak ze neni inicializovan..
pocitas s tim ze potrebujes asi 5 mozna 10 ms po startu a ze mezi vetsinou prikazu musi byt pomerne dlouhy mezery---
pokud to tam zenes i v radech mikrosekund tak je to jeste sakra moc rychle
To KIIV :
mám krystal 16MHz -> jedna instrukce zabere 0,06us = 60ns
Po zapnuti napajeni program ceka 15ms......pak podle toho, jak ktera instrukce potrebuje.........nekdy 100us, nekdy 40us, nekdy 1,6ms.........krokoval jsem v Debuggeru AVR studia a casy mi podle datasheetu sedi........
tak nevim, co konkretne mas na mysli??
Predem diky za odpoved :-)
To KIIV : to nejde jen tak dat pomalejsi krystal........to bych musel uplne prekopat celej program i celou knihovnu -> vsechny podprogramy cekani, casovani LCD,..........
ja si ale nemyslim, ze bych na ten displej sel moc rychle ...... pokud kouknes do datasheetu, a projedes zdrojaky, tak mi casovani sedi.......(dokonce i s rezervami........)
tak nevim co stim :-(
pravidlo cislo jedna: kdyz neco nejede - zpomal (nejjednodussi je to prave vymenou krystalu ale jde to i primo tema cekacima smyskama)
pokud ani to nezabere zacni poradne hlidat co, kam a jak posilas... posilas to na spravne misto? :)
a kdyz ani to nepomuze tak rucni debug mod.. proste se pauzne procesor a jen menis stavy na vystupu jak by to melo byt
(tady nehrozi zadny problem s casovanim.. casu dost )
a kdyz ani to tak zkusit 8b sbernici :D
To KIIV :
rucni debug mod ?? to moc nechapu, vysvetli prosim :-) .........?
Jinak ted jsem zkousel 4MHz krystal a zadna zmena.....:-(
8 bitovou sbernici zkouset nechci, potrebuju aby to zabralo jen jeden port.......
To Nemo : proste krokovat ... jestli mas jtag-ice nebo dragona ci jtag-ice 2 tak to umi ... nahraje se program a prochazi pekne po instrukcich (nebo prikazech- avr je podle me mnohem lepsi programovat v C - to same x51, pic treba zase je lepsi delat v assembleru.. tam je C trochu overkill)
To Nemo : jasně pro AVR je lepší psát v C. S displejema řady mc1602 dělám. Měl jsem je asi od čtyř různých výrobců a i když mají stejný řadič tak bylo vždy nutné upravit čekací konstanty, hlavně dobu vystavení dat a potvrzování na E.
Mám vlastní rutinu pro displej v C takže pokud by si chtěl není problém poskytnout.
U těchto displejů mívám občas taky problém, že LCD nejde resetovat ani odpojením napájecí větve. Musí se kompletně odpojit všecky piny kvůli parazitnímu napájení.
TO KIIV: ja mam obycejnej programator pres paralelni port(proste jen kabel)...takze onakym krokovani si nejspis muzu nechat zdat :-( ......
To Mario1: pro AVRka je asi lepsi C, jenze ja se na nich zacal ucit teprv nedavno a chtel sem proste trochu prelouskat i ten asm, ja navic ASM mam rad, a zatim sem vnem programoval bez problemu (PWM, SPI, USART,.......).........
Za nake ukazky kodu v C bych byl samozrejme rad, do budoucna by se mi to mohlo hodit....ikdyz ted mam(zatim) jako prioritu ASM.......
jinak bych chtel este poprosit, jestli byste mohli kouknout na ten zdrojak a zkusit najit chybu........
zdrojaky: http://pastebin.com/i8HkRRid a http://pastebin.com/ihXSi26T
a take mrknout do datasheetu LCD jestli jsem spravne napsal ty casy (sirku E pulsu,....) ten obrazek neni k precteni.......
Moc diky
To Nemo : ten jtag-ice se da postavit z par soucastek.. jedna mega 16 a krystal.. me teda nefungoval debug (jen programovani) ale nekde sem cetl, ze to nejelo kvuli nejaky stary verzi knihoven na XP (proste sem mel vyply aktualizace systemu)
No vida, tak asi vazne LCD nestihal ........ sem tam jsem do programu hodil nakej NOP + zvetsil zpozdovaci smycky(40us -> 50us, ...........) a uz to chodi :-) ....... ikdyz je mi to divny pac kdyz jsem to krokoval v simulatoru a kontroloval casy podle datasjheetu tak mi to sedelo......
Kazdopadne vsem diky za pripominky :-)
@nemo
je dobre si z techto radicu vycitat status a podle nej se zaridit
dnes ti to chodi, udelas si kopii, das tam ten stejny typ a budes se potykat se stejnym problemem
takhle si prectes status primo z lcd a uz te nezajima jestli je pauza mezi daty 1ns nebo 1h
Pani, z vlastnej skusenosti....displeje s radicom HD44780 (co je vacsina znakovych LCD) potrebuju pri inicializacii "dlhe" casy - priblizne 20mS. Potom uz mozes ist podla udajov v katalogu. Pokial sa LCD nezinicializuje a je to sw, hladajte chybu vzdy v inicializacnej rutine.
To vega33 : ano to sem rikal uz na zacatku.. ale je pravda ze sou taky straslive citlive.. studentici spalili hned dva v kratke dobe.. jednou prepolovali napajeni a jednou konektor..
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
LCD S6A0069 atmega8 — založil Tadeáš
Komunikace pres UART ATmega8 — založil b3ch
Bitova negacia ~ — založil mitti
64 bitova kompilacia na 32 bitovom systeme — založil Grungy
Moderátoři diskuze