PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Srf08 addressieren



Daveler
26.12.2004, 20:12
Hallo!

Ich würd ja echt gern die suche verwenden, aber das Forum geht schon seit gestern nicht merh so gut :-(
Und wo anders als im Forum hab ich nichts Brauchbares gefunden.

Ich würd gern die Ultraschallentfernungssensoren SRF08 adressieren. Dazu hab ich mir Datenblatt durchgelesen. Aber ich fürchte ich bin komplett auf dem falschen Weg 8-[



I2cinit

I2cstart
I2cwbyte 224
I2cwbyte 160
I2cwbyte 170
I2cwbyte 165
I2cwbyte 242
I2cstop


mehr nicht...
Es wär recht dringend, wär mir eine große Hilfe, wenn das morgen schon läuft (sprich... heute noch) 8-[

mfg

UweMD
26.12.2004, 20:31
Hallo,

ich könnte die ein beispiel geben wie man es bei der CControl 2 macht...kannst du ja in basic umwandeln...

mfg uwe

Daveler
26.12.2004, 20:36
ja, das wär nett, aber ob ich es in basic umwandeln kann....

mal schaun, vielleicht schaff is es (mein basic ist nicht das beste)
mfg

UweMD
26.12.2004, 20:41
Hi...

Hier ist die Funktion

function SetAddress (byte addrSrc, byte addrTarg)
{
i2c.cstart (addrSrc);
i2c.write (0); // Register 0 Command Register
i2c.write (0xa0); // 1. Byte Sequ.
i2c.start (addrSrc);
i2c.write (0); // Register 0 Command Register
i2c.write (0xaa); // 2. Byte Sequ.
i2c.start (addrSrc);
i2c.write (0); // Register 0 Command Register
i2c.write (0xa5); // 3. Byte Sequ.
i2c.start (addrSrc);
i2c.write (0); // Register 0 Command Register
i2c.write (addrTarg);
i2c.stop();
}


hoffe es hilft dir...


mfg uwe

Daveler
26.12.2004, 20:59
noch ein frage:

es heißt, dass nur ein einziges gerät am i2c bus hängen darf, wenn man ein modul neu addressiert. muss ich dann den cocontroller, die pcfs, usw. alles aus dem rnbfra1.2 rausnehmen bevor ich das mach?

hier übrigens der code. ich hoff das stimmt.



$regfile = "m32def.dat"

$crystal = 8000000
$baud = 9600

Config Scl = Portc.0
Config Sda = Portc.1

I2cstart
I2cwbyte 0 'Register 0 Command Register
I2cwbyte &HA0 '1. Byte Sequ.
I2cstart
I2cwbyte 0 'Register 0 Command Register
I2cwbyte &HAA '2. Byte Sequ.
I2cstart
I2cwbyte 0 'Register 0 Command Register
I2cwbyte &HA5 '3. Byte Sequ.
I2cstart
I2cwbyte 0 'Register 0 Command Register
I2cwbyte &HF2 'new address
I2cstop


mfg

Daveler
26.12.2004, 22:29
nagut, ich hab jetzt mal meinen code geladen aber es hat sich nix getan :-(
wer kann helfen?
mfg, dave

27.12.2004, 11:30
nagut, ich hab jetzt mal meinen code geladen aber es hat sich nix getan :-(
wer kann helfen?
mfg, dave
So gehts, so läuft auch mein roboter rum


Dim Sonardistance As Word 'entfernung vom objekt 3-10965cm
Sonardistance = Sonarread(sonaraddr , 2)
Declare Function Sonarread(byval I2cnode As Byte , Byval Loc As Byte) As Word ' sonar auslesen
Declare Sub Sonarping(byval I2cnode As Byte , Byval Loc As Byte , Byval Value As Byte) 'echo aussenden


'#################### sonarsteuerung ###########################################

Sub Sonarinit

I2cwbyte &HE0
I2cwbyte 1 'verstärkungsregister
I2cwbyte 1 'unempfindlich
I2cstop
Waitms 65
End Sub Sonarinit


Sub Sonarping(byval I2cnode As Byte , Loc As Byte , Value As Byte)
Waitms 25
I2cstart
I2cwbyte 0
I2cwbyte 0
I2cwbyte 81
I2cstop
Waitms 55
End Sub Sonarping


Function Sonarread(byval I2cnode As Byte , Loc As Byte) As Word
Waitms 25
Local Lsb As Byte
Local Msb As Byte
I2cstart
I2cwbyte I2cnode
I2cwbyte Loc
I2cstart
Incr I2cnode 'lesen immer eine adresse höher wie schreiben
I2cwbyte I2cnode
I2crbyte Msb , Ack
I2crbyte Lsb , Nack
I2cstop
Waitms 25
Sonarread = Makeint(lsb , Msb)
End Function

Daveler
27.12.2004, 11:49
sodale, ich habs jetzt so gemacht:



$regfile = "m32def.dat"

$Crystal = 8000000
$baud = 9600

Config Scl = Portc.0
Config Sda = Portc.1

' Command # 1

I2cstart
I2cwbyte &HE0
I2cwbyte 0 'Register 0 Command Register
I2cwbyte &HA0 '1. Byte Sequ.
I2cstop

' Command # 2
I2cstart
I2cwbyte &HE0
I2cwbyte 0 'Register 0 Command Register
I2cwbyte &HAA '2. Byte Sequ.
I2cstop

' Command # 3
I2cstart
I2cwbyte &HE0
I2cwbyte 0 'Register 0 Command Register
I2cwbyte &HA5 '3. Byte Sequ.
I2cstop

' Command # 4
I2cstart
I2cwbyte &HE0
I2cwbyte 0 'Register 0 Command Register
I2cwbyte &HF2 'new address
I2cstop


so funktionierts :cheesy:

sorry gast, du warst um eine minute zu langsam ;-) aber trotzdem danke

27.12.2004, 12:31
nochmals der gast ! ich finde keinen i2cread, wei kommst du so an das ergebnis der messung ?

pebisoft
27.12.2004, 21:08
hallo, am 25.11 steht hier ein programm in bascom für den srf08. läuft bei mir wunderbar.
mfg pebisoft

Daveler
27.12.2004, 21:59
@gast


nochmals der gast ! ich finde keinen i2cread, wei kommst du so an das ergebnis der messung ?


Ich will ja garnichts messen ;-) ich wollte die UEs nur adressieren.

@ pebisoft


hallo, am 25.11 steht hier ein programm in bascom für den srf08. läuft bei mir wunderbar.
mfg pebisoft


Ich weiß nicht was du meinst... der 25ste is doch schon vorbei 8-[
Außerdem kann ich schon auslesen, das ist kein problem. Ich konnte nur nicht adressieren. Aber das ist mittlerweile ist das schon geschafft :-)

mfg
Dave[/quote]