mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC16F690 init vom LCD funzt nich


Autor: koma (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas Müller (thomas1123) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achso btw hab die codes von sprut als vorlage genommen, mfg

Autor: Thomas Müller (thomas1123) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Dummy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Fehler könnte ja auch bei der Hardware liegen.
Muss ja nicht der Code sein.

Autor: Oliver Görsch (michigan)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Oliver Görsch (michigan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super Danke für die schnelle Antwort mal sehn ob es daran liegt!

ausprobieren....

THX Michigan

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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 ?

Autor: koma (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay danke für die schnelle antwort, ich werd mal wieder ein bisschen 
rumprobieren und später von mir hören lassen. mfg

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ohman ich bin ein trottel, wie konnte ich das nur vergessen...

Autor: koma (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab jetzt erstmal _INTOSC eingestellt und wie sollte es anders sein, es 
funktioniert immernoch nicht. langsam verzweifel ich.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.