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: 2 I²C Busse Kategorie: Programmierung Basic (von joergm6 - 30.05.2008 19:05)
 Als Antwort auf Re: 2 I²C Busse von profjs - 30.05.2008 17:04
joergm6 nutzt:  CC1-Station V2.0
Hallo Jörg,
wenn du einen eigenen I2C-Bus betreiben möchtest, musst du wirklich ALLES selber machen. Ich habe ein SHTxx im Einsatz. Dieser arbeitet mit einem I2C-Protokoll, aber ohne Adressierungsmöglichkeit (daher ein extra Bus). Vielleicht kannst du die Schreib und Lese-Routinen für dich benutzen.



  DEFINE SHTclock   PORT[7]
  DEFINE SHTdata    PORT[8]
  define tbyte as byte

'--------------------------------------------------------------------------------
' Benutzung der Funktionen
  SHTstart()
  SHTwrite(adresse)
  SHTwrite(befehl)
  lesen=SHTread(1)

'--------------------------------------------------------------------------------
sub SHTinit()  'Initialisiere

  DEACT SHTdata
  SHTclock = 0

  FOR i = 0 TO 10
    PULSE SHTclock
  NEXT i

end sub

'--------------------------------------------------------------------------------
sub SHTstart()  'Start-Sequenz

  SHTclock = -1
  SHTdata  = 0
  SHTclock = 0
  SHTclock = -1
  DEACT SHTdata
  SHTclock = 0
end sub

'--------------------------------------------------------------------------------
sub SHTwrite(TH as byte)  'Sende Daten an Sensor

  FOR i = 0 TO 7
    IF ((TH SHL i) AND 80h)<>0 THEN
     DEACT SHTdata
    ELSE
     SHTdata = 0
    END IF
    PULSE SHTclock
  NEXT i

  DEACT SHTdata
  SHTclock = -1
  TByte = (SHTdata = 0)
  SHTclock = 0

  RETURN  TByte
end sub

'--------------------------------------------------------------------------------
Sub SHTread(ACK as byte)

  Tbyte = 0 'TW
'TH TByteLo
  FOR i = 0 TO 7
    SHTclock = -1
    Tbyte = ((Tbyte SHL 1) OR (SHTdata AND 1))
    SHTclock = 0
  NEXT i

  IF ACK<>0  THEN
   SHTdata = 0
  ELSE
   DEACT SHTdata
  END iF

  PULSE SHTclock
  DEACT SHTdata

  RETURN  Tbyte
end sub


oder funktionieren die I2C-Micro-Routinen (SDA/SCL durch deine Ports ersetzen). Die Micro hat ja kein eigenes IIC-Objekt.


FUNCTION IICSTART()
SDA=off
SCL=off
END FUNCTION

FUNCTION IICSTOP()
SDA=off
SCL=on
SDA=on
END FUNCTION

FUNCTION IICSEND(DATA as byte)
define MASK as byte
MASK=80h
#OUTSHIFT
SDA=(DATA and MASK)
SCL=on
SCL=off
MASK=MASK shr 1
if MASK<>0 then goto OUTSHIFT
'---- 9th CLOCK FOR ACKNOWLEDGE ----------
#ACKN
deact SDA
SCL=on
SCL=off
SDA=off
END FUNCTION

FUNCTION IICREAD()
define MASK as byte
deact SDA
DATABYTE=0
MASK=80h
#INSHIFT
SCL=on
if SDA=on then DATABYTE=(DATABYTE or MASK)
SCL=off
MASK=MASK shr 1
if MASK <>0 then goto INSHIFT
'---- 9th CLOCK FOR ACKNOWLEDGE ----------
deact SDA
SCL=on
SCL=off
SDA=off
END FUNCTION


Aber wie gesagt alles nur so zusammengesammelt. Ich denke mal versuche ersteinmal die Micro-Routinen.

Gruß Jörg

> Hallo Jörg,
>
> besten Dank für die schnelle Antwort. Das Problem ist, das Die Platine schon fix und fertig ist und mit den ursprünglich 3 LED-Anzeigen ja auch funktioniert. Eine Änderung der Hardware/Platine ist mir zu teuer.
>
> Ebenfalls Grüße Jörg
>
>
> > Hallo  Profjs,
> >
> > wie wäre es denn mit einem I2C-Multiplexer? Ich denke das ist die elegantere Lösung zwischen mehreren I2C-Bussen umzuschalten.
> >  guckst du bei ccTools
> >
> > Grüße Jörg
> >
> >
> >
> > > Hallo Profis,
> > > ich habe folgendes Problem. Ich muss im Moment über den iic-Bus 5 LED Module betreiben, der SA1064 lässt jedoch nur 4 Adressen zu.
> > >
> > > Daher meine Überlegung, einen 2ten IIC-Bus z.B. an Port 7 und 8 zu erstellen. Jedoch habe ich bisher noch keine Möglichkeit gefunden, diesen 2ten Bus anzusprechen.
> > > Die Function sendbuff scheint fest auf Port 9 und 10 'verdrahtet' zu sein.
> > > Kann ich die Function irgendwie erweitern oder modifizieren??
> > >
> > > Bin für jede Anregung zu haben und Bedanke mich schon mal im Voraus.

 Antwort schreiben

Bisherige Antworten:

Re: 2 I²C Busse (von joergm6 - 30.05.2008 19:14)
    Re: 2 I²C Busse (von profjs - 30.05.2008 19:56)
        Re: 2 I²C Busse (von joergm6 - 30.05.2008 20:34)