Hallo,
ich möchte ein Ultraschallmodul SRF08 mit einen ATMEGA32 per I2C-BUs
verbinden. Ich Benutze Bascom.
Wenn ich den Sensor anschalte, leuchtet die rote LED lang auf.
Das zeigt mir die Standard I2C-Bus Adresse E0 an.
Wenn ich nun eine Messung starte, sollte die LED kurz aufblitzen.
Da tut sich aber nix. Habe meine Hardware jetzt schon überprüft und
sollte alles stimmen. Die 2 Datenleitungen haben jeweils 10K Pullup.
Vielleicht liegt der Fehler in meinem Code, deshalb wollte ich euch mal
bitten, da ein Auge drauf zu werfen.
In Bascom kenne ich mich mit dem I2C-Bus nicht rehct gut aus.
Habe folgenden Beispiel-Code Verwendet.
http://www.rn-wissen.de/index.php/Sensorarten#SRF08_Programmbeispiel
Die Zeile
1 | I2cwbyte Sf08_adr_0 + 1 ' Device I2C Adresse READ!
|
Versteh ich ned und die wird von Bascom als Fehler angezeigt.
Nachdem die Messung ausgelöst wird, muss die LED ja kurz aufblitzen.
Also nach diesem Code müsste die LED ja was tun. Tut sie aber ned.
1 |
|
2 | Const Sim = 0
|
3 | #if Sim = 1
|
4 | $sim
|
5 | #endif
|
6 |
|
7 | $regfile = "m32def.dat"
|
8 | $crystal = 16000000
|
9 | $hwstack = 80
|
10 | $swstack = 60
|
11 | $framesize = 60
|
12 |
|
13 |
|
14 | '#if Sim = 0
|
15 | $lib "i2c_twi.lbx"
|
16 | Config Scl = Porta.4
|
17 | Config Sda = Porta.3
|
18 | I2cinit
|
19 | Config Twi = 100000
|
20 | '#endif
|
21 |
|
22 |
|
23 | Const Sf08_adr_0 = &HE0 ' I2C Adresse
|
24 | Const Sf08_c_range = 100 ' Reichweite
|
25 | Const Sf08_c_gain = 1 ' Empfindlichkeit
|
26 |
|
27 |
|
28 | Test1:
|
29 |
|
30 | I2cstart
|
31 | I2cwbyte Sf08_adr_0 ' Device I2C Adresse
|
32 | I2cwbyte 0 ' register "Trigger"
|
33 | I2cwbyte 81 ' Meßwert in Zentimetern
|
34 |
|
35 | Waitms 70
|