PIC16F690 init vom LCD funzt nich

Gast #726918
Lesenswert?

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
Angehängte Dateien:
Persönliche Seite #726921
Lesenswert?

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
Gast #726944
Lesenswert?

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.
Gast #727710
Lesenswert?

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
Gast #727841
Lesenswert?

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...
#728051
Lesenswert?

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?
Angehängte Dateien:
Gast #728062
Lesenswert?

>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.
Gast #729871
Lesenswert?

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.
Gast #730026
Lesenswert?

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
Angehängte Dateien:
Gast #730035
Lesenswert?

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?
Gast #730050
Lesenswert?

>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.
Gast #730094
Lesenswert?

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
Gast #731263
Lesenswert?

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.
Gast #731794
Lesenswert?

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
Gast #731817
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren