Hallo leute, ich probier seit gewisser zeit mein lcd displaytech 162d mitm pic16f690 zum laufen zu bringen. weil ich den pic nur dafür nehme wollt ichs mal mit 8bit probieren, liegt dort evtl der fehler? scheinbar geht der code bis zu einer gewissen zeile, denn es werden alle kästchen der ersten zeile schwarz angezeigt und dann erlöschen sie, weiter passiert aber nix. könnt ihr eventuell mal einen blick auf meinen code setzen und mir weiterhelfen? ich verzweifle sonst noch...danke schonmal für alle antworten. mfg koma
hör auf mit ASM uznd fang mit C an da quälst du dich nicht so und dir kann leichter geholfen werden www.htsoft.com ich beschäftige mich auch hauptsächlich mit dem pic 16f690 und würde dir gerne zur hand gehen aber ich kann leider dieses schreckliche pic-asm nicht wenn es fragen zum prinzip(wann muss welcher pin auf high oder low) sind kann ich dir auch gerne behilflich sein
ich wollte aber extra mit asm anfangen um erstma zu verstehen wie das so hinhaut. find ich ehrlichgesagt auch besser als gleich mit c rumzuhantieren. trotzdem danke für deine antwort, die pins sollten eigentlich so stimmen, aber evtl hab ich ja was übersehen oder was falsch abgeändert.
welcher controller is drauf? ist am display der rs pin auf low? wenn ja dann musst du nach jedem befehl eine warteschleife einhalten in der pdf(anhang) is die intialisirung recht gut erklärt
das lcd hat einen KS0070B controller drauf. rs is low. in deinem anhang ist die initialisierung etwas anders, als in dem datenblatt zu meinem lcd, ich werd die mal probieren und auch mit mehr warteschleifen. danke erstmal
also, es funktioniert immernoch nicht. hab die initialisierungs-sequenz so umgesetzt, wie sie in der pdf steht. auch mit jeweils genug wartezeiten nach jedem befehl. was mich verwundert ist, dass die sequenzen von deinem pdf und meinem datenblatt zum selben controller unterschiedlich sind. könnte der fehler sonst irgendwo im code liegen? ich dreh nochmal durch hier...
Der Fehler könnte ja auch bei der Hardware liegen. Muss ja nicht der Code sein.
Hallo Ich hab das gleiche Problem bekomme mein LCD nicht initialisiert! Ich schreibe allerdings in C. Hab ein LCD 162C von Reichelt. - nach dem Anlegen der Betriebsspannung muss eine Zeit von mindestens ca. 15ms gewartet werden, um dem seine eigene Initialisierung zu geben - 0x30 ins Steuerregister schreiben (RS = 0) - mindestens 4.1ms warten - 0x30 ins Steuerregister schreiben (RS = 0) - mindestens 100μs warten - 0x30 ins Steuerregister schreiben (RS = 0) - Mit dem Konfigurier-Befehl 0x30 das Display konfigurieren (8-Bit, 1 oder 2 Zeilen, 5x7 Format) - mit den restlichen Konfigurierbefehlen die Konfiguration vervollständigen: Display ein/aus, Cursor Frage: 1.) Was muß mit dem Enable machen bei der Initialisierung? 2.) Worauf muß ich hier besonders achten?
>Frage: 1.) Was muß mit dem Enable machen bei der Initialisierung? > 2.) Worauf muß ich hier besonders achten? Das steht ganz deutlich in den Timing Diagrammen. Freundlicherweise sind darüber auch gleich die Mindestzeiten angegeben. Wenn man die Reihenfolge penibel einhält, dann klappts auch mit dem Display.
Super Danke für die schnelle Antwort mal sehn ob es daran liegt! ausprobieren.... THX Michigan
hallo, nochmal ich. also ich hab jetzt nochmal meine hardware überprüft und das programm auch nochmal. ich kann keinen fehler erkennen aber es läuft nicht. muss ich noch irgendwas bei der pin konfiguration beachten? hab die pins auf digital i/o gestellt. bitte helft mir weiter.
>muss ich noch irgendwas bei der pin konfiguration beachten? >hab die pins auf digital i/o gestellt. bitte helft mir weiter. AD Eingänge UND Komparatoren abgeschaltet ?
die sind ja ansich laut register summary nachm reset eh aus, aber ja ich hab sie nochmal ausdrücklich ausgeschalten. leider ohne erfolg. hier nochmal mein code, evtl fällt euch ja ein fehler auf, den ich übersehen habe? mfg und danke
könnte das eventuell am brennen liegen? ich nehm zum programm schreiben das mitgelieferte PICkit2 programm, weil ich es mitm MPLAB direkt nich hinkriege. ich hab mal gelesen, dass ein i/o pin (normalerweise RB3, PortB bit3) blockiert wird, wenn LV-programming enabled ist. beim 16f690 gibts den zwar nich aber hat das auswirkungen auf andere?
>beim 16f690 gibts den zwar nich aber hat das auswirkungen auf andere?
PORTB6 und PORTB7 werden bei der ISP Programmierung benötigt.
Vieleicht blockiert dein Prommer dir die LCD-RW Leitung an
PORTB6. Zieh den Prommer doch mal ab, oder leg LCD-RW auf
PORTB3.
Ansonsten könntest du mal auf den Busy-Check
verzichten und einfach nach jedem Byte ca.
100us warten.
also ich verwende ja kein in-system-programmer, sondern setz den pic jedesmal auf das kit zum programmieren. deswegen schließ ich das jetzt mal aus. aber ich dachte da gibts nochn unterschied zwischen 12v und 5v brennen. naja ich werds mal mit mehr wartezeiten probieren, vielleicht hilft das ja
Ich hab mal ein wenig rumprobiert. ; __CONFIG (_CP_OFF & _PWRTE_ON & _WDT_OFF) Kein Oscillator angegeben. Also trag ihn ein. __CONFIG (_CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC) ; org 0005h ; reset vector Nicht gut. Adresse 5 ist NICHT der Reset Vektor. org 0000h ; reset vector Das eigentliche Problem dürfte das hier sein ;) movlw B'00100000' ; 4 function set, 4-bit 1-zeilig, 5x7 Display auf 4 Bit Modus eingestellt obwohl 8 Bit Anschluss. movlw B'00110000' ; 4 function set, 8-bit 1-zeilig, 5x7 So könnte es gehen.
hey, danke erstmal für deine bemühungen. das mit den 4bit ist noch ein überbleibsel aus vorhergegangenen versuchen, weil das mit 8bit nich gefunzt hat. ich habs jetzt wieder umgestellt und auch den oszillator eingetragen.. zum reset vector: hatte ganz zuanfang auch den 0000h genommen, weil ichs überall so gefunden hatte, nur meckert mein MPLAB rum, wenn ich das projekt bauen (build :) will. von wegen: Error - section '.org_0' can not fit the absolute section. Section '.org_0' start=0x00000000, length=0x00000116 BUILD FAILED deswegen hatte ich den auf 0005h geändert, dann gings. was hat das zu bedeuten? mfg
Das kommt wenn man mit Linkerdatei arbeitet. Darin steht meist folgendes: LIBPATH . CODEPAGE NAME=vectors START=0x0 END=0x4 PROTECTED CODEPAGE NAME=page0 START=0x5 END=0x7FF ... Die Adressen 0 bis 4 (vectors) sind gesperrt. Du kannst tatsächlich erst ab Adresse 5 (page0) deinen Code beginnen. Dann lass das org 0005h halt drin.
okay danke für die schnelle antwort, ich werd mal wieder ein bisschen rumprobieren und später von mir hören lassen. mfg
mal ne etwas komische frage. ich hab jetzt schön öfter gesehen, dass die microcontroller mit externem oszillator betrieben werden. ich mache das nicht, stellt das ein problem dar? mfg
Hängt davon ab, wie genau der Takt sein muss. Wenn du für diverse Schnittstellen (UART,CAN,...) präzises Timing benötigst, oder eine Uhrzeit mitführst, dann wärs mit Quarz schon besser.
ohman ich bin ein trottel, wie konnte ich das nur vergessen...
hab jetzt erstmal _INTOSC eingestellt und wie sollte es anders sein, es funktioniert immernoch nicht. langsam verzweifel ich.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.