Software I2C -> ATMEL

OP #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:
OP #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.
OP #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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.