Go Down

Topic: RTC DS1307 & LCD 12864B mit SPT Modul (? ST7920) (Read 957 times) previous topic - next topic

Gerrolette

Hallo erstmal im Deutschsprachigen Teil, Super das es sowas gibt.

Ich habe da ein kleines Problem mit meiner RTC Uhr und meinem neu erworbenen Display. Ich kann sie zwar einzeln nutzen, aber leider irgendwie nicht zusammen.

Die RTC habe ich wie folgt an meinen Mega angeschlossen.
SQ -
DS -
SCL - Pin21
SDA - Pin20
VCC - +5V
GND - GND
Diese benötigt wohl die Wire.h.
Code: [Select]
#include "Wire.h"
#define DS1307_ADDRESS 0x68


Das LCD Modul habe ich über das SPT Modul Angeschlossen, und dort auch den kleinen switch von Paralel auf SPI umgestellt.
Nutze hierfür die U8GLib.
Code: [Select]
U8GLIB_ST7920_128X64 u8g(30, 32, 31, U8G_PIN_NONE );// SPI Com: SCK = en = 30, MOSI = rw = 32, CS = di = 31


SCK -> Pin30
CS -> Pin31
SID -> Pin32
VCC -> +5V
GND -> GND

Nun muss ich zugeben, das ich mittlerweile auch immer mehr mit den Kürzeln durcheinander komme, und vermute das beide Module irgendwie Kollidieren.
Ich dachte das die RTC ein I2C und das Display mit SPI Seriell angesprochen wird(Mich wundert dabei das ich keinen Hardware Port belegen muss, sondern die Pins frei Definieren kann Ohne Soft Serial zu verwenden.). Oder sind beides I2C Module, so das ich beide Module miteinander verbinden muss?

Also:
RTC_SCK - LCD_SCK -> Pin21
RTC_SDA - LCD_SID?? -> Pin20??
Wohin dann mit dem LCD_CS sowohl auch der RTC_DS der ja nirgends angeschlossen ist?
Warum kann ich die Pins für den I2C Bus nicht frei wählen, sondern müssen auf dem Pin20-SDA & Pin21-SCL beim Mega und 4/5 beim Uno sein?

Also wenn mir da jemand auf die Sprünge helfen könnte fände ich sehr nett.

Lieben Dank,
Gerrit

uwefed

SPI ist Hardware implementiert. Darum kannst Du nicht x-beliebige Pins nehmen.
Beim Mega sind das: SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). Wobei Das SS-Pin (oder CS genannt) frei wählbar ist, weil jeder Baustein am SPI einen eigenen SS braucht.
Jetzt weiß ich nicht ob die U8GLIB Bibiothek nicht die HW SPI- Schnittstelle benutzt sondern in SW emuliert.
Welche Bibliothek benutzt Du?
Grüße Uwe

Gerrolette

Okay soweit Ordnet sich das ein wenig bei mir.

Ich nehme mal an das das LCD-SPI dann wohl über die U8GLIB per Software Emuliert wird, denn wenn ich die Pins umkonfiguriere z.b.
Code: [Select]
U8GLIB_ST7920_128X64 u8g(30, 32, 31, U8G_PIN_NONE );// SPI Com: SCK = en = 30, MOSI = rw = 32, CS = di = 31
läuft das Display auch an diesen Pins.

Dann nehme ich auch mal an das I2C ebenso per Hardware fest liegt (Mega 20/21) & (Uno 4/5), denn wo anders läuft die RTC nicht, und lässt sich auch nicht stellen oder auslesen. würde dann auch erklären warum ich nirgends bei der <Wire.h> einen Pin definieren kann, sondern nur eine Adresse und auch keinen CS oder SS Pin am RTC Modul habe. Richtig?

Nun habe ich das LCD mal an folgende pins gehängt.
Code: [Select]
U8GLIB_ST7920_128X64 u8g(52, 51, 53, U8G_PIN_NONE );// SPI Com: SCK = en = 52, MOSI = rw = 51, CS = di = 53

MISO brauche ich wohl beim LCD eher weniger weil ich ja nur Daten an das Display sende, und den Pin hätte ich nun auch gar nicht auf dem LCD Modul.
Ja das LCD funktioniert auch an Pin 52,51,53.. :)

Also sind I2C und SPI eigendlich komplett voneinander getrennte Wege? Dann müsste ich doch villeicht den Fehler eher in der Software suchen?
Ich dachte wenn das Display im einen Sketch funktioniert, aber die RTC nicht | Im anderen die RTC aber das Display nicht, das ich da villeicht was falsch verkabelt habe.

Sonst weis ich momentan auch nicht so ganz weiter...
Vielleicht Schlaf ich nochmal ne Nacht drüber.


olikraus

Hallo

U8glib unterstützt sowohl HW SPI als auch SW SPI (ohne zusätliche libs).

Code: [Select]

U8GLIB_ST7920_128X64 u8g(30, 32, 31, U8G_PIN_NONE );// SW SPI, alle Pins frei wählbar
U8GLIB_ST7920_128X64 u8g(31, U8G_PIN_NONE );// HW SPI, SCK und MOSI müssen entsprechend an die Ausgänge des SPI subsystem angeschlossen werden

Siehe auch: http://code.google.com/p/u8glib/wiki/device. Dort sind die Konstruktoraufrufe erklärt.

Quote
Ja das LCD funktioniert auch an Pin 52,51,53..

So soll es auch sein.

Quote
Also sind I2C und SPI eigendlich komplett voneinander getrennte Wege?

Sehe ich auch so.
Wenn sich RTC und das Display keine Pins teilen, sehe ich keinen Grund warum das nicht gemeinsam funktionieren sollte.

Grüße,
Oliver

uwefed

Beim Arduino UNO liegt I2C an A4 und A5 nicht an 4 und 5.
Versuch mal mit dem http://playground.arduino.cc/Main/I2cScanner ob dort die RTC gesehen wird.

Fürs WeitergeholfenWerdenWollen bitte Sketch der nicht funktioniert und genaue Fehlerbeschreibung.

Grüße Uwe

Go Up