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.
Warum über Software emulieren? Der PIC 16F818 hat ein SSP-Modul, welches I2C in Hardware kann. Am besten mal ins Datenblatt schauen.
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
@ 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
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
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.