I2C-EEPROM an ISP-Schnittstelle

OP #1858409
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.
Gast #1858441
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.
Gast #1858454
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.
Persönliche Seite #1858461
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
Angehängte Dateien:
#1858472
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
OP #1858479
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.
Gast #1858500
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren