Forum: Mikrocontroller und Digitale Elektronik PIC24FJ + S65 Display ohne Funktion


von Christian H. (thunder2002) Benutzerseite


Angehängte Dateien:

Lesenswert?

Moin,

ich habe mich mal mit einem S65 Display auseinander gesetzt, da mir 
HD44780's langsam zu langweilig werden ;) Im selben Zug hab ich mich 
auch gleich an einen PIC24FJ, genauer den PIC24FJ16GA002 gemacht, da ich 
sonst nur ATMega und ATXMega Erfahrung hab. Den Schaltungsaufbau findet 
ihr in der angehängten Bilddatei.

Soweit so gut, ich hab mir mal den Code von Watterott zur Herzen 
genommen (https://github.com/watterott/S65-Shield) und auf das nötigste 
für ein LPH88 Display reduziert. Den entstandenen Arduino Code seht ihr 
in der "s65_display.ino" Datei. Dieser funktioniert auch in der PIC 
Schaltung, ich hab nur eben die Leitungen für Reset, CS, CLK und Data 
durch einen einfachen Level-Shifter von den 5V vom Arduino auf 3.3V 
abgesenkt, sonst ist alles gleich geblieben.

Nun hab ich diesen Arduino Code nach C für meinen PIC umschreiben 
wollen, soweit auch kein großes Problem, aber am Ende des Tages/Woche 
funktioniert es nicht... ich kann mit dem Oszi zwar die Signalpegel vom 
PIC zum S65 Display messen aber der Init scheint nie zu klappen...

Ich vermute momentan entweder einen sau doofen Fehler meinerseits oder 
eine mir noch unbekannte Standardkonfiguration eines PIC Pins oder einer 
Peripherie, die mir momentan dazwischen funkt. Ich habe zudem 
absichtlich mich erstmal für BitBanging entschieden um es so einfach wie 
möglich zu halten.

Würde mich sehr freuen wenn mal jemand drüberschauen kann, ich weiss 
leider nicht mehr weiter :(

Schöne Grüße
Chris

von René Z. (dens)


Lesenswert?

Wenn du es genau nach Schaltplan aufgebaut hast, überdenk die Schaltung 
rund um den LM317 nochmal.
Tipp: Kurzschluss...
Mehr helf ich nich...

von Christian H. (thunder2002) Benutzerseite


Angehängte Dateien:

Lesenswert?

René Z. schrieb:
> Wenn du es genau nach Schaltplan aufgebaut hast, überdenk die Schaltung
> rund um den LM317 nochmal.
> Tipp: Kurzschluss...
> Mehr helf ich nich...

Sry... Flüchtigkeitsfehler beim Nachbauen... Hier die nachgebesserte 
Version.

von Stefan H. (stefan_h16)


Lesenswert?

Ich habe auch schon einige Erfahrung mit dem S65 Display (hat immer ewig 
gekostest das zum laufen zu bringen) - aber es läuft dann doch 
irgendwann.

Zum Problem:
Kann es sein, dass der RS Pin des S65 (1 auf dem Pin Header) nicht 
beschaltet ist ?

von Master S. (snowman)


Lesenswert?

ICSP: zum programmieren brauchst du nicht RB5/RB6 sondern RB6/RB7
MCLR / Vpp: wieso spannungsteiler zu 3.3V mit kapazität, anstatt wie 
alle anderen (und von Microchip empfohlen) mit einem widerstand plus 
einer Diode?

von Christian H. (thunder2002) Benutzerseite


Lesenswert?

Stefan H. schrieb:
> Ich habe auch schon einige Erfahrung mit dem S65 Display (hat immer ewig
> gekostest das zum laufen zu bringen) - aber es läuft dann doch
> irgendwann.
>
> Zum Problem:
> Kann es sein, dass der RS Pin des S65 (1 auf dem Pin Header) nicht
> beschaltet ist ?

Ja das ist korrekt, Pin 1 wird meines Wissens nach beim LPH88 Chipset 
nicht verwendet, im Watterott Source 
(https://github.com/watterott/S65-Shield/blob/master/src/libraries/S65Display/lph88.cpp) 
wird der Pin auch nur einmalig auf disabled gesetzt und nie genutzt. 
Auch in den Sources von superkranz.de ist ein entsprechender Kommentar 
drin:
1
PORTB |= _BV(LCD_RS);  // not used from LPH display
2
DDRB |= _BV(LCD_RS);
Zudem funktioniert das Display am Ardunio Uno mit dem obigen Code auch 
ohne Pin 1 problemlos.

von Master S. (snowman)


Lesenswert?

Spannungsregler: bist du sicher, dass du am ADJ-pin 2.06V brauchst?

von Stefan H. (stefan_h16)


Lesenswert?

Christian Hunke schrieb:
> Ja das ist korrekt, Pin 1 wird meines Wissens nach beim LPH88 Chipset
> nicht verwendet, im Watterott Source
> (https://github.com/watterott/S65-Shield/blob/maste...)
> wird der Pin auch nur einmalig auf disabled gesetzt und nie genutzt.
> Auch in den Sources von superkranz.de ist ein entsprechender Kommentar
> drin:PORTB |= _BV(LCD_RS);  // not used from LPH display
> DDRB |= _BV(LCD_RS);
> Zudem funktioniert das Display am Ardunio Uno mit dem obigen Code auch
> ohne Pin 1 problemlos.

Ahso - ich bin das vom LS020 Typ anders gewohnt.

von Andreas W. (andreasw) Benutzerseite


Lesenswert?

Beim LS020+L2F50 benötigt man RS auch - beim LPH88 aber nicht.

@Christian Hunke
Hast du mal versucht die Pausenzeiten zu verlängern?

Gruß
Andreas

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
Noch kein Account? Hier anmelden.