Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Problem mit i2c-Bus Routine Kategorie: Programmierung Basic (von Carsten - 20.06.2005 9:54)
 Als Antwort auf Problem mit i2c-Bus Routine von Rille - 19.06.2005 23:12
Carsten nutzt:  CC1-M-Unit V1.2/2.0
Hallo Rille,

ich weiß nicht ob es daran liegt, aber in Deiner Routine i2c_write steht

...
sda = off
if (daten and 128) = 128 then sda = on
...

damit erzeugst Du auf der sda - Leitung unter Umständen überflüssige Flanken, die im Protokoll nicht vorgesehen sind (auch wenn Du scl nicht bedienst) / besser wäre (auch stilistisch)

...
if (daten and 128) = 128 then sda = on else sda = off
...

Gruß Carsten

>
> Hallo an Alle,
>
> ich habe das Problem eine Routine für den Motortreiber "RN-Motor i2c" zu schreiben.
> Seit mehreren Tagen versuche ich das Ding zum laufen zu bringen.
>
> Bitte !!! kann mir Jemand sagen was ich da falsch mache.
>
> Am Besten währe es, wenn ich ein Programmbeispiel bekommen könnte.
>
> Danke  Rille
>
> define sda port[1]
> define scl port[2]
> define daten byte
> define n byte
>
> sda = on
> scl = on
>
> gosub start
> daten = &H56
> gosub i2c_write
> daten = 10        'kennung
> gosub i2c_write
> daten = 1         'befehlscod
> gosub i2c_write
> daten = 2         'motor
> gosub i2c_write
> daten = 50
> gosub i2c_write
> daten = 0
> gosub i2c_write
> gosub stop
>
> gosub start
> daten = &H56
> gosub i2c_write
> daten = 10        'kennung
> gosub i2c_write
> daten = 14        'befehlscod
> gosub i2c_write
> daten = 0         'motor
> gosub i2c_write
> daten = 0
> gosub i2c_write
> daten = 0
> gosub i2c_write
> gosub stop
>
> gosub start
> daten = &H56
> gosub i2c_write
> daten = 10        'kennung
> gosub i2c_write
> daten = 4         'befehlscod
> gosub i2c_write
> daten = 2         'motor
> gosub i2c_write
> daten = 1
> gosub i2c_write
> daten = 0
> gosub i2c_write
> gosub stop
>
> gosub start
> daten = &H56
> gosub i2c_write
> daten = 10        'kennung
> gosub i2c_write
> daten = 8         'befehlscod
> gosub i2c_write
> daten = 2         'motor
> gosub i2c_write
> daten = 100
> gosub i2c_write
> daten = 0
> gosub i2c_write
> gosub stop
>
> gosub start
> daten = &H56
> gosub i2c_write
> daten = 10        'kennung
> gosub i2c_write
> daten = 6         'befehlscod
> gosub i2c_write
> daten = 2         'motor
> gosub i2c_write
> daten = 0
> gosub i2c_write
> daten = 0
> gosub i2c_write
> gosub stop
>
> end
>
> #i2c_write
> for n = 1 to 8
> sda = off
> if (daten and 128) = 128 then sda = on
> pulse scl
> daten = daten shl 1
> next
> pulse scl
> return
>
> #start
> sda = off
> scl = off
> return
>
> #stop
> sda = off
> scl = on
> sda = on
> return
>
>
>
>
>

 Antwort schreiben

Bisherige Antworten: