
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
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 |