Hallo zusammen Ich habe Probleme beim ansteuern eines DOGM204 Displays von Display Vision über die SPI Schnittstelle. Ich habe im Angang mein Schema und meinen Beispielcode abgelegt. Ich habe bereits ein paar Dinge ausprobiert: Ich habe das Display bereits über die parallele Schnittstelle getestet und das hat ohne grosse Probleme funktioniert. Jedoch habe ich bisher noch kein Erfolg mit der SPI-Schnittstelle. Den Reset den man am Anfang durchgführen soll habe ich bereits mit meinem Oszi angeschaut und dieser schaut genau so aus wie es im Datenblatt angegeben ist. Den Booster bekomme ich leider nicht zum laufen auf den Ausgängen (VOUT - V4) messe ich nur 2.6V oder weniger jeweils. Ich habe den Booster bereits einmal extern gespiesen (12V mit wiederständen dazwischen) und das Display hat dann einfach nur schwarze Felder angezeigt. Bei der Initialisierung bin ich einfach dem Datenblatt gefolgt aber und habe die übertragenen Signale auch bereits einmal mit dem Oszi angeschaut und habe dabei auch nichts verdächtiges festgestellt. Ich bin noch relativ unerfahren in diesem Gebiet. Falls also Jemand der ähnliche Probleme wie ich bereits schon einmal gehabt hat wäre ich um ein bischen Hilfe sehr Froh. Freundliche Grüsse Holerra
1 | DDRB |= (1 << CIPO) | (1 << COPI) | (1 << CLK) | (1 << CS); |
Ich empfehle dir dringend die üblichen Bezeichnungen MOSI und MISO zu verwenden. Der MISO Pin darf nicht auf Ausgang gesetzt werden sonst gibt es einen Bus-Kampf.
1 | upperData &= 0xf0; |
2 | lowerData &= 0x0f; |
3 | upperData |= (upperData >> 4); |
4 | upperData &= (0x0f); |
Soviel ich weiss (ich habe das Datenblatt nicht studiert) werden im 4-Bit Mode die Daten immer in den oberen 4 Bits gesendet bzw. abgeholt. Bei dir sind es die vier unteren. Es empfiehlt sich auch dringend den Port C mit Spannung zu versorgen. Dazu muss AVcc angeschlossen werden, und ein Abblock- Kondensator dazu.
1 | void SPIsendInit(char datas) |
2 | {
|
3 | SPDR = datas; |
4 | while(!(SPSR & (1 << SPIF))); |
5 | _delay_ms(15); |
6 | }
|
Auch bei der Initialisierung wirst du vermutlich zusätzlich das Synchronisations-Byte senden müssen sonst weiss das SPI nicht wann es los geht.
uff basse schrieb: > DDRB |= (1 << CIPO) | (1 << COPI) | (1 << CLK) | (1 << CS); > > Ich empfehle dir dringend die üblichen Bezeichnungen MOSI und > MISO zu verwenden. Ja ne, der TO ist auf der Höhe der Zeit. Nur sind sie sich nicht ganz einig. https://www.heise.de/select/make/2020/4/2014805250724798204 https://www.oshwa.org/a-resolution-to-redefine-spi-signal-names/ Man darf sich nur noch wundern ...
Beitrag #7295276 wurde vom Autor gelöscht.
Veit D. schrieb: > Man darf sich nur noch wundern ... Nein, man wünscht sich eine Katastrophe biblischen Ausmaßes, damit der Spuk der Luxusprobleme aufhört. Kein Scherz!
uff basse schrieb: > Dazu muss AVcc angeschlossen werden, und ein Abblock- > Kondensator dazu. Den zweiten GND auch bitte grounden.
Falk B. schrieb: > Veit D. schrieb: >> Man darf sich nur noch wundern ... > > Nein, man wünscht sich eine Katastrophe biblischen Ausmaßes, damit der > Spuk der Luxusprobleme aufhört. Kein Scherz! Das der Spuk bald aufhören sollte ist wohl jeden klar. Aber wenn Politik in Sport und Technik vorgedrungen ist, weiß ich nicht wer das noch aufhalten soll. Wenn selbst die fürchterliche Gendersprache in wissenschaftlichen Abhandlungen Einzug gehalten hat, sodass man das nicht mehr lesen kann was man vorher schon schwer lesen konnte, dann hört mein Verständnis für vieles auch langsam auf. Gekrönt vom Indianer Kinderbücher "Verbot". Tja und dann sind noch die Kaoten der neuen Klimaklebergeneration, die nur zerstören wollen statt irgendwas retten. Alles Leute ohne Sinn und Verstand. Ich schweife ab ... @ TO: Übersehe ich was oder schaltest du die CS Leitung nicht? Ansonsten hast du auf der Seite des Herstellers alle Dokumentationen. Zum Bsp. Code Bsp. https://www.lcd-module.de/support/application-note.html
Veit D. schrieb: > Übersehe ich was oder schaltest du die CS Leitung nicht? Der TO verwendet offensichtlich einen 2-Wire SPI Mode bei dem es keinen CS braucht. Datenblatt lesen hilft! Auch mein Beitrag sollte dich hellhörig werden sollen: uff basse schrieb: > zusätzlich das Synchronisations-Byte
Danke Vielmals für alle Komentare. Ich werde die Vorschläge einmal testen und falls es nicht funktioniert werde ich wohl noch etwas weitersuchen müssen. Danke nochmal für den Tipp mit dem AVcc das habe ich garnicht gewusst. Die Bezeichnungen für die Serielle Schnittstelle habe ich halt so beigebracht bekommen (Controller out Peripheral in usw.). Das mit dem Startbit auch für die Init. werde ich auch mal austesten, ist möglicherweise genau das richtige. Freundlliche Grüsse Holerra
Adrian schrieb: > Danke nochmal für den Tipp mit dem AVcc das habe ich garnicht gewusst. Wenn man schon einen 328 verwendet tut man gut daran aus dem Schaltplan des Arduino Uno zu spicken. Dann kann kaum was schiefgehen.
Danke nochmal an alle Tipps und Hiweise Es hat nun alles funktioniert. Ich nehme an es hat an den Startbits gelegen aber alles andere ist sicher auch gut zu wissen. Nochmal danke an alle. Wünsche noch Fröliche Festtage und ein gutes neues Jahr Holerra
uff basse schrieb: > Veit D. schrieb: >> Übersehe ich was oder schaltest du die CS Leitung nicht? > > Der TO verwendet offensichtlich einen 2-Wire SPI Mode bei > dem es keinen CS braucht. Datenblatt lesen hilft! > Auch mein Beitrag sollte dich hellhörig werden sollen: > > uff basse schrieb: >> zusätzlich das Synchronisations-Byte So ganz klar ist das leider nicht. Laut Datenblatt gibts viele Anschlussmöglichkeiten und im Code gibt es eine CS-Pin Initialisierung die im Schaltplan nicht angeschlossen ist. Ist das gewollt oder nicht gewollt. Wurde das vergessen oder nicht. Ich weiß es nicht. Der TO müßte klar aussagen wie er es anschließen möchte, dann können wir prüfen ob das so wie gedacht richtig ist. Umgekehrt funktioniert das nicht so richtig.
Veit D. schrieb: > So ganz klar ist das leider nicht. Laut Datenblatt ..... Stellst du dich so doof oder bist du es wirklich? Oder willst dich nur herausreden? Mit deinem Kenntnisstand dürfte es klar sein dass ein 3-Wire SPI auch ein 2-Wire SPI sein kann. Und Schaltplan lesen wirst du auch können.
uff basse schrieb: > Mit deinem Kenntnisstand dürfte es klar > sein dass ein 3-Wire SPI auch ein 2-Wire SPI sein kann. SPI müsste eher drei- oder vierdraht sein, ChipSelect, um das Ziel überhaupt zu aktivieren. Ich sehe gerade: Veit D. schrieb: > im Code gibt es eine CS-Pin Initialisierung > die im Schaltplan nicht angeschlossen ist. Den vermisse ich am Display. Aber wenn es sein einziges SPI-Gerät ist, sollte der offene CS nich stören, geht ja nur vorwärts vom µC zum Gerät. Ich hoffe nicht, dass die Software auf CS eine Antwort erwartet.
Manfred schrieb: > SPI müsste eher drei- oder vierdraht sein, ChipSelect, um das Ziel > überhaupt zu aktivieren. Manfred schrieb: > Aber wenn es sein einziges SPI-Gerät ist, > sollte der offene CS nich stören Du hast offensichtlich von SPI noch sehr wenig Ahnung. Vor allem keine Ahnung was alles geht. Lies das Datenblatt bevor du hier soviel Mist bzw. Falschwissen verbreitest.
Hallo, @ uff basse An Deiner Stelle wäre ich nicht so vorlaut. Es gibt kein "2 Wire SPI". Das geht sogar aus dem Display Datenblatt hervor. Entweder I2C mit 2 Leitungen oder SPI mit 3 oder 4 Leitungen. Eine andere Option gibts nicht. @ TO: Nach nochmaliger Betrachtung deines Schaltplanes muss ich sagen das da nichts stimmt. Weder als SPI oder noch als I2C Beschaltung. Bitte nochmal darüber nachdenken was es wie werden soll.
Ja, schon klar. Der Bericht des TO dass es jetzt funktioniert bestätigt dass ein 2-Wire SPI nicht funktioniert. Wie blöd muss man sein um darauf zu insistieren .... Vielleicht doch die geringfügig übriggebliebene Bio-Masse zwischen den Ohren mal aktivieren ....
Veit D. schrieb: > @ uff basse > An Deiner Stelle wäre ich nicht so vorlaut. Es gibt kein "2 Wire SPI". > Das geht sogar aus dem Display Datenblatt hervor. Entweder I2C mit 2 > Leitungen oder SPI mit 3 oder 4 Leitungen. Eine andere Option gibts > nicht. https://www.lcd-module.de/fileadmin/pdf/doma/dogm204.pdf Ich finde diese 3-Wire / 4-Wire SPI irgendwie merkwürdig, wo CS lediglich über ein Gatter mit SCLK verknüpft wird. > @ TO: > Nach nochmaliger Betrachtung deines Schaltplanes muss ich sagen das da > nichts stimmt. Weder als SPI oder noch als I2C Beschaltung. Eigentlich doch, er legt den Out D2 über 22k nach GND, weil er nicht zurück lesen will, sieht mir nicht verboten aus. Ob das Display beim Start den GND an D2 so interpretiert, I2C machen zu wollen?
Hallo, okay Manfred, habe nochmals alles angeschaut. Es ist laut "3 Wire SPI Beschaltung" angeschlossen, nur das SOD/D2 unbenutzt bleibt und der 22k dranhängt. Für I2C müsste D1 und D2 verbunden sein. War etwas verwirrend. ;-)
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.