PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : seltsames Verhalten am I2C



liquidus
26.11.2009, 23:09
Hiho

Ich versuche derzeit das Kompaßmodul cmps03 an das rnmega2560 Board anzuschließen. Unter Verwendung der Beispielsoftware versuche ich die Firmware auszulesen. Dabei habe ich festgestellt, da das Programm nur durch läuft, wenn ich mit der Hand an die I2C-Kabel fasse.

berühre ich nur das SCL kabel gibt mir die Software eine 0 raus
Berühre ich beide Kabel kommt meist eine 255 - mitunter aber auch irgendwas anderes raus.

Jetzt gehe ich mal schwer davon aus, dass es sich hier um irgendein elektronisches Problem handelt - aber ich komme irgendwie nicht weiter.

Die Anschlüsse am Kompassmodul sind:
PIN1: +5V
PIN2: (SCL) an PIN 40 am rnmega 2560 und mit 4,7K an +5V
PIN3: (SDA) an PIN 41 am rnmega 2560 und mit 4,7K an +5V
PIN9: GND

Ich habe das Ganze auch schon mit 10K Widerständen getestet - gleiches Ergebnis. Anschluß an ein Labornetzteil (wegen der Spannungsspitzen ) hat auch nix gebracht.

Irgendwie weis ich grad nicht mehr weiter.
Vieleicht hat ja noch jemand ne Idee - das kann doch eigentlich nicht soo schwer sein :-s

Gruss Liquidus

Jaecko
26.11.2009, 23:14
Geh ich richtig, dass das in Bascom geschrieben ist?
Wenn ja: Mit dem ATMega2560 + Bascom + I2C hab ich an den Hardware-Pins auch Probleme. Verwend ich da Software-I2C an anderen Pins, gehts komischerweise.

In C geht die I2C-Hardware problemlos; also scheints ein Problem in Bsacom zu sein. Kann sein, dass das mittlerweile gelöst ist; der letzte Versuch damit ist schon länger her.

Richard
26.11.2009, 23:16
Hat das Kompassmodul 5 oder 3,3 V?


Gruß Richard

liquidus
26.11.2009, 23:24
Hui - das geht ja schnell

@Richard
Das Kompass modul hat 5V und zieht auch korrekt zwischen 20 und 30 mA (ich seh leider nur Ampere mit 2 Nachkommastellen)

@Jaecko
Ja, ich benutze Bascom (stehe mit C irgendwie auf Kriegsfuss)
Wie würde Software I2C funktionieren? Gibts da irgendwo aufschlussreiche Dokus ?

Danke schonmal für die Infos

Gruss Liquidus

Jaecko
26.11.2009, 23:27
Software-I2C kann Bascom selber.
Da müsste man einfach mit Config SDA / Config SCL die Pins zuweisen, die man haben will.

(Hatte mit C auch immer "Probleme"; bis ich dann mal nen Displaytreiber mit Bascom und C geschrieben hab und festgestellt hab, dass die C-Version um vielfaches schneller lief)

liquidus
26.11.2009, 23:39
Mmmh

ich hab im Programm ja auch die Zuweisung drin...

Config Scl = Portd.0
Config Sda = Portd.1

Nun ist aber d.o und d.1 auch genau der Hardware I2C auf dem Board.
Möglicherweise mögen die sich nicht - da muss ich mal etwas experimentieren.

Ist aber trotzdem seltsam, dass es sich so mit dem "Anfassen" bemerkbar macht - ich würde da als alter Autoschlosser pauschal auf ein Masseproblem tippen - aber mein Meister damals meinte auch schon immer "Der Strom geht seltsame Wege..." :lol:

Gruss Liquidus

mare_crisium
27.11.2009, 07:14
liquidus,

solche Geschichten, wie sie Dir mit dem Anfassen passieren, hängen oft mit unausgeglichenen Potentialen zusammen ;-). Wie waren die Widerstände geschaltet, mit denen Du's probiert hast? Es muss je ein Widerstand von SDA nach +5V und von SCL nach +5V (pull-up-Widerstände, ca. 10k) gewesen sein. Sind die Massen des Kompassmoduls und des Boards mit einander verbunden?

mare_crisium

wawa
28.11.2009, 18:52
hallo, ich habe mir den Schaltplan von dem Board angesehen. Da sind KEINE Widerstaende am I2C Bus. Und bitte - der I2C wurde fuer ON_BOARD Kommunikation entwickelt und war mal 100kHz schnell. Inzwischen wird er manchmal mit 400kHz betrieben!! Also Achtung - je schnell und je laenger die Leitung zu dem I2C Modul um so niederohmiger die Widerstaende. Wir sind mit 2k2 gefahren und dies hat nicht immer ausgereicht. Versuch mal rauszufinden wie schnell die SW ist und bau dir die Widerstaende auf dein Board gegen VCC und verbinde die Massen, da hat der Vorgaenger recht.
Wenn Handauflegen etwas bewirkt - sind kapazitive Effekte - sich aendernte Flanken der Signale - nicht auszuschliessen.
gruss wawa

liquidus
29.11.2009, 12:31
Hiho,

so langsam komme ich ans verzweifeln.

Ich hab es jetzt mit anderen Ports versucht => gleiches Ergebnis
2K-Widerstände bringen auch nichts.
Masse ist verbunden - hängt mittlerweile alles am Board.

Einzig die Geschwindigkeit - wie findet man die denn heraus?

Bin mit meinem Latein so ziemlich am Ende

Gruß Liquidus

liquidus
29.11.2009, 12:35
Hiho

Vielleicht noch zur Info - die Leitungen vom Board zum Modul sind ca 10cm lang.

Gruß Liquidus

Jaecko
29.11.2009, 13:07
Die Geschwindigkeit lässt sich mit Config TWI auswählen bzw. vorgeben.

wawa
29.11.2009, 16:30
@liquidus, ich wuerde nun zu Testzwecken einen PCF8574 an den I2C anschliessen. Das ist ein Portbaustein. An dessen Aus- und Eingaengen kannst du LEDs oder Tasten anschalten. Kannst du nicht mal mit einem Scope schauen ob der Clock ueberhaupt zappelt?
gruss wawa

liquidus
06.12.2009, 18:42
Hiho,

ich wollte mich nur noch mal bei allen bedanken - Ihr habt mir sehr geholfen.
Ich habs jetzt hinbekommen.

Ich hatte im Programm nicht zwischen Hardware und Software I2C unterschieden, sondern nur mit Software I2C gearbeitet.
Die Taktfrequenz von 16Mhz ist dann aber wohl doch zu viel des guten.

config TWI hatte mich hier auf die richtige Fährte gebracht.

wieder was gelernt :)

Gruss Liquidus