Ich habe ein 4x40 zeichen display, und habe das auch schon ueber einen PIC16f690 erfolgreich initalisiert, und auch schon zeichen ausgegeben. Nun will ich das Teil auf einem dsPIC33FJ128MC710 betreiben. Also einfach den code von asm auf c umgeschrieben und von 8-bit auf 4-bit. Dann hab ich das Display angesteckt, und es hat sich nichts getan! Aber nun zu meinem eigentlichen Problem: Der PIC16f690 arbeitet mit 5V und kann somit das Display ansteuern. Der dsPIC arbeitet mit 3,6V und erreicht somit das VHI nicht! Ich habe schon mittels PUll-UP widerstaenden versucht, hier ein bissl zu schummeln, aber da geht nichts. Ohne Display erhallte ich die +5V bei logisch 1, aber wenn das display drann haengt sacken die auf 3,3 zusammen. Fuer mich gibt es hier 2 moegliche fehler: 1. Ich hab mich beim umschreiben von asm auf c und von 8 auf 4 bit uebernommen, und einen scheiss zusammengebaut. (kann man im dateianhang ueberpruefen!) 2. die Vhi wird nicht erreicht, und deshalb bekommt das display auch keine signale. (wird warscheinlich zutreffen) Meine loesungsversuche: Mit transistorschaltungen geht nix, weil dann die maximale flankenzeit von 25ns ueberschritten wird. (das beste was ich gefunden habe waren 109ns flankenzeit) Geht das:??? Der einzige weg, welchen ich jetzt noch habe, wird wohl ein i2c treiberbaustein sein! ich hab vom PCF8574 bereits hier im forum gelesen. Im datenblatt sehe ich, dass er bis 7V betrieben werden kann, und maximal 100mA ausgeben kann. Da er hier so oft in kombi mit einem display verwendet wird, nehme ich mal an, dass die flankenzeit passen. Ich habe auch bereits diverse headerfiles ausprobiert, aber keines scheint so wirklich funktioniert zu haben, diverse asm und c files habe ich auch schon ausprobiert. Die meisten habe ich vorher noch an meine pin-belegung angepasst und fuer 2 controller umgeschrieben, aber leider erfolglos. Im anhang sind meine selbst geschriebenen header datein. Waere toll, wenn die mal einer ausprobieren kann. Kennt jemand funktionierende header files fuer c und einen PIC!! mfg jibbel
schon probiert den ausgangsport auf open-collector zu schalten? vorher nutzen dir die PU überhaut nichts :) dann natürlich die signale invertieren
Ich schlage erst mal vor, zu prüfen ob der dsPIC33 5v-kompatible Eingänge hat. Dann geht man in den Gedanken auf, die Datenleitungen mittels Pull-Up an 5V zu schalten. Will man nun eine 0 ausgeben, dann schreibt man eine 0 in das LAT-Bit (das kann da immer drin stehen bleiben) und aktiviert im TRIS-Bit den Ausgang. Will man eine 1 ausgeben, schaltet man das TRIS-Bit auf Eingang. Also schreibt man statt in das Port-Register in das TRIS-Register...
odcd ist im headefile definiert, und wird im main(void) teil aktiviert! die ausgaenge habe ich mit 220 bis 330 ohm widerstaende auf +5V gehaengt! Der PIC hat 5V kompatikble ein/ausgaenge. Diese verwende ich auch. Also ich hab im debugmodus die pins mal wahlweise von 0 auf logisch 1 gezogen, und die sind nicht invertiert. ist logisch 0 im LAT, sind ca 0- 0.9V am ausgang. ist logisch 1 im LAT sind ca 3,3 bis 5V am ausgang. (je nachdem, ob das display dran haengt oder nicht!) TRIS ist auf 0, und wird nur beim lesen vom busy bit auf 1 gesetzt! jibbel
>die ausgaenge habe ich mit 220 bis 330 ohm widerstaende auf +5V >gehaengt! Sportlich, sportlich. 20mA bei Low Pegel.
jibbel schrieb:
> TRIS ist auf 0, und wird nur beim lesen vom busy bit auf 1 gesetzt!
Und hier zeigt sich, daß Du mich NICHT verstanden hast !
Also, derzeitiger stand: hab meinen treiber auf 8-bit umgeschrieben, und siehe da, das display funktioniert! 2. wegen VDD Im original datenblatt vom display steht, ich brauche 5V VDD. die Vhi spez ist 0,7 * Vdd also 3,5V welche ich mit den 3.3 V ausgang nie erreiche. Im datenblatt von sitronix steht, dass VDD zwischen 2.2V und 7 Varrieren kann. Also hab ich mal Vdd auf 4,5V runtergedreht, und die pull-ups entfernt, und siehe da, es funktioniert!!! Ich glaube, ich werde den 4-bit modus sein lassen, und mir einfach einen 16-bit I/O I2C expander kaufen. busy flag check funktioniert einwandfrei, und das gesammte display 2 * 80 zeichen ist unter 500ms aufgebaut! trotzdem danke fuer eure hilfe!!! Wo soll ich die header datein hochladen?? Sie sind fuer folgendes display geschrieben: ANAG VISION AV4040 (Blauer hintergrund, 4 zeilen 40 zeichen) die headerfiles werde ich in den naechsten tagen noch um die befehle lcdpos und getac erweitern. jibbel
also ich interpretiere dieses Datenbaltt : http://ww1.microchip.com/downloads/en/DeviceDoc/70193C.pdf so: 0 im jeweiligen TRIS register schaltet den pin als ausgang 1 im jeweiligen TRIS register schaltet den pin als eingang zumindest habe ich das so in meinen headerfiles, und anscheinend ist es richtig, weil sonnst wuerde die Busy flag abfrage nicht funktionieren, und ich wuerde nicht die aktuelle position vom Curser im watch fenster sehen. trotzdem danke fuer eure hilfe bis zuletzt! jibbel
1. Ich finde I2c-Portexpander zu langsam, ich nehme lieber SPI wenn es auf der Platine bleibt. Ich habe letztens die MCP23s17 verwendet. Sehr geil. Aber dafür brauchst Du einen Level-Shifter! 2. Ich taste das Busy-Flag nicht ab und setze stattdessen feste Zeitschleifen ein. 3. Mit der Nutzung des TRIS-Bits meine ich nicht die Abfrage des Busy-Buts, sondern das "altbekannte" Umschalten eines Pins von Ein- auf Ausgang, um einen Open-Collector-Ausgang zu simulieren, so daß man leicht mit einem 3,3V-Ausgang einen 5V-Eingang ansteuern kann.
Also ist SPI deiner meinung nach besser fuer dieses Display?? es sind immerhin 160 Zeichen! Wegen tris: Also ich hatte bereits diese open collektor sache probiert: ich hatte Tris auf 0 ODCD auf 1 und lat oder POrt auf 1 und am ausgang hatte ich ohne last 5V mit last 3,3V auf jeden fall wenn ich das naechste mal mit pull-up arbeite werde ich an deinen rat denken, wenns mal nicht geht! Was ist denn der grosse unterschied zwischen SPI und I2C?? Ich hab das busyflag als letztes programmiert. Vorher hatte ich feste zeiten, und da konnte man mit freiem auge erkennen, wie das display aufgebaut wird. Jetzt hab ich die header datei nochmal getuned. fast alle verzoegerungen sind drausen, und bei der initalisierung bin ich auf das absolute minimum runter! das display ist innerhalb von 100mS fertig aufgebaut!!! jibbel!
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.