AVR: I2C Master Software Library für alle AVR

Gast #4148310
Hallo,

nachdem ich mich im Netz totgesucht habe und kaum wirklich etwas 
Gescheites gefunden habe, was auch funktioniert hier mal einen extrem 
kurze und funktionierende Library eines Inders, die nur einen einzigen 
Bug enhielt, den ich korrigiert habe.

Lässt sich auf jeden AVR anpasssen, bei mir rennt sie auf einem Attiny 
mit 8 Mhz und 1 Mhz gleichermaßen.

Viel Spass!

Christian
Angehängte Dateien:
Gast
Ein paar Sachen, die mir beim schnellen Lesen aufgefallen sind:

vor dem Ausgeben eines Starts wird nicht geprüft, ob der Bus Idle ist

Wenn der Slave (oder auch die Kapazität des Busses) den Clock streched, 
wird die minimale High-Zeit des Busses verletzt

MfG Klaus
Gast
Klaus schrieb:
> Ein paar Sachen, die mir beim schnellen Lesen aufgefallen sind:
>
> vor dem Ausgeben eines Starts wird nicht geprüft, ob der Bus Idle ist
>
> Wenn der Slave (oder auch die Kapazität des Busses) den Clock streched,
> wird die minimale High-Zeit des Busses verletzt
>
> MfG Klaus

Ändere es und stelle den Code neu ein. Fertig ist ja nie was. Nur 
geprüft sollte es sein auf dem Breadboard. Fehlerhafte Codes gibt es 
genug im Netz. Auch dieser war es weil der Autor einfach nicht alle 
Funktionen gestestet hat.
Gast
Arduinoquäler schrieb:
> Christian J. schrieb:
>> Viel Spass!
>
> Seltsam die invertierte Namensgebung der Signale
>
> Beispiel:
> #define SOFT_I2C_SDA_LOW  SDADDR|=((1<<SDA))
>
> Wer soll da durchblicken wenn man es schnell verstehen soll?
Dann musst du einen PIC* nehmen, da entspricht 0 einem Ausgang.

* Vielleicht gibt es auch andere µC wo das so ist, ich kenne nur den 
PIC.
Gast
Boah, jetzt müllt das hier doch nicht so zu !!!!!! Ja, beim PIC ist 1 = 
INPUT, das steht hier aber nicht zur Debatte, weil es für AVR ist und 
easy angepasst werden kann, da die Defindes die Hardware kapseln.
Gast
Christian J. schrieb:
> Glaube dass der Code auch nicht für Arduino Benutzer geschrieben wurde.
> Für die ist das zu hoch....

Wenn du eine Funktion zur Ausgabe auf SPI schreibst, dann nennst du
die vermutlich  SPI_Read, oder SPI_Input ... nicht wahr?
Gast
Das ist noch mehr Grütze drin ;-( Frage mich manchmal was die Leute 
machen, die ihren Kot ins Netz blasen ohne richtig zu testen.

void i2c_init()
{
  SDAPORT&=(1<<SDA);
  SCLPORT&=(1<<SCL);

  SOFT_I2C_SDA_HIGH;
  SOFT_I2C_SCL_HIGH;

}

muss

void i2c_init()
{
  SDAPORT&= ~(1<<SDA);
  SCLPORT&= ~(1<<SCL);

  SOFT_I2C_SDA_HIGH;
  SOFT_I2C_SCL_HIGH;

}

heissen, sonst sind die anderen Bits auch platt.
Gast
Das ist doch (bis auf die üblichen Flüchtigkeitsfehler) eine gute 
Grundlage. Es hat was man "wartbar" nennt.
Hat der Mitbastler aus Indien sich eigentlich irgendwie zur Bug-Freiheit 
seines Geschenks verpflichtet?
@Christian J.

Ich finde es bedenklich, dass du hier Code anbietest, der nicht von dir 
stammt und ein Copyright, offenbar von einer Firma, enthält. Damit 
bewegst du dich auf sehr dünnem Eis. Falls der Copyright-Inhaber den 
Quelltext unter einer Open-Source-Lizenz veröffentlicht hat, dann pack 
die Lizenz mit dazu. Falls nicht, dann bitte einen Moderator den Thread 
zu löschen.
Gast
Konrad S. schrieb:
> Ich finde es bedenklich, dass du hier Code anbietest, der nicht von dir
> stammt und ein Copyright, offenbar von einer Firma, enthält. Damit
> bewegst du dich auf sehr dünnem Eis.

Liegt sicher kein Patent drauf, zumindest auf den Fehlern nicht :-) Ist 
mir auch wurscht, Indien ist weit weg.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 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.