Forum: Mikrocontroller und Digitale Elektronik I2C Initialisierung (Master) PIC16F1704


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Johann R. (iwan)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.