Hallo Zusammen. Ich bin zurzeit dran, ein Bewässerungscomputer in C zu programmieren. Ich bin schon recht weit, doch seit ich nicht mehr das Picdem Board benütze, sondern meine eigene Konstruktion für den späteren Bewässerungscomputer, habe ich ein Problem mit dem Programmer, und Debugger. Ich benütze das MPLAB ICD 3 zum Programmieren Beim Programmer steht am schluss: Programming... Programming/Verify complete aber auf dem 4 Zeilen Display leuchtet nur die 1. und 3. Zeile. Wenn ich den Debugger nehme, und Play drücke, bleibt das Display beim 1. mal dunkel. Danach muss ich es nochmals neu Übersetzen, und jetzt funktioniert es aber vollumfänglich. Das ist aber eignetlich fast jedes mal so, das ich alles 2 mal übersetzen muss, das es wenigstens im Debugger Mode läuft. Ich benütze ein 24V 18W Netzteil, und zusätzlich ein StepDown converter auf 5 V (IQ2405S). Wenn ich den PIC18f4520 von meiner Konstruktion aufs Picdem 2 Plus Board stecke, sehe ich, das der Mikrocontroller nicht programmiert wurde. Wenn ich ihn dann auf dem Picdem Board Programmiere, und wieder auf meine konstruktion stecke, leuchten nur wieder nur die erste und dritte Zeile hell! Wo könnte da am ehesten das Problem sein? Wie gesagt, der Code und die Displayansteuerung funktioniert eigentlich, aber nur im Debugger Mode, und nur jedes 2. mal! Wenn ihr noch mehr Angaben braucht, dann sagt mir das :-) Danke schon mal für die Hilfe.
>Wo könnte da am ehesten das Problem sein? Wie gesagt, der Code und die >Displayansteuerung funktioniert eigentlich, aber nur im Debugger Mode, >und nur jedes 2. mal! >Wenn ihr noch mehr Angaben braucht, dann sagt mir das :-) Sourcecode? Welches Display? Sieht so aus als wenn das Display nicht richtig initialisiert wird, oder nach Powerup nicht lange genug gewartet wird bevor das Display beschrieben wird.
ich habe hier mal ein anderer (kleinerer Source Code) hochgeladen, mit dem ich das Display ausgetestet habe. Dieser Code ist um ein vielfaches kleiner, und auch eher den Fehler zu finden. Die probleme sind bei diesem Code aber die Selben display4zeilen.c = Programm Code XLCD Dateien = Displayansteuerung Das Display ist: YMFC-C2004 LCD Display 4*20 char Controller sollte der selbe wie der HD44780 sein. Ich hoffe das hilft schon ein wenig
1 | void DelayPORXLCD(void) // minimum 15ms |
2 | {
|
3 | |
4 | Delay100TCYx(0xA0*4/PIC_Osc_MHz); // 100TCY * 160 |
5 | return; |
6 | }
|
Das A und O bei LCDs ist es die Zeiten einzuhalten. Dann klappt es eigentlich immer. Hast du mal kontrolliert ob die Zeit für die Routine oben auch stimmt? Wo kommt PIC_Osc_MHz her? Welchen Wert hat es? Ich würde das eher so machen: Delay100TCYx( (0xA0 * 4) / PIC_Osc_MHz); // 100TCY * 160 Ich gebe meinen Displays auch etwas mehr Zeit. Statt 15ms eher 50ms damit auch alte Displays mit den Routinen funktionieren.
Das mit den Zeiten kontrollieren für die Routine ist bei mir noch n bisschen ein problem. Muss mich da sicher noch ein wenig einlesen. Bisher habe ich nur immer mit dem Picdem Board gearbeitet, und dem Display was da drauf ist gearbeitet. Und da hat es bisher wunderbar geklappt, darum habe ich mich in dem Thema noch nicht so eingelesen. Ich habe die Klammern mal so geändert, nützt aber leider nichts. PIC_Osc_MHz ist im Source File ganz oben definiert, mit 4 MHz. Habe mit dem Pic18f4520 immer mit dieser einstellung gearbeitet. Danke aber schon mal für die Hilfe
Ich bin jetzt schon ein wenig weiter. Das problem mit dem 2 mal debuggen habe ich gelöst. Ist sicher nicht die beste Lösung, die ich gewählt habe aber zumindest klappt es. Ich initialisiere das Display 2 mal hintereinander beim Start. Das war das einzige was irgendwie geholfen hat. Jetzt habe ich aber immer noch das Problem, das es bei dem eigenbau nur im Debugging modus geht, und nicht im Programmer modus. Auf dem Picdem 2 Plus Board läuft es aber tadellos. Ich habe mal die Schaltung angehängt. Ich hoffe, mir kann bei dem Problem noch irgend jemand helfen.
Hallo, einmal bitte Pull-Up an MCLR (10k) und zwischen Vdd und Vss ein 100nF Kondensator.
Danke!!!!!! Mit dem Pull-UP, hat es geklappt! Habe gerade keinen 100nF Kondensator zur Hand. Für was dient der? weil es klappt ja gerade ohne. Aber danke vielmals für die Hilfe.
Der Kondensator (Stützkondensator) soll mögliche Spannungsschwankunen ausgleichen. Hat sich so bewährt. :)
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.