Fórum témák
» Több friss téma |
Az van bőven, szabad szemmel lehet látni szinte hogy egymás után írja ki a betűket. Egy kérdés: miközben megy egy a MPLAB SIM debugger, illetve nem megy, mert lépésenként nézem, szóval közben ha buildolok, nem befolyásolja a buildolt kódot ugye?
Ne haragudj, de annyiszor volt már szó az ilyen LCD-kről ebben a topicban is (de van neki sajátja is), hogy hadd ne írjam már le újfent: vedd elő, légy szíves, a HD44780 adatlapját, és keresd meg a 4- és 8 bites inicializáló folyamatábrákat! Olyan szájbarágósan van leírva minden, hogy el sem lehet rontani. Ezután pedig nézd meg, hogy a parancsok és karakterkiiratások után mennyi idő kell a feldolgozáshoz a kijelzőnek, mielőtt bármi mással megszólítod (erre is van egy szép táblázat). Csoda, hogy a programoddal egyáltalán valami életjelet mutat az a kijelző, mivel semmilyen init sorrend, vagy időzítési követelmény nincs betartva.
Szerk.: bocs, a PIC miértek-re gondoltam, hogy ott már sokszor leírtuk a kijelzőkezelés ABC-jét.
Nem értem a kérdést. Az ember vagy debug-ol, vagy fordít...
Leírom már x.re hogy nem most nyúlok LCD-hez először, nem menőzésből, de megint leírom hogy PC-re sikerült egy igencsak komolyabb programot csinálni anno, amiben az időzést nem mezei delay-al (mondjuk az csak pascalban van) vagy sleep-pel oldottam meg, hanem néztem mennyi proci időt telt el és az alapján pontos 1uS-et is létre bírtam hozni. Persze az más mert az LPT nem olyan gyors mint egy mikrovezérlő, de azért tisztában vagyok a dolgokkal.
szerk.: nem bántó szándékkal írtam!
Itt nem 1us-okról van szó, hanem sokkal hosszabb időkről. Az s_delay-ed nagyon kurta, és szinte mindenhol azt használod. Az adatlapot nem díszből szokták írni, érdemes használni, sok bosszankodást meg lehet előzni vele.
Ja és nem csak az időzítésekről van szó, hanem az init szekvenciáról is. Szerintem az sem véletlenül került bele az adatlapba, volt már olyan kijelzőm, ami háklis volt rá, hogy pont úgy csináljam. Én sem bántásból mondom, de az adatlap tényleg hasznos!
Persze nem 1uS-t használtam, azzal csak a pontosságra utaltam.
A nagyon kurta alatt mit értesz? ![]() ![]()
Szerintem a baj csak ott bukik ki, a korábbi dolgok időzítése nincs betartva. De tényleg nézd meg az adatlapot, mert szerintem abból neked is világossá válik.
Szia!
Egy kicsit gyorsan csinálsz mindent. A szimulátor szerint 35.8ms alatt (az első időzítési megszakítás megérkeztéig) minden LCD-re vonatkozó dolog lefut, még a szöveg utolsó karakterét is elküldöd.... Az adatlap időzítéseit be kell tartani... Szia
Most nézem jó keveset hagytam benne, de most már olyan lassan küldöm ki az adatot hogy majdnem 10 másodpercig tart mire kiírja azt hogy Hell... Aztán egy olyat csinál a kijelző hogy "elsötétedik" mint ha nem lenne inicializálva. Ilyet se láttam még...
Közbe felvittem a delay szubrutint kb 0,4sec-re... Így se jó
és még mindig csak az o betűt nem írja ki, mintha átugorná... mert a main végére raktam egy RA3 LED-es felvillantást ami ki is gyullad. ![]() Ezeket elrettentésként írom le a további kezdő kollégágnak hogy lássák vannak olyan hibák, melyre nincs logikus magyarázat ![]()
Csatoltam. A S_DELAY szubrutin nincs használatban, csak benne hagytam. Ja és egyik o betűt se írja ki, helyette valami speckó karaktert ír ki, meg az első sorba ugrik a kurzor....
![]()
Üdv!
Én így oldottam meg az LCD kezelést. Nézd át, hátha segít.
Most még az enyém egyszerűbb, nem akarok még bonyolítani a dolgokat... De egyébként köszi.
Idézet: „Most még az enyém egyszerűbb, nem akarok még bonyolítani a dolgokat...” Annyira se, hogy legalább működjön? Mert amit felraktál kódot, abban az inicializálás minden, csak nem korrekt...
Ugyanez az inicializálása az LPT-s progimnak is.
Gondoltam lehet a táppal van baj, de ráraktam 9V-os elemre egy 7805-öt és azzal se jó. Mint ha nem érzékelné hogy adat módban van.
A PIC lábain nincs semmi más terhelés? Nem lehet, hogy RMW hibába futsz?
Csak az RA3-an egy LED ami jelzi ha lefutott a progi. meg egy kapcsoló ami az RA0-n van, amivel elindítom a kiiratást. Most azt próbálom hogy megint egyesével küldök ki byteokat, előtte pedig nézem az MPLAB Logic Analyzerrel is.
Közbe tegnap este [éjszaka] írtam delphiben egy programot ami konvertál számrendszerek között ![]() szerk.: bár a dec-bin konvertálást megcsináltam a PIC-re is, néhány karaktert ki is írt, de valami nem kóser, ha csak simán küldözgetem MOVLW, MOVWF-el akkor is, mint ha az alsó nibble mindig teli lenne 1-el.
Egy nagyon fontos kérdésem lenne!
A BCF (8x) utasítás célszerűbb mint a CLRF, LATB törléséhez? Idézet: Csöppet sem!„A BCF (8x) utasítás célszerűbb mint a CLRF, LATB törléséhez?” Idézet: „néhány karaktert ki is írt, de valami nem kóser” ITT megnézheted az ASCII kódokat. A Hx oszlop kell neked...
Pedig úgylátszódik jobb, leglábbis LCD-n a bitek törléséhez. CLRF-fel "becsúszik" valami zaj vagy el se tudom képzelni mi lehet vele a baj.
Az ASCII-s progit csak gyakorlásképp írtam ![]()
Szia!
Az MpLab Watch ablakában ki lehet jelezni a hexadecimális (ez be van állítva), a decimális és a bináris kijelzést is. A táblázat fejlécén kell lenyomni az egér jobb gombját... Feltöltöttem a hd44780 4 bites inicializálását. A lépések: - Várni >15 ms-et a táp beállása után, - 8 Bites mód parancs küldése (1 E ciklussal), - Várni >4.1 ms-et, - 8 Bites mód parancs küldése (1 E ciklussal), - Várni >100 us-et, - 8 Bites mód parancs küldése (1 E ciklussal), - Várni >37 us-et, - 4 Bites mód parancs küldése (2 E ciklussal), - Várni >37 us-et, - Display on parancs küldése (2 E ciklussal), - Várni >37 us-et, - Clear Display parancs küldése (2 E ciklussal), - Várni >1.52 ms-et, - Entry mode set parancs küldése (2 E ciklussal), - Várni >37 us-et, Innentől kezdve lehet küldeni parancsokat és adatokat (2 E ciklussal). A parancs / adat küldések után min. 37 us várakozás kell, a Clear display és a Reutrn home után 1.52ms. Szia
Rájöttem már tegnap, egyébként valami elég rejtett hiba van, szerintem amivel csak kevesen találkoztatok, már minden át van nézve, ezt a problémát lehetetlen megoldani
![]()
Sziasztok !
16F876 -ot probalok felprogramozni. Oshon fele programozom van 74LS07-el. WinPic-et hasznalok programozashoz, mert az Oshon fele soft valamiert hibat talalt az emugy korrekt hex fileban. Jo nehany oram ra ment, es meg mindig nem sikerult felprogramozni a PIC-et. Ugy tesz mintha toltene ra a programot, de visszaolvasasnal hibat jelez (verify error,..) A HW is normalisan viselkedik, program -es tapfesz is rendben van. A PIC egy panelban van (egyedul) es 10 cm szalagkabellal kotottem az egetohoz. Van valami amiben elter a 16F84-tol a programozasa ennek az ICnek? A PGC es PGD, MCLR + tap labakat kotottem ossze az egetovel. Slow mode-ban is probaltam. Mar tepem a hajam ![]()
Csak kíváncsiságból.. milyen tipusú alaplapod van? (pl ASUS P5GC-MX...)
Egy képet, ha tudnál felrakni az égetőről, az jó lenne.
Szia!
Van egy lényeges eltérés: A 18F87x -nek van alacsony feszültségű programozási (LVP) lehetősége. Próbáld meg az PRM / RB3-at egy ellenállással a földre húzva programozni. Szia
Lehuztam a PGM labat GND-re ellenallassal. Ugyanaz.
Zenetom: nem tudom,..laptop. F84-et egettem az oshon softal es ezzel a HW-el korabban.
A weboldaladon találtam egy elírást (középtájt):
Idézet: „ BSF LATB, 5 ;Port B 0. bitjét ‘1’-be állítja BSF LATB, 7 ;Port B 7. bitjét ‘1’-be állítja” A BSF LATB,5 a Port B 5. bitjét állítja 1-re.... vagy nem?
Kijelenthetem hogy ezt a kijelzőt nem lehet PIC18F1320-as mikrovezérlővel vezérelni. Akinek ilyen mikrovezérlője van, az ne csodálkozzon ha nem működik.
Kipróbáltam az összes lehetséges megoldást, de egyes karaktereket nem hajlandó normálisan megjeleníteni a kijelző (pl, '7'-es, 'r' betű...). Nincs a programban semmi felesleges, csak inicializáció. És az adatküldés. Adatküldésre csak a LATB-t használom, a végén már kb 437ms-os késleltetést használva bármilyen adatközlés előtt/után. Az utolsó turpisság amire rájöttem, hogy először csak az Enable lábról szabad levenni a jelet, ill. ez logikus, de a
helyett először a BCF LATB,5 (RB5-ön van az enable), majd a többi lábat kell nullázni. Nem akartam csodát várni, de azért gondoltam hogy egy ilyen egyszerű dolog menni fog, még ha nem is pöcc-röffre. Szerintem ennyi volt az asm programozás, nincs értelme így folytatni. Azért csatolom a progit, elvileg egy hetest kéne kiírnia, de csak megjelenik a kurzor és kész. Ugyanezeket a lépéseket LPT-ről megcsináltam és ott működött. Aki valami hibát talál a programban, vagy akármiben, ne tartsa vissza magát. |
Bejelentkezés
Hirdetés |