I2C Problem (Peter Fleury) Adressierung?

Gast #2753749
Lesenswert?
• ▲
▼
Habe folgendes Problem:
Ich versuche über die I2C Bib von Peter Fleury auf ein Sensorboard 
(RoboBee 6 DOF) zuzugreifen. Jedoch bleibt das Programm in der start_i2c 
Routine hängen.

[c]
//main.c
#define ADXL345_ADRESS 0x6A

...

i2c_start(ADXL345_ADRESS+I2C_WRITE);
i2c_write(DATA_FORMAT);
i2c_write(0x01);
i2c_write(POWER_CTL);
i2c_write(0x08);
...

//twimaster.c
unsigned char i2c_start(unsigned char address)
{
    uint8_t   twst;
    // send START condition
    TWCR = (1<<TWINT) | (1<<TWSTA) | (1<<TWEN);
    // wait until transmission completed
    while(!(TWCR & (1<<TWINT)));

//hier bleibt er stehen!
...
}/* i2c_start */

Liegt es vielleicht an einer falschen Adresse? Laut Datenblatt ist die 
Adresse 0x53, jedoch benötige ich doch eine 8 Bit Adresse, also 0xA6?

Habe leider keinen Logik Analyzer um zu schauen was auf dem Bus 
passiert...
Gast #2753752
Lesenswert?
• ▲
▼
Die Fleury-Bibliothek gibt das Adressbyte so aus, wie du es eingibst, 
während die offizielle TWI-Norm nur die oberen 7 Bit als Adresse 
definiert. guggst du halt mal in den Source-Code, dann siehst du, was da 
gemacht wird.

Oliver
Gast #2753776
Lesenswert?
• ▲
▼
Wenn er wirklich an der Stelle hängen bleibt, die du gekennzeichnet 
hast, dann ist der I2C Bus nicht bereit. Häufigste Ursachen sind 
Kurzschluss an einer der beine Leitungen, fehlende Pull-Up Widerstände 
oder fehlende Stromversorgung an einem Slave. In allen diesen Fällen ist 
SCL oder SDA immer Low. In Ruhelage sollten die Leitungen beide aber 
High sein.
Gast #2753788
Lesenswert?
• ▲
▼
Also Pullups sind auf dem Sensorboard verbaut (2K2). Kurzschluss 
schließe ich auch aus.

Liegt es vielleicht an der Portkonfiguration?

Ich benutze ein rn Control. Habe das Sensorboard an Port C Hängen.

Die Ports aktiviere ich so:

DDRC =0xFF;
PORTC = 0xFF;

Danke für die Hilfe!
Gast #2753807
Lesenswert?
• ▲
▼
Andreas schrieb:
> Da parallel am Port C noch die Led's des rn control anliegen, sehe ich,
> dass die LED an Port C.0 leuchtet. An diesem Port liegt SCL. Dh. SDA ist
> high und SCL ist low.

Hab das gerade mal bei meinem Selbstbau getestet. Sobald ich die LEDs an 
den Pins dran mache geht meine I2C Verbindung auch nicht. Mach die mal 
ab und teste nochmal.
Gast #2753834
Lesenswert?
• ▲
▼
Ja Adresse ist richtig.

Wenn du nichts zum testen da hast. Dann lass doch einfach nach dem 
i2c_start eine LED toggeln. Dann weiß du ob der die Funktion ausgeführt 
hat.

Andreas schrieb:
> DDRC =0xFF;
> PORTC = 0xFF;

Ob du das brauchst weiß ich nicht. Die Pins vom I2C habe ich noch nie 
damit belegt. Testweise kann man das ja mal auskommentieren.
Gast #2753845
Lesenswert?
• ▲
▼
HI

>Ob du das brauchst weiß ich nicht. Die Pins vom I2C habe ich noch nie
>damit belegt. Testweise kann man das ja mal auskommentieren.

Die TWI-Pins brauchen nicht konfiguriert werden:

When TWEN is written to
one, the TWI takes control over the I/O pins connected to the SCL and 
SDA pins, enabling the slew-rate limiters and spike filters.

MfG Spess
Gast #2754513
Lesenswert?
• ▲
▼
Mir ist jetzt noch aufgefallen, dass das Rn Control bereits 10k Pullups 
onboard hat, das verwendete Sensorboard hat ebenfalls 2k2 Pullups. Kann 
es sein, dass es daran liegt?

Wenn ja, hat von euch jemand ein rn control und weiß ob ich die Pullups 
des RN Control deaktivieren kann oder ob ich die auftrennen müsste?

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.