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: OPEN MICRO I2C MAX520 Kategorie: C-Control I V1.1 (von Jens - 20.11.2005 21:51)
 Als Antwort auf Re: OPEN MICRO I2C MAX520 von Matthias Becker - 20.11.2005 15:59
Jens nutzt:  CC1-M-Unit V1.1, Micro, Open-Micro, Open-Mini
Hallo Matthias

> Gesendet werden zuerst die Adresse(80) - dann der Kanal(0-3) und zuletzt der Wert (0-255). Define i Byte wird in der Include Datei benötigt.
> -------------------------------------------------------------------------
>
> define SCL port[5]         Â’clk Leitung Definieren
> define SDA port [6]        Â’Daten Leitung Definieren
> define i byte
> define DATA byte          
>
> 'restet Max520
>
> i2c_init:i2c_start : i2c_write 80 : i2c_write 0 : i2c_write 0 : i2c_stop
> i2c_init:i2c_start : i2c_write 80 : i2c_write 1 : i2c_write 0 : i2c_stop
> i2c_init:i2c_start : i2c_write 80 : i2c_write 2 : i2c_write 0 : i2c_stop
> i2c_init:i2c_start : i2c_write 80 : i2c_write 3 : i2c_write 0 : i2c_stop
>
> #c1up
> if DATA=255 then c1down
> i2c_init:i2c_start : i2c_write 80 : i2c_write 0 : i2c_write DATA
> DATA=DATA+1 : i2c_stop
> goto c1up
>
>
> #c1down
> if DATA=0 then c1up
> i2c_init : i2c_start : i2c_write 80 : i2c_write 0 : i2c_write DATA
> DATA=DATA-1 : i2c_stop
> goto c1down
>
> include "om_i2c.bas"
>
> --------------------------------------------------------------------------------------------

Du brauchst den I2C-Bus nur einmal, zum Anfang, Initialisieren. Alle anderen "i2c_init" kannst Du entfernen.

Wenn Du etwas experimentieren möchtest, ich habe bei mir die "i2c:init" etwas geändert:

#i2c_init
deact sda                   ' SDA Port deaktivieren
wait sda                    ' wartet bis SDA High ist
gosub i2c_start             ' wenn SDA High, dann Start-Signal senden
gosub i2c_stop              ' Stop-Signal senden
pause 3                     ' 60 Milisekunden Pause
return

Das ist zwar "technisch" nicht korrekt, funktioniert aber bei all meinen Programmen. Dadurch kannst Du das Byte "i" einsparen und für andere Dinge verwenden.

LG Jens




 Antwort schreiben

Bisherige Antworten: