-
        

Ergebnis 1 bis 10 von 10

Thema: I2C Bus mit Atmel Chip als Slave ..

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332

    I2C Bus mit Atmel Chip als Slave ..

    Anzeige

    Hallo Zusammen,

    meine ersten Erfahrungen haben gezeigt, das der I2C BUs am Raspberry nicht so einfach läuft. Clockstreaching wird nicht unterstützt.

    Hier habe ich zwar mittels Baudrate=XXX am Treiber die Übertragungsgeschwindigkeit herunter gedreht, muss hier aber noch weiter die Stabilität prüfen.

    Gruss R.
    Kaum macht man es richtig, schon funktioniert's ...

  2. #2
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hey,

    das liegt wahrscheinlich daran, dass der SoC keinen "richtigen" I²C Controller hat, sondern sowas was sich BSC, also Broadcom Serial Controller nennt, hat.
    Der macht im Grunde UART, SPI und I²C. Da der UART kein "richtiger" UART ist (ohne Handshake etc) werden auch die anderen Schnittstellen sicher nur das nötigste haben

    Gruß
    Daniel
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332
    Hi,

    dieses Problem ist mir bekannt. Eigentlich dachte ich eher, das jemand hier in der Zwischenzeit einen I2C Treiber (Big Banging) gefunden/geschrieben hat, welcher die
    fehlende Clock-stretching Funktion beinhaltet.

    Ich versuche jetzt meinen Atmel-Treiber für I2C Slave Funktion schneller zu bekommen.

    Ich hatte schon im Internet nach einem AtMega ASM Modul für I2C Bus gesucht, aber keinen passenden gefunden.
    Werde jetzt erstmal die Case Funktion durch einen Array-Funktion ersetzten.

    Wenn ich das Teil am rennen habe, melde ich mich wieder.

    Gruss R.
    Kaum macht man es richtig, schon funktioniert's ...

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332
    Hallo Zusammen,

    die fehlende Clock-Streatching Funktion macht es mir es fast unmöglich die Standard Funktionen des I2C Bus zu verwenden.

    Hat jemand mit diesem GPIO I2C Bus Erfahrungen gemacht ?

    http://wiringpi.com/reference/i2c-library/

    Gruss R.
    Kaum macht man es richtig, schon funktioniert's ...

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    46
    Beiträge
    765
    Wenn die Möglichkeit besteht, wechsle auf U(S)ART. Darüber verstehen die beiden sich prima. Zur Not ein zusätzlicher kleiner Atmel, welcher zwischen USART und I2C mit einem weiteren Atmel übersetzt.
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332
    Hi,

    verstehe ich das so, das diese Lib nicht geht. Ich beginne gerade mit der Codierung meines Testprogrammes.

    Edit:
    Danke für den Hinweis. Ich habe mir den Quellcode von dieser Lib dann doch nochmals angesehen
    und musste feststellen, das er auf den Standard I2C "i2c_smbus_access" Routinen basiert und somit
    keine Lösung meines Problem ist.

    Leider habe ich zu viele Teilnehmer, um auf eine serielle Verbindung zu wechseln. Eher würde ich mir ein anderes
    Board zulegen.

    Gruss R.
    Geändert von Ritchie (12.08.2014 um 18:56 Uhr)
    Kaum macht man es richtig, schon funktioniert's ...

  7. #7
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hey Ritchie,

    bei meinen Recherchen zu meinem ADC-Treiber habe ich heute gesehen, dass der BSC doch eine Clock Streching Funktion besitzt.
    Schau mal auf S. 35 nach:

    http://www.raspberrypi.org/wp-conten...eripherals.pdf
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  8. #8
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332
    Hallo Daniel,

    ich habe den Thread später dann hier Artverwand weitergeführt, da ich nach einer Alternative für den RPI gesucht habe.

    http://www.roboternetz.de/community/...Bus-Problem%29

    Hier habe ich auch einige erklärende Links eingefügt, welche dem Problem genauer auf den Grund gehen.

    Dieser Link erklärt zum Beispiel den Fehler im Chip:
    http://elinux.org/BCM2835_datasheet_...ock_stretching

    Die genaue Erklärung kann man dann hier nachlesen:
    http://www.advamation.com/knowhow/ra...i-i2c-bug.html

    Der Chip besitzt diese Fähigkeit, nur ist diese Fehlerhaft implementiert.

    Ich habe derzeit einen BeagleBone Black Element14 auf dem Tisch liegen und bin dabei mein Programm und Hardware
    zu portieren.

    Ganz entscheidend ist die Aussage:
    Don't expect help from the Raspberry Pi creators or from Broadcomm.
    They know the problem (at least partially), but they unfortunately did neither document nor solve it.
    Für mich der Grund, nach einem anderen Board zu suchen.

    Viele Grüße

    R.
    Kaum macht man es richtig, schon funktioniert's ...

  9. #9
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    27
    Beiträge
    3.517
    Blog-Einträge
    9
    Hey Ritchie,

    ahh ok. Ich hatte mich nur nach dem Datenblatt gerichtet. Bisher ist mir dieses Problem nicht aufgefallen.
    Wobei....ich hatte mal vor einiger Zeit mit nem PSoC am Raspberry Pi experimentiert. Die Kommunikation zwischen AVR und Raspi bzw. PSoC und AVR klappte 1a...nur die Kombination PSoC und Raspi warf Probleme auf. Irgendwas hat die I²C Kommunikation immer gestört.
    Eventuell war es sogar das Problem....ich kenne leider die API von Cypress bzgl. I²C Slave im PSoC nicht gut genug um dieses Verhalten auf diesen Fehler zurück führen zu können.
    Aber die Info das der I²C buggy ist, ist schon mal viel Wert

    Jetzt ist natürlich die Frage was könnte Broadcomm dagegen tun (abgesehen davon den Chip zu fixen )....
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  10. #10
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    07.11.2004
    Beiträge
    332
    Hallo Daniel,

    hier wäre eine mögliche Lösung ein sogenanter "Bit Banging" Treiber. Hierbei wird die Steuerung des I2C Bus komplett in Software gelöst.
    Nur muss man auch das Wissen und die Zeit dafür haben.

    Viele Grüße

    R.
    Kaum macht man es richtig, schon funktioniert's ...

Ähnliche Themen

  1. Amtel atmega 32 als I2C- SLAVE Bus mit 250kBaud im Interrupt Modus
    Von Ritchie im Forum C - Programmierung (GCC u.a.)
    Antworten: 10
    Letzter Beitrag: 23.07.2012, 07:40
  2. Atmega als slave in I2C Bus
    Von sato im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 11.04.2009, 02:18
  3. [ERLEDIGT] 12F675 als Slave in einem I2C-Bus betreiben?
    Von thomasstoll im Forum PIC Controller
    Antworten: 4
    Letzter Beitrag: 26.01.2006, 12:50
  4. Problem: Zwei MEGA8 via I2C-Bus koppeln (mit I2C-slave-Lib)
    Von Ulfens im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 11.01.2006, 16:25
  5. 12F675 als Slave in einem I2C-Bus betreiben?
    Von peterguy im Forum PIC Controller
    Antworten: 8
    Letzter Beitrag: 23.10.2004, 16:28

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •