ATMEGA8 + řízení LCD MC1602E, 4-bitová komunikace – Mikrokontroléry – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

ATMEGA8 + řízení LCD MC1602E, 4-bitová komunikace – Mikrokontroléry – Fórum – Programujte.comATMEGA8 + řízení LCD MC1602E, 4-bitová komunikace – Mikrokontroléry – Fórum – Programujte.com

 

Nemo
~ Anonymní uživatel
31 příspěvků
13. 8. 2010   #1
-
0
-

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

Nahlásit jako SPAM
IP: 88.101.151.–
Nemo
~ Anonymní uživatel
31 příspěvků
13. 8. 2010   #2
-
0
-

Koukam, ze sem prilozil, jen obrazek, tak tady jeste projekt v AVR studiu........

Nahlásit jako SPAM
IP: 88.101.151.–
KIIV
~ Moderátor
+43
God of flame
13. 8. 2010   #3
-
0
-

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

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Nemo
~ Anonymní uživatel
31 příspěvků
13. 8. 2010   #4
-
0
-

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 :-)

Nahlásit jako SPAM
IP: 88.101.151.–
KIIV
~ Moderátor
+43
God of flame
13. 8. 2010   #5
-
0
-

To Nemo : moc sem ty zdrojaky neprohlizel.. i tak bych zkusil trochu zpomalit.. treba dat pomalejsi krystal

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Nemo
~ Anonymní uživatel
31 příspěvků
13. 8. 2010   #6
-
0
-

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 :-(

Nahlásit jako SPAM
IP: 88.101.151.–
KIIV
~ Moderátor
+43
God of flame
13. 8. 2010   #7
-
0
-

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

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Nemo
~ Anonymní uživatel
31 příspěvků
13. 8. 2010   #8
-
0
-

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.......

Nahlásit jako SPAM
IP: 88.101.151.–
KIIV
~ Moderátor
+43
God of flame
13. 8. 2010   #9
-
0
-

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)

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Mario10
Newbie
13. 8. 2010   #10
-
0
-

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í.

Nahlásit jako SPAM
IP: 89.103.27.–
Nemo
~ Anonymní uživatel
31 příspěvků
13. 8. 2010   #11
-
0
-

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

Nahlásit jako SPAM
IP: 88.101.151.–
Mario10
Newbie
13. 8. 2010   #12
-
0
-

To Nemo : Když tak koukám na ty NOP v kódu, nevyhodí je pryč například zapnutá optimalizace?

Nahlásit jako SPAM
IP: 89.103.27.–
KIIV
~ Moderátor
+43
God of flame
13. 8. 2010   #13
-
0
-

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)

Nahlásit jako SPAM
IP: 77.237.136.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Nemo
~ Anonymní uživatel
31 příspěvků
14. 8. 2010   #14
-
0
-

To Mario1: optimalizace by to snad vyhodit nemela kdyz delam v ASM, nebo jsem se stim este nesetkal......myslel jsem, ze oto se musim starat jen v C......??

Nahlásit jako SPAM
IP: 88.101.151.–
Nemo
~ Anonymní uživatel
31 příspěvků
14. 8. 2010   #15
-
0
-

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 :-)

Nahlásit jako SPAM
IP: 88.101.151.–
p
~ Anonymní uživatel
212 příspěvků
23. 9. 2010   #16
-
0
-

To Nemo : mam stejnej problem a bude to v tom že vývody lcd nejsou standartní nebo neco vtom smyslu.

Nahlásit jako SPAM
IP: 88.103.126.–
xhans690
Návštěvník
23. 9. 2010   #17
-
0
-

@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

Nahlásit jako SPAM
IP: 81.30.248.–
vega33
~ Anonymní uživatel
18 příspěvků
24. 9. 2010   #18
-
0
-

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.

Nahlásit jako SPAM
IP: 195.168.55.–
KIIV
~ Moderátor
+43
God of flame
24. 9. 2010   #19
-
0
-

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..

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
jonas
~ Anonymní uživatel
8 příspěvků
13. 1. 2011   #20
-
0
-

nevíte někdo jak by to bylo v assembleru?

Nahlásit jako SPAM
IP: 88.103.160.–
AB
~ Anonymní uživatel
41 příspěvků
14. 1. 2011   #21
-
0
-

To je zajímavý dotaz, když uvážíme že celé toto vlákno včetně ukázky kódu je v asembleru.

Nahlásit jako SPAM
IP: 217.115.249.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

LCD S6A0069 atmega8 — založil Tadeáš

Bitova negacia ~ — založil mitti

LCD — založil Filip

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý