mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C mit PIC 16f818


Autor: mophzk (Gast)
Datum:

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

Autor: Jens PICler (picler)
Datum:

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

Autor: Tobias John (tobiasjohn) Benutzerseite
Datum:

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

Autor: Jens (Gast)
Datum:

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

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:
Angehängte Dateien:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Tobias John (tobiasjohn) Benutzerseite
Datum:
Angehängte Dateien:

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

Gruß,
 Tobias

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.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

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