Stránka 1 z 2
Pomoc s displejem
Napsal: 13 bře 2015, 17:26
od zoufalec
Dobrý den, prosí o radu. Sestavila jsem kodový zámek s displejem
http://extremeelectronics.co.in/avr-pro ... code-lock/. Zámek funguje ale displej ne, pouze bliká čtvereček. Neporadil by někdo kde jsem udělala chybu?Děkuji
Název vlákna upraven.Viz PRAVIDLA, odst.7a)
Hill
Napsal: 13 bře 2015, 18:13
od Jirka525
Odpověď na tuto otázku, to je spíš práce pro křišťálovou kouli. Tam se může vyskytovat jakákoli závada od plus nekonečna do mínus nekonečna. Předpokládám, že jsi udělala všechny kroky, tj. osadila desku, vyzkoušela, zkompilovala a nahrála program. Teď tedy začíná ta správná bastlířská práce. Pokud klávesnice funguje a nefunguje displej, tak bych v 1. kroku doporučoval provést vizuální kontrolu nejlépe s lupou, jestli jsou všechny vývody správně zaletovány, jestli tam nejsou zkraty, přerušený tišťák a pod. Zvláštní pozornost doporučuji především řídícím pinům mezi CPU a displejem.
Ve 2. kroku bych doporučoval přibližně to samé ale s použitím ohm metru.
Ve 3. kroku bych zkontroloval staticky napětí na důležitých pinech. (napájení jednotlivých součástek a pod.)
O dalším se můžeme bavit podle výsledku těchto třech kroků.
Napsal: 13 bře 2015, 18:19
od Kurrur
Já bát tebou spíše to řeším přes arduino

asi před 2 lety jsem si ho koupil že to bude taková hračička na hraní, ale ono se z toho vyklubala opravdu užitečná věc

. Mimochodem na internetu je plno návodů na kódový zámek pomocí arduina.
Napsal: 13 bře 2015, 18:31
od Hill
Kurrur: netahej sem nesmysly. Ta chyba může být jak hardwarová, tak softwarová - nefunguje-li komunikace s displejem, nebo displej nezobrazuje z jiného důvodu, je úplně jedno, jestli tam má atmegu nebo něco jiného.
Zámek chodí, čili dělá, co má. Atmega zjevně funguje.
Neodbočujme tedy, prosím, k jinému procesoru.
Napsal: 13 bře 2015, 19:07
od Kurrur
Žádné nesmysly tady netahám pouze říkám svůj názor že bych to spíše řešil přes arduino. Myslím si že SW chyba to nebude jestliže zámek funguje a program je správně nahraný.
Napsal: 13 bře 2015, 19:35
od Hydrawerk
Chce to zjistit, jestli signály přicházejí na displej. Zkontroluj je osciloskopem.
Napsal: 13 bře 2015, 19:39
od Chenzee
začni propojem MCU - displej. Myslím vodivé spojení, zkraty mezi piny či jiným cestám na DPS. Taky zkontroluj, jak jsou zapojeny piny displeje D0-D3. Kdyžtak je dát na mínus.
Napsal: 13 bře 2015, 20:08
od Zaky
Nejprve bych se zaměřil na ověření, že rozhoz pinů použitého displeje odpovídá rozhozu na DPS, displeje různých výrobců to mohou mít jinak. Datasheet použitého displeje by měl napovědět. Potom ta kontrola na zkraty a přerušené dráhy od MCU k displeji. Pokud by vše selhávalo a propojení se jevilo v pořádku, stálo by za pokus zkusit použít displej, který má zezadu naletované IO (hd44780 a demuxy) a ne zalité kapky od Číňana, ty s kapkami jsou sice kompatibilní, ale jak dobře, to asi neví nikdo, ikdyž v mých projektech běžně fungují OK.
Napsal: 13 bře 2015, 20:21
od mtajovsky
Kurrur píše:... pouze říkám svůj názor že bych to spíše řešil přes arduino...
Co byste řešil? Tady se řeší, proč ta stavebnice nezobrazuje. Jak může Arduino odhalit, proč ten display nezobrazuje? BTW, je něco, co byste přes Arduino NEřešil?
Napsal: 13 bře 2015, 20:24
od lesana87
Pokud na displeji bliká čtvereček, tak musel být (možná nedobře) zinicializován, jinak by svítil celý první řádek.
Napsal: 13 bře 2015, 20:31
od Kurrur
Ježiši lidi já se tady nebavím o tom že arduino by tu chybu vyřešilo .. jen říkám svůj názor že se kódový zámek dá udělat i přes to arduino... Děláte jako bych tady napsal nevím co. Asi se budete divit, ale jsou věci které bych přes arduino neřešil !
Zaky v těch kapkách chyba nebude. Zaměřil bych se na to co co napsal Jirka525
Napsal: 13 bře 2015, 20:37
od Hydrawerk
zoufalec
Dej prosím fotku celého zařízení.
Napsal: 13 bře 2015, 20:39
od mtajovsky
Díval jsem se do souboru lcd.c a jsou tam dosti krátké čekací doby, když se dělá puls na signálu ENABLE do řadiče LCD. Vidím tam 1 µs jako délka impulsu a taky 1µ jako přesah pro signál register select. Na čínských řadičích mám vyzkoušené, že je potřeba tak 20 µs. Taky datasheet HD44780 uvádí dobu pro operaci většinou 37 µs.
Tohle funguje spolehlivě:
Kód: Vybrat vše
void LCD_send(u08 data, u08 rs)
{
LCD_clock(data >> 4 , rs); // send upper nibbel
LCD_clock(data & 0x0F, rs); // send lower nibbel
}
void LCD_clock(u08 data, u08 rs)
{
LCD_DATA_D |= 0xF0;
LCD_CTRL_D |= _BV(LCD_EN)|_BV(LCD_RS); // initalize ports
if(rs == 1) // RS bit ?
sbi(LCD_CTRL_O, LCD_RS); // set RS line
LCD_DATA_O = (data << 4) | (LCD_DATA_O & 0x0F); // prepare data
// --------------------- send data ------------------------
sbi(LCD_CTRL_O,LCD_EN); // set EN signal
_delay_us(20); // wait
cbi(LCD_CTRL_O,LCD_EN); // reset EN signal
_delay_us(20); // wait
cbi(LCD_CTRL_O,LCD_RS); // reset RS line
}
Napsal: 13 bře 2015, 21:30
od Zaky
Kurrur píše:Zaky v těch kapkách chyba nebude. Zaměřil bych se na to co co napsal Jirka525
Jak píše pan Tajovský, rychlé časování může a dost možná i bude problém, uváděl jsem to na posledním místě, když se na nic jiného nepřijde a bude to právě těmi kapkami

Když se dá sáhnout do kódu, lze tento problém vyřešit i s použitím stávajícího displeje.
Napsal: 13 bře 2015, 21:44
od Kurrur
Autor projektu uvádí v seznamu součástek odkaz na obchod právě s displejem který má řadič HD44780. Zajímavé je že jemu zařízení funguje s řadičem HD44780 a s tou samou knihovnou kterou používá i zoufalec.