Software I2C -> ATMEL

#5796738
Lesenswert?

Moin Moin,

kann sich jemand mal die beiliegende ( tolles Wort.. ) Bibliothek 
anschauen, ich werde das Gefühl nicht los, dass irgendwas vergessen 
wurde.

Leider kann ich aktuell nicht wirklich damit "I2C" sprechen. Mit meiner 
Hardware Variante hingegen ohne Probleme.

Habe vor mir ein Testboard mit einer LED die eigentlich leuchten sollte 
( wie gesagt, mit dem Hardware Interface klappt alles ).

SCL & SDA schalten auch hin und her ( bei der Software Variante.. )

Vill. sieht ja jemand direkt was?!
Angehängte Dateien:
#5796885
Lesenswert?

Soft Leser schrieb:
> Oliver S. schrieb:
>> Wer sollte sich das freiwillig antun?
>
> Finden sich immer ein paar die das mögen, auch wenn die
> Software noch so schräg daherkommt.
>
> Mir tut schon der Prozessor leid der dauernd bei jedem
> Pippifax-Zugriff sich einen Pointer erst zusammenrechnen muss.

Ich bin nicht perfekt die Software auch nicht. Ich bin dabei was zu 
lernen.
Ist der Zeiger zugriff, deutlich aufwendiger als alles andere?
#5796901
Lesenswert?

Jan H. schrieb:
> kann sich jemand mal die beiliegende ( tolles Wort.. ) Bibliothek
> anschauen, ich werde das Gefühl nicht los, dass irgendwas vergessen
> wurde.

Kannste unbesehen wegwerfen.

Wenn ich den Code richtig verstehe konfiguriert die Lib als Erstes die 
Portpins auf Ausgang und High - was man bei I²C niemals tun darf, denn 
nur die Pullups dürfen den Bus nach "oben" ziehen.

Das dann auch niemand nachschaut ob die Pins überhaupt den erwarteten 
Pegel haben, fällt danach nicht mehr ins Gewicht. Stichwort: Clock 
Stretching.

Wenn man beim AVR Soft I²C machen will, setzt man die Port Bits auf 0 
und steuert den Ausgang mit dem DDR Register: Eine 1 setzt das I²C 
Signal auf 0 (null) und eine 0 via externem Pullup auf high.
#5796934
Lesenswert?

Jim M. schrieb:

> Wenn man beim AVR Soft I²C machen will, setzt man die Port Bits auf 0
> und steuert den Ausgang mit dem DDR Register: Eine 1 setzt das I²C
> Signal auf 0 (null) und eine 0 via externem Pullup auf high.

Das heißt ich definiere die Ausgänge mit dem DDRx auf Eingang also 
lösche die jeweiligen Bits.

Dann steure ich die Pins komplett mit dem DDRx Bits, wie Du schon 
beschrieben hattest.

Das habe ich noch nicht gewusst. Wieder etwas neues gelernt ;)
Gast #5797207
Lesenswert?

> Das habe ich noch nicht gewusst. Wieder etwas neues gelernt ;)

Spätestens JETZT solltest Du Dir mal die Dokumentation zum IIC 
durchlesen und verstehen - dabei lernt man nämlich am meisten!

Gruß
TK

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