Software I2C -> ATMEL

OP #5796738
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:
Irgendwelche unbekannten Fehler in irgendwelcher unbekannte Software 
eines anderen, ebenso unbekannten Autors zu suchen, ist schon sehr 
masochistisch. Dazu noch ohne das Programm, was bei dir nicht 
funktioniert.

Wer sollte sich das freiwillig antun?

Oliver
Gast
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.
OP
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?
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
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
> 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

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.