Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Suche Hilfe zum I2C gg. kleine Bezahlung Kategorie: Programmierung Basic (von Sebastian - 8.09.2008 21:40)
Als Antwort auf Re: Suche Hilfe zum I2C gg. kleine Bezahlung von UlliS - 2.09.2008 21:59

Hi Ulli,

das Programm habe ich ausprobiert. Es funktioniert auch mit dem "SRF 10" perfekt.

Vielen Dank noch mal.

Sebastian

> > Hi Ulli,
> >
> > vielen Dank f├╝r dein Beispiel. Das spart mir, glaube ich, ne ganze Menge Zeit. Wie machen wir das
> > mit der Bezahlung? Meine E-mail habe ich ├╝brigens hinterlegt.
> >
> > Gru├č
> > Sebastian
> >
> >
> > > > Hi Ulli,
> > > >
> > > > sind die Pullup-Widerst├Ąnde unbedingt notwendig? Ich habe schon ├Âfter hier im Forum gelesen, dass
> > > > man noch zus├Ątzliche Pullup-Widerst├Ąde einbauen muss, wenn man die I2C-Schnittstelle nutzt.
> > > > Warum eigentlich?
> > > >
> > > > H├Ąttest du Lust, mir deinen Quellcode mal zu schicken?
> > > >
> > > > Gru├č
> > > > Sebastian
> > > >
> > > >
> > > > > > Hi,
> > > > > >
> > > > > > hat jemand schon mal die I2C-Schnittstelle des Boards verwendet und w├Ąre bereit, mir
> > > > > > (gegen Bezahlung) ein paar Tipps zu geben, wie man so etwas genau macht. Irgendwie stehe ich bei
> > > > > > diesem Thema noch wie der Ochse vorm Berg, obwohl ich schon seit ├╝ber zwei Wochen daran sitze.
> > > > > >
> > > > > > Ich m├Âchte gerne mehrere Ultraschallsensoren zum Laufen bringen, die ├╝ber eine I2C-Schnittstelle
> > > > > > verf├╝gen.
> > > > > >
> > > > > > hier mal das Datenblatt der Sensoren:
> > > > > >
> > > > > > http://www.robotikhardware.de/download/srf10doku.pdf
> > > > > >
> > > > > > Das Demoprogramm, das hier beiliegt, habe ich schon so weit ├╝bertragen. Aber im Moment klappt
> > > > > > es noch nicht. Ich bin mir auch nicht sicher, ob ich den Sensor ├╝berhaupt richtig am Board
> > > > > > angeschlossen habe.
> > > > > >
> > > > > > Da br├Ąuchte ich schon mal den ersten Tipp.
> > > > > >
> > > > > > Wenn sich jemand bereit findet - Meine E-mailadresse habe ich oben angegeben.
> > > > > >
> > > > > > Sebastian
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > > Hallo Sebastian,
> > > > >
> > > > > wo genau h├Ąngt es den?
> > > > > Ich hatte mal Probleme mit den Firmware Abfrage bei Sensor bereit f├╝r Messung.
> > > > > Setz daf├╝r mal ein AbsDelay(60) ein.
> > > > >
> > > > > Pr├╝fe auch mal di e Pullup Widerst├Ąnde nach.
> > > > >
> > > > > Ansonst m├╝sste das ganze funktionieren, ich selber benutze meist die SRF02 Sensoren.
> > > > >
> > > > > Gr├╝├če Ulli
> > > > >
> > >
> > > Hallo Sebastian,
> > >
> > > hier der Code zum SRF02
> > >
> > > '----------------------------------------------------------------------------------
> > > '----- DEMO ----- DEMO ----- DEMO ----- DEMO ----- DEMO ----- DEMO ----- DEMO -----
> > > '----------------------------------------------------------------------------------
> > > 'Projektname:       SRF02.cprj
> > > 'Ben├Âtigte Libs┬┤s:  IntFunc_lib.cc
> > > 'Routinen:          SRF02.cbas
> > > 'Autor:             Ulli Sommer
> > > 'Datum:             04.04.2008
> > > 'Funktion:          SRF02 der Fa. Devantech auslesen (Ultraschall Sensor)
> > > '
> > > '
> > > '----------------------------------------------------------------------------------
> > >
> > >
> > > Dim SRF02_Slaveid As Byte
> > > Dim LSB As Byte
> > > Dim MSB As Byte
> > > Dim Entfernung As Word
> > > Dim Ausgabe As Word
> > > Dim Bezeichner(10) As Char
> > >
> > >
> > >
> > > Sub main()
> > >
> > >     I2C_Init(I2C_100kHz)
> > >     SRF02_Slaveid = &HE0
> > >
> > >     Bezeichner = " cm"
> > >
> > >     Do While True
> > >
> > >       Ausgabe = SRF02_Entfernung(SRF02_Slaveid)
> > >
> > >       Msg_WriteWord(Ausgabe)
> > >       Msg_WriteText(Bezeichner)
> > >       Msg_WriteChar(13)
> > >       'AbsDelay(100)
> > >
> > >    End While
> > >
> > > End Sub
> > >
> > >
> > > Sub SRF02_Entfernung(Slaveid As Byte) As Integer
> > >
> > >     Dim Lob As Byte
> > >     Dim Hib As Byte
> > >     Dim Firmware As Byte
> > >     Dim Temp As Byte
> > >     Dim Slaveid_read As Byte
> > >     Slaveid_read = Slaveid + 1
> > >
> > >    'Messvorgang in starten
> > >    I2C_Start()
> > >    I2C_Write(Slaveid)
> > >    I2C_Write(0)
> > >    I2C_Write(81)
> > >    I2C_Stop()
> > >
> > >    AbsDelay(250)                    'Warte auf Messung
> > >
> > >    I2C_Start()
> > >    I2C_Write(Slaveid)
> > >    I2C_Write(2)
> > >    I2C_Stop()
> > >
> > >    I2C_Start()
> > >    I2C_Write(Slaveid_read)
> > >    MSB = I2C_Read_ACK()
> > >    LSB = I2C_Read_NACK()
> > >    I2C_Stop()
> > >
> > >    Entfernung = Makeint(LSB , MSB)  'Bytes zusammenfassen
> > >
> > >    Return Entfernung
> > >
> > > End Sub
> > >
> > >
> > > 'Sub-Routine um High-Byte und Low-Byte zusammenzuf├╝gen
> > > Sub Makeint(A As Byte , B As Byte) As Word
> > >   Dim tmp As Word
> > >   tmp = A                           'High-Byte ├╝bernehmen
> > >   tmp << 7                          'um 7 Bit nach links schieben
> > >   tmp = tmp + B                     'Low-Byte hinzuf├╝gen
> > >   Return tmp
> > > End Sub
> > >
> > >
> > > Gr├╝├če Ulli
> > >
>
> Hallo Sebastian,
>
> das kostet doch nix ;-)
> Viel Spa├č damit....
>
> Gr├╝├če Ulli
>


    Antwort schreiben


Antworten: