Hallo!
Ich will Lichtstärke-Mess-Modul GY-302 (Chip = BH1750;
(slave-)I2C-Modul) mit PIC16F1704 ansteuern (Master).
Kurzbeschreibung: Chip BH1750 braucht max. 3,3V und das Modul GY-302 hat
3,3V Regler, sodass seine I2C-Anschluße 0V oder 3,3V liefern. PIC und
LCD laufen von 5V, mit den GY-302-Modul versorgt wird. Für
I2C-Kommunikation wurde ein Pegel-Wandler 3/5V zw. PIC und Modul GY-302
eingebaut und es läuft alles mit anderem PIC.
Das komplette Programm habe ich zuerst für PIC16F1512 (28-Pin-Gehäuse)
geschrieben und getestet und da funktioniert alles. Jetzt will ich das
mit PIC16F1704 betreiben, weil seine 14 Pins reichen, er hat I2C
(MSSP-Modul) und ist kostengünstig. Ich würde auch später gerne diesen
Controller für andere Projekte nehmen. Mit I2C von PIC16F1704 stoße ich
abber auf Probleme, und ich vermute wegen falscher Initialisierung
(Einstellung) von
I2C-Modul. Der PIC16F1704 hat mehr Register zum Initialisieren von I2C
und allgemein etwas mehr an Perepherie als PIC16F1512. Mit jetzigen
Einstellungen kann ich Adresse und Daten an GY-302-Modul anscheinend
fehlerfrei senden, das Auslesen liefert aber 0-Wert (16-Bit-Wert).
Ich suche länger nach Fehler und finde nichts. Beispiele im Netz zu
PIC16F1704 und seinem MSSP auch nicht gefunden. Habe wohl etwas
übersehen. Muss man vielleicht andere Perepherie-Elemente extra
abschalten? Also SMBus ist aus. Das ist von I2C abgeleitete Bus mit
anderen Pegeln und langsamen ist er auch (10...100KHz). Ich habe aus
Programm-Dateien wegen besseren Übersicht viel raus gekürzt, sodass
möglichst nur I2C-Funktionen und deren Aufrufe im Hauptprogramm zu sehen
geblieben sind. Ich hoffe das reicht so fürs Übersicht. Eigentlich kommt
nur die erste Funktion "InitI2C()" (I2C-
Initialisierung) aus der Datei "i2c.c" in Frage. Sie ist für die
Einstellungen von I2C-Bus (hier Master-Mode) verantwortlich. Können Sie
mir dabei helfen Fehler zu finden?