www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I2C-EEPROM an ISP-Schnittstelle


Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
für ein bestehendes Gerät soll ein I2C-Eeprom nachgerüstet werden.
Um das Layout nicht ändern zu müssen, soll das Ganze als kleine 
Zwischenplatine für den ISP-Anschluss realisiert werden (Software-I2C).
Die Frage: Gibt es irgendwelche Erfahrungen, welche Pins man wofür 
verwenden sollte/welche lieber nicht?
Steck jetzt nicht so im ISP-Protokoll drin, um evtl. Kollisionen 
erkennen zu können.

SDA - SCLK/MISO/MOSI?
SCL - SCLK/MISO/MOSI?

Es soll weder der EEPROM die ISP-Funktionalität beeinflussen noch eine 
ISP-Programmierung evtl. den EEPROM beeinflussen.

Autor: usuru (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der ISP-Anschluss ist eine SPI-Schnittstelle, I2C ist etwas anderes. 
Nimm ein EEPROM mit SPI-Schnittstelle.

Autor: Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damit ein IIC-Device nicht angesprochen wird, muß man sicherstellen, 
dass es kein Startbit bekommt: fallende Flanke von CLK während DATA auf 
'1' liegt. Das läßt sich mit SPI-Programmierung nicht sicherstellen, da 
man SDA entweder an MOSI oder MISO klemmen muß, die beliebige Pegel 
haben können; SCL sollte an SCLK.

Am einfachsten dürfte es sein, wenn man das /Reset-Signal dazu 
verwendet, das IIC-EEPROM während der SPI-Programmierung passiv zu 
halten.

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@usuru: Problem nicht verstanden :-)

Autor: Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ergänzung:
Ich hatte mal ein Schieberegister (4094) + IIC an gemeinsame Leitungen 
angeschlossen. Das war möglich.

Hast Du die SPI-Routinen selber geschrieben oder kannst Du dies machen? 
Die AVRs übernehmen die Daten mit der pos. Flanke von SLCK. Für ein 
IIC-EEPROM würde daraus schlimmstenfalls eine STOP-Bedingung generiert; 
das macht nichts.

Wenn man sicherstellt, dass vor der neg. Flanke die Datenleitung wieder 
auf '0' geht, wird hiermit keine Startbedingung erzeugt.

Autor: Reiner S. (chickstermi) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Also ich hab vor kurzem eine Schaltung eintworfen um zwei I2C-Busse über 
einen SPI zu steuern. Ob es jetzt zu irgendwelchen Problemen im 
Protokoll kommt kann ich auf die Schnelle nicht beurteilen. Aber vllt 
hilft dir der Schaltplan ja schonmal weiter.

Für ein I2C-Device entfallen der Inverter am I2C_Select, zwei der Buffer 
und 2 Transistoren...

Der Treiber IC39 wird benötigt, da der I2C an 5V läuft, der Controller 
aber an 3V3. Kann gegebenfalls weggelassen werden...

Gruß, der Icke

Autor: Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na ja, da wäre es dann doch einfacher, mit einem 2/4 C4066 SCL und SDA 
per /Reset abzukoppeln.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
H.joachim Seifert schrieb:
> Steck jetzt nicht so im ISP-Protokoll drin, um evtl. Kollisionen
> erkennen zu können.

Kein Problem, Du kannst die ISP-Pins als ganz normale IOs benutzen, 
solange der RESET-Pin auf high ist.
Für SW-I2C gehen 2 beliebige Pins.

Beim ISP mußt Du allerdings den SDA abtrennen, sonst könnte er 
dazwischen quatschen.
Z.B. mit nem BS170 (Gate an Reset).


Peter

Autor: Spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Allerdings könnten die Pull-Ups des I2C einem Programmer Schwierigkeiten 
bereiten.

MfG Spess

Autor: H.Joachim Seifert (crazyhorse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, wird wohl nicht ganz einfach, ich werde mir mal den ISP-Kram genauer 
anschauen müssen.
Die Idee mit dem reset-Signal sollte auf jeden Fall funktionieren, damit 
entweder SCL oder SDA blockieren.

Am schönsten wäre natürlich, wenn es eine Variante gäbe, die keinerlei 
Zusatzaufwand erfordert. Im Zweifelsfall bau ich natürlich die 2 zus. 
Teilchen ein.

Autor: Entwickler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Beim ISP mußt Du allerdings den SDA abtrennen, sonst könnte er
>dazwischen quatschen.

Das ist natürlich richtig. Schlimmer wäre es hingegen, wenn per SPI das 
EEPROM umprogrammiert/gelöscht würde.

>die keinerlei Zusatzaufwand erfordert.

Das geht nicht; wenn keine Hardware ergänzt werden soll, hift es nur, 
das SPI-Programm anzupassen. Die IIC-Routinen mußt Du sowieso per 
Software ergänzen.
Die Pullups stellen kein Problem da; 10k können es doch ruhig sein.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht reicht 1-Wire auch:

http://para.maxim-ic.com/en/search.mvp?fam=memory&...

hans

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.