mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik mega8 und ADXL345 an Fleury Soft- I2C / TWI


Autor: Matze Niemand (hupe123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich versuche einen ADXL345 (Beschleunigungssensor) an einen ATmega8 mit 
4,0Mhz per SOFT I2C anzubinden.
Ich benutze die Bibliothe von Fleury und programmiere eingentlich in C 
mit WINAVR.
Ich habe die master.s in die Makefile eingebunden und die i2cmaster.h in 
meine main.h.
Der Compiler schmeisst keine Fehlermeldung aus.

Die Init vom soft-i2c läuft auch durch, allerdings die init von Sensor 
nicht. Wenn ich allerdings am Kabel wackel, dann läuft die durch. Es 
kommen auch nur dann Messwerte, wenn ich am Kabel wackel. Klar, auch 
mein erster Gedanke: Kabel im Arsch... Aber NEIN:
Die Messwerte sind gewürfelt. Sogar wenn ich meinen Finger an den Port 
halte, kommen Messwerte an - und ich glaube nicht, daß mein Zeigefinger 
eine ordentliche I2C-Kommunikation hinbekommt.

Wo liegt mein Fehler? Der Quellcode inkl. Makefile und hex sind im 
Anhang.

Danke! Grüß,
Matze

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matze Niemand schrieb:

> Sogar wenn ich meinen Finger an den Port
> halte, kommen Messwerte an - und ich glaube nicht, daß mein Zeigefinger
> eine ordentliche I2C-Kommunikation hinbekommt.

Braucht er ja auch nicht.

Der Portpin wird brutal einfach abgefragt und der dann ermittelte Wert 
wird an die aufrufenden Funktion als Wert weitergegeben.

Die Absicherung, dass es gültige I2C Daten sind, können die 
angeschlossenen Geräte machen, wenn sie zusätzlich Prüfsummen  oder 
CRC-Byte(s) übermitteln.

Autor: Matze Niemand (hupe123)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wie löse ich dann das Problem?

Hast du da eine Lösung für mich?

Grüße

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde als erstes die Hardware kontrollieren. Selbst wenn das I2C 
Gerät richtige Daten liefern würde, kann es doch nicht angehen, dass ein 
Rumpacken am Kabel die eingelesenen (illegalen) Daten ändert. Oder ist 
der ADXL345 (Beschleunigungssensor) so empfindlich montiert, dass diese 
Bewegung schon auf den Sensor übertragen und ausgewertet wird? Ggf. 
Schaltplan und Foto vom Aufbau zeigen (Bildformate beachten).

Wenn das steht, würde ich nachsehen, ob das I2C Gerät richtig 
angeschlossen und angesteuert wird. Dazu ist bestimmt ein I2C Analyzer 
(Sniffer, Monitor) oder ein LA oder ein Oszi hilfreich. Vielleicht 
fallen anderen bei den Protokollen und Timing-Screenshots was auf. Wenn 
diese Tools nicht vorhanden sind, Bescheid sagen.

Link zum Datenblatt des I2C Geräts ist vielleicht auch nützlich, wenn 
man die Ansteuerung kontrollieren will.

Autor: Matze Niemand (hupe123)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
das i2c-gerät funktioniert ordnungsgemäß. ich habe es an einem Hardware 
i2c bus getestet.
ich kann mir das wirklich nicht erklären. ich habe eben, einfach mal 
spaßeshalber, probiert den sensor mit einer falschen adresse 
anzusprechen und selbst dann kriege ich gewürfelte werte...
komische messwerte bekomme ich auch, wenn ich SCL und SDA vertausche - 
da dürfte dann eigentlich gar nichts mehr kommen.
ich kriege auch nur "messwerte" wenn ich am kabel wackel, sonst nicht...

anbei das datenblatt des sensors.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt und Archiv habe ich geladen und schaue mir den Code am 
Abend/Wochenende in Ruhe an.

Bisher habe ich nur mit der Fleury Hardware-TWI Library experimentiert 
(Atmega8 und DS1621 
Pollin Funk-AVR-Evaluationsboard: Temperaturmessung mit DS1621) aber 
das Beispiel habe ich noch aufgebaut und ich werde das auf die Fleury 
Software-TWI Library umstellen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.