Hi, ich versuche das besagte Modul von Pollin zum Laufen zu kriegen aber es will nicht. Code ist anbei, den Teil der Ansteuerung des Moduls habe ich von hier: http://www.mtahlers.de/index.php/elektronik/sensoren/mmc2120mg Den I2C Teil habe ich aber jetzt auch komplett nach Datenblatt durchgearbeitet und kann keinen Fehler finden. Das Modul sendet für alle Bytes immer 0110 0001, also die zuletzt gesendete Adresse des Moduls zum lesen (Cmp_r). Auch das erste Byte, welches das Control-Register sein sollte hat diesen Wert. Hat einer ne Ahnung was das sein könnte? Ach ja, Frequenz auf 100kHz runter - keine Änderung. An SCL und SDA sind Pullups (5k1). Gruß, Norbert
So, ich habe jetzt mal so probiert: '$lib "i2c_twi.lbx" 'Config Twi = 100000 Config I2cdelay = 1 Also die Lib und das Twi auskommentiert und I2cdelay rein. So funzt das woanders mit einem ATmega32 und einem Modul mit je 3-Achs Kompass, Beschleunigung und Gyro. Den Code zum Auslesen habe ich mir selbst erarbeitet und nicht irgendwo kopiert. Damit kommen komplett Einsen, das Drecksding antwortet also (scheinbar?) überhaupt nicht. Zu Hülf! Ich hab nochmal das Datenblatt von dem Modul angehängt. Gruß, Norbert
Gast
#2642529
Füge mal ein "Print Err" überall ein. Siehe hier: http://avrhelp.mcselec.com/index.html?i2start_i2cstop__i2crbyte__i2cwbyte.htm
Gast
#2642541
Norbert S. schrieb: > Den Code zum Auslesen habe ich mir selbst erarbeitet und nicht irgendwo > kopiert. Das ist zwar sehr lobenswert, aber angesichts dessen: > Damit kommen komplett Einsen, das Drecksding antwortet also (scheinbar?) > überhaupt nicht. nicht wirklich effektiv. Das hier gesehen? http://www.mtahlers.de/index.php/elektronik/sensoren/mmc2120mg
Gast
#2642552
MWS schrieb: > Das hier gesehen? > http://www.mtahlers.de/index.php/elektronik/sensor... Hat er. (s.o.) ;-)
Hi,
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
Err ist immer 0. Und nu? Also das Modul antwortet wohl (ist jetzt wieder mit der Lib) aber mit der zuletzt geschriebenen Leseadresse. Gruß, Norbert
Hi, MWS schrieb: > Norbert S. schrieb: >> Den Code zum Auslesen habe ich mir selbst erarbeitet und nicht irgendwo >> kopiert. > > Das ist zwar sehr lobenswert, aber angesichts dessen: > >> Damit kommen komplett Einsen, das Drecksding antwortet also (scheinbar?) >> überhaupt nicht. > > nicht wirklich effektiv. Ich wollte damit zum Ausdruck bringen, daß ich diesen Code nicht nur kopiert sondern auch nachvollzogen habe. Weil ich sowas auch schon komplett selbst gemacht habe. Mich auf genau den Link hinzuweisen, den ich als Quelle für meinen Code angegeben habe, ist wirklich toll. So kann ich das nochmal nachlesen. Danke. Gruß, Norbert
Gast
#2642566
Norbert S. schrieb: > Err ist immer 0. Na, das ist doch gut zu wissen. Funktioniert es mit dem Code aus dem Link? Gleiches Ergebnis?
Gast
#2642588
Karl schrieb: > Hat er. (s.o.) ;-) Jep, übersehen :D SCL und SDA vertauscht ? :-) Norbert S. schrieb: > Mich auf genau den Link hinzuweisen, den ich als Quelle für meinen Code > angegeben habe, ist wirklich toll. So kann ich das nochmal nachlesen. > Danke. Nicht rummotzen, hab's nur übersehen. > So kann ich das nochmal nachlesen. Das hätte evtl. geholfen, denn: I2cstart I2cwbyte Cmp_w I2cwbyte &H00 'adress ---> hier fehlt ein (re-)start I2cwbyte Cmp_r :D
Hi, da muß ich mich für meine sarkastische Bemerkung wohl entschuldigen, da ist tatsächlich ein I2cstart. Laut Datenblatt gehört das da aber nicht hin! Damit funktioniert es aber jetzt, zumindest ändern sich die Werte wenn ich das Ding drehe, sieht sinnvoll aus. Malte schreibt das in seinem Beitrag aber im Datenblatt steht es definitiv nicht drin. Naja, jetzt kann es weitergehen... Danke nochmal! Gruß, Norbert
Gast
#2642686
Norbert S. schrieb: > Laut Datenblatt gehört das da aber nicht hin! Nach welchem ? Dem Pollin'schen ? Das sah' mir ein wenig unkoordiniert aus. Norbert S. schrieb: > sarkastische Bemerkung wohl entschuldigen, Kein Problem, bin nicht zart besaitet. Norbert S. schrieb: > Malte schreibt das in seinem Beitrag aber im Datenblatt steht es > definitiv nicht drin. Es ist üblich bei einem I2C-Read erst die zu lesenden Register per Write zu adressieren, dann ein Restart zu machen, schließlich den Lesevorgang zu starten indem man die Read-Adresse schickt und die Register ausliest. Norbert S. schrieb: > Danke nochmal! Bitte.
Hi, ja, das pollinsche Datenblatt. Etwas konfus das Ding aber da habe ich schon Schlimmeres gesehen (BTM-112 z.B.) MWS schrieb: > Es ist üblich bei einem I2C-Read erst die zu lesenden Register per Write > zu adressieren, dann ein Restart zu machen, schließlich den Lesevorgang > zu starten indem man die Read-Adresse schickt und die Register ausliest. Das leuchtet mir jetzt auch ein. Gruß, Norbert
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.