Hallo, ich habe einen AT90S8515 und versuche über PortB ein 4-Pin LCD Display (WD-C080-1P [von pollin.de])anzusteuern. Habe die Belegung so gewählt: SI:PINB0 - Daten schreiben SK:PINB1 - Daten clock SO:PINB2 - Daten lesen CS:PINB3 - Device select Bitte die Daten des LCDs aus dem 3 seitigen pdf Manual entnehmen. ich habe dann ein Testprogramm (test.c) geschrieben. Ich bekomm es aber einfach nicht hin, dass mir etwas angezeigt wird. Mach ich was falsch ? Bitte um Hilfe. Daten sind als Anhang zu finden. Gruss Michael
der code ist in dem angehänten ZIP file dabei (test01.c)
Würde zuerst CS immer auf low (high) geben (direkt an Spannung) , um die Anzeige dauernd zu aktivieren. Als nächstes würde ich Clock und die Daten nicht gleichzeitig schalten. Zuerst die Datenleitung setzen, warten und dann einen sauberen Clockimpuls geben (high / wait low). Ob 7 oder 8 Datenbits getaktet werden bin ich mir auch nicht sicher. (Testen mit AVR Studio) Danach würde ich mit einem günstigen Logikanalyser (ZB. von ELV MLAB100) das Clocksignal und das Datensignal aufnehmen. Zur besseren Sichtbarmachung würde ich die Zeitkonstanten erhöhen. Josef
Hallo, das mit der "Zeitdehnung" hab ich schon versucht. Da schaltet er alle Signale soweit wie gewünscht. Ich glaube die Signale sind bei der Geschwindigkeit nicht richtig im mükrosekunden Takt geschlatet. das Problem liegt irgendwie an der zeit, die die einzelenen Befehle schon schlucken. Also er taktet von 7 bis 0 (das sind 8) und laut manual sollen ja auch 8 geschikkt werden. Aber mir fällt grad was ein: könnt ich da nicht die RS232 Schnittstelle verwenden ?
@Josef: Bin zur Zeit grad auf der Suche nach einem günstigen Logikanalysator. Konnte den von Dir beschriebenen MLAB100 bei ELV nicht finden. Kannst Du da noch ein paar weitere Informationen geben?!? Vielen Dank im Voraus! Kai M. Tegtmeier
Wenn es von der Anzeige unterstütz wird - schon. Aber du brauchst ja ein Clocksignal und das uterstützt die RS232 nicht. Josef
Hallo, reichen die 8 MHZ dazu überhaupt aus. Wären 0,125 mükrosekunden. sollte ja langen, um zu takten. Aber ich kann bei der Taktflanke der clock nicht warten und dann das Datenbit setzen, denn ich hab dann nur 200 nanosekunden zeit. Die muss man schon zusammen setzen.
Mini-Logic-Analyzer MLA 1000 Der Mini-Logic-Analyzer MLA 1000 bietet umfangreiche Möglichkeiten zur Überprüfung von komplexen Vorgängen in der Digitaltechnik. Mit Abtastraten von 50 µs - 3 s können bis zu 8 Kanäle gleichzeitig in Echtzeit erfasst und auf einem PC-Bildschirm dargestellt werden. Bezeichnung: Anzahl: Preis: Mini-Logic-Analyzer MLA 1000 Komplettbausatz inkl. Software Artikel-Nr.: 68-469-48 79,95
Wenn du ein Datenblatt hast, kann ich mir das Timing ansehen. Am besten du setzt das Datenbit, wartest kurz, gibst einen Clockimpuls, wartest - und das 8 mal - nicht 7 mal ! Josef
hallo, das pdf im anhang ist das einzigste was dabei ist. Ist alles in dem separaten ZIP im ZIP...
Meldet sich die Anzeige mit der Firmware ? Startzeit 250 ms berücksichtigt ? Die Anzeige arbeitet mit SPI/Microwire. Diese Schnittstelle haben die AVR Controller on Board. Die würde ich nehmen. Mittels Software glaube ich nicht, daß du SPI simulieren wirst können (Timinprobleme, sehr komplex). Ansonsten würde ich das Testprogramm mit der LPT1 verwenden. Josef
hallo oh die haben SPI on board ? ich bin noch relativ neu auf dem AVR-Gebiet...na dann schau ich mir das natürlich mal an .... Das Testprogramm mit der LPT1 is ja nur für den PC, aber ich brauch es ja an einem AVR. Danke für die Hilfe. Gruss Michael
Also hast Du es überhaupt richtig angeschlossen? Im Code benutzt Du PORTB-OUT und PORTD-IN. Hier ganz oben sieht das ganz anders aus. Dann schreibst Du nur 7 Bit anstatt 8, soweit ich das richtig sehe. Außerdem solltest Du hiernach noch 2ms warten: outp(0x08,PORTB); //cs high Des weiteren solltest Du den SK erst dann auf High setzen, wenn das Signal richtig steht. Deshalb lege einfach Dein Datenbit an SI an, warte mindestens 200ns, lege dann den SK an und warte mindetens weitere 200ns, nimm SK und SI weg und warte so lange das mit den gesamten Zeiten eben mindestens 1us um ist. Ich würde es eher versuchen überall 500us zu warten. Damit müsste das eigentlich locker klappen. Und noch ein TIPP: Die Wartesachen geht mit ASM wesentlich genauer und einfacher. :)
hallo, danke für die vielen Anregungen und die Hilfe. Ich habs geschafft. Hab mir aus der avrlib die SPI Funktionen angesehen und siehe da SPI geht. Leider hab ich erst nach 1h rausgefunden, dass CS also SS nicht richtig gesetzt wird in der avrlib. aber jetzt geht es. Danke gruss Michael
@Josef: Habs jetzt gefunden! Vielen Dank für die Info und ein schönes Wochenende wünscht Kai M. Tegtmeier
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.