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
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.
Und wie löse ich dann das Problem? Hast du da eine Lösung für mich? Grüße
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.
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.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.