Forum: Mikrocontroller und Digitale Elektronik I2C mit PIC 16f818


von mophzk (Gast)


Lesenswert?

Hallo,
ich habe damit begonnen mich mit den Mikrocontrollern auseinander zu 
setzten und bin jetzt beim I2C angelangt. Leider komm ich da auch nicht 
weiter. Ich muss nämlich ein LCD mit dem PIC 16f818 über I2C ansteuern.
Kann mir jemand erklären wie ich beim 16f818 die software emulier um am 
PortA den I2C anschließen zu können.
Falls jemend fertige I2C Routinen für diesen PIC hat würdre es mir auch 
sehr helfen.
Danke im vorraus mophzk.

von Jens P. (picler)


Lesenswert?

Warum über Software emulieren? Der PIC 16F818 hat ein SSP-Modul, welches 
I2C in Hardware kann. Am besten mal ins Datenblatt schauen.

von Tobias J. (tobiasjohn) Benutzerseite


Lesenswert?

Hallo,

ich habe es auch mal versucht bei einen PIC16F877A das MSSP Modul zu 
nutzen.
Leider bis heute ohne Erfolg.

Kommuniziert werden sollte mit einem Seriellen EEPROM.

Das Lesen mit einer Software-Routine funktionierte - das Schreiben bis 
heute leider auch nicht.

Wenn du funktionierende Routinen für PIC-Mikrocontroller hast, dann meld 
dich mal bei mir ;-)

Gruß,
 Tobias

von Jens (Gast)


Lesenswert?

@ Tobias John (tobiasjohn)

Hi Tobias,

ich habe bisher RTC und Temperatursensoren über I2C ausgelesen. Jeweils 
über SSP vom 16F876, das geht ohne Probleme. Zumal ich jetzt nicht 
nachvollziehen kann, warum Lesen geht und Schreiben nicht. Denn auch 
beim Lesen wird ja zumindest eine Adresse zum EEprom geschrieben. 
Vielleicht hast Du irgendwo einen Denkfehler.

Suche am besten mal hier im Forum nach I2C, da wirst Du garantiert was 
finden. Ansonsten schaue Dir mal die Seite wwww.sprut.de an, da ist die 
Kommunikation via I2C recht gut beschrieben, auch mit Code-Beispielen.

Viel Erfolg.

Gruß, Jens

von Sven S. (stepp64) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hallo,

anbei mal meine Routinen, welche mit einem 16F887 bisher problemlos 
funktionieren (in Assembler). Am Anfang hat bei mir auch nichts 
funktioniert, bis ich testhalber das SMP-Bit im SSPSTAT-Register 
eingeschaltet habe. Ab da funktionierten die Routinen. Probiert es mal 
aus.

Sven

von Peter D. (peda)


Lesenswert?

Jens wrote:

> ich habe bisher RTC und Temperatursensoren über I2C ausgelesen. Jeweils
> über SSP vom 16F876, das geht ohne Probleme. Zumal ich jetzt nicht
> nachvollziehen kann, warum Lesen geht und Schreiben nicht.

Warscheinlich kein STOP gesendet.
Mit einem Repeat-START wird der Schreibzyklus abgebrochen.

Ich benutze oft SW-I2C-Master, auch wenn HW-I2C drin ist. Das hat den 
Vorteil, daß man es schnell auf beliebige MCs portieren kann (wenn in C 
geschrieben).


Peter

von Tobias J. (tobiasjohn) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier sind mal meine Hardware-I2C-Routinen - vielleicht laufen die ja bei 
irgendwem. Oder es findet jemand den Fehler :D

Gruß,
 Tobias

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
Noch kein Account? Hier anmelden.