mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ansteuerung EEPROM über I2C von M16C62P


Autor: Henry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

Ich versuche die I2C-Schnittstelle meinem M16C62P-uController zu 
verwenden,
um mit einem ATMEL EEPROM zu kommunizieren. Mit dem Oszilloskop sehe 
ich, dass ich die Start Kondition+ Device Adresse setze, aber ich kriege 
keine ACK vom EEPROM!!!
ich vermute, dass es mit dem 7 Adressing Mode bzw. 8 Adressing Mode was 
zu tun hat oder dass ich die I2C Schnittstelle falsch bediene
kennt sich jemanden damit aus?
ps. die von mir verwendete Adresse für die EEPROM ist 0xA6

mfg

H.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich meine bei Renesas mal einen Beispielcode gesehen zu haben.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

0xA6 lässt sich nicht in 7 bit darstellen.
Oder ist das R/W-bit da schon enthalten ?

Gruß,
Martin

Autor: Henry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,

Spezielle für den M16C62P habe ich kein Beispiel-code gefunden .
Stimmt in der Adresse ist auch der R/W Bit mitenthalten.
hast du vielleicht ein Beispiel für den 62P?

mfg
Henry

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Henry,

nein, ich habe kein Beispiel für Deinen Prozessor.
Ich habe I2C auf dem LPC2148 benutzt.

Gruß,
Martin

Autor: Mike (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe for ca. 3 Jahren ein 24C32 erfolgreich mit dem M16C62 
angesteuert. Leider ist die Initialisierung des I2C recht knifflig und 
von Renesas auch nur unzureichend dokumentiert. Anbei einige Code 
Fragmente, die aus einem grösseren Projekt stammen. Kompilieren dürfte 
sie nicht für sich allein, da fehlen einige Hilfsroutinen, aber mal 
reinschauen dürfte nicht schaden. Bitte nicht an der Formatierung 
stören, die kommt von unserem CASE-Tool.

Gruss
Mike

Autor: Henry (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Mike, Ich werde es versuchen.

mfg
Henry

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich bin damals auch gescheitert, und aus Zeitgründen auf Software-I2C 
umgestiegen.
Das hat prima und schnell funktioniert, bei Bedarf kann ich dir ein paar 
Zeilen hinschmeissen...

Autor: Mike (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Henry

Einige kleine Erlüterungen noch zum Code:

Mit i2c_init wird der Bus nach dem Reset des Controllers initialisiert.
i2c_reset erzeugt ein Bus-reset; nützlich bei Busfehlern

i2c_send und i2c_receive senden und empfangen Daten (jeweils vom Master 
zum Slave gesehen). i2c_receive erlaubt das Senden einiger Bytes, z.B 
Adressinformation, anschliessend weren die Daten vom addressierten 
baustein gelesen. Beide Funktionen stossen lediglich die Kommunikation 
an und kehren schnellstmöglich wieder zurück; der Rest der Busaktivit¨t 
wird in Interrupts erledigt. So kann sich der Prozessor während einer 
Busübertragung noch um andere Dinge kümmern.

Mit i2c_wait kann mann warten bis der Bus wieder frei ist (dann geht die 
globale Variable i2c_status auf I2C_IDLE).

Die Schreibfunktionen existieren in einer blockierenden und einer 
nicht-blockierenden Form. Erstere wrtet, bis das EEPROM beschrieben ist 
und kehrt dann erst zurück, die zweite sendet nur den Schreibbefehl, der 
Anwender muss dann selbst prüfen, wann das EEPROM wieder ansprechbar 
ist. Die Bezeichnung ...Async ist etwas verwirrend, war aber in der 
Projektplanung so vorgegeben :-;

Einige globle Variablen und Routinen, wie die Timerroutinen sind in 
einem anderen Softwaremodul definiert, es sollte aber klar sein, wozu 
sie dienen.

Ich erinnere mich noch dunkel, dass die Application Notes für den M16C 
für eine veraltete Architektur geschrieben waren, schau mal bei den 
Notes für den M32C nach, der hat das gleiche I2C-Interface wie der 
M16C62P. Die Dokumentation ist meiner Meinung nach die grösste Schwäche 
der Renesas-Teile, auch wenn Glyn versucht hat, daran zu arbeiten.

Ich hoffe, Dir ein wenig geholfen zu haben.


Mike

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.