PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Soft-SPI und Soft-I2C



Ozzy
18.07.2009, 10:46
Moin,

ich möchte verschiedene Sensoren an meinen ATmega anschließen. Doch leider habe ich das Problem, dass einige mit 5V, andere mit 3V laufen. Busübersetzer auf andere Pegel habe ich hier, die Frage ist nur, ob ich alles an einen ATmega anschließen kann. Dafür würde ich dann nämlich auch 2xSPI und 2xI2C benötigen.
Kennt jemand von Euch einen Link, wo es SPI und I2C als Soft-Variante gibt? Soft-SPI gibt es hier im RN-Wissen, schön wäre aber eine Bibliothek für beides.

Vielen Dank, Ozzy

uwegw
18.07.2009, 12:00
Welche Programmiersprache?

Prinzipiell ist es aber auch möglich, innerhalb eines Busses von 5V auf 3,3V zu wechseln. Bei SPI ist es einfach, weil die Leitungen alle unidirektional sind, bei I2C ist es etwas schwieriger, geht aber auch.

Bernhard667
18.07.2009, 19:56
Hallo,

in C habe ich Soft I2 schon gemacht für C6805 (Gott hab ihn selig) und AVR.
Bitte melden, wenn interessert

Bernhard

Ozzy
18.07.2009, 20:07
Moin, Interesse besteht! Bitte sei doch so nett, und schicke mir den Code, Mail-Adresse kommt per PN.

Vielen Dank!

markusj
18.07.2009, 21:14
Warum versuchst du nicht, mit einer I2C und einer SPI-Schnittstelle auszukommen?
I2C-Devices sind von Haus aus in der Lage, zu mehreren an einem Bus zu hängen, Schaltungsvorschläge bezüglich des Level-Shiftings findest du auch auf i2c-bus.org
SPI-Devices haben idr. ein Slave-Select Signal, so kannst du mehrere Devices an einem Bus betreiben und immer eines auswählen. Auch hier ist Level-Shifting keine große Kunst.

mfG
Markus

Edit: Es würde dann auf die vorhandenen Hardwareschnittstellen rauslaufen, um das nur nochmal zu verdeutlichen.

Bernhard667
19.07.2009, 21:11
Hallo,

ich verwende 2 getrennte I2C Busse, einer Hard I2C, der andere Soft.
Der Grund ist, der Hard I2C geht auf meinen Hausbus. Über einige 10 Meter geht es hier doch recht fehlerbehaftet. Da hängen aber intelligente Slaves dran, selbst alles Mega8 Controller. Mithilfe der Intelligenz in Master und Slaves fahre ich ein fehlererkennendes Protokoll.
Deshalb hängt der dumme Slave PCF8583P, eine Echtzeituhr, an einem eigenen Soft I2C Strang, damit er die Störungen nicht mitbekommt.
Bernhard