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

Re: IIC-Seek IIC-Adresssuche Kategorie: Programmierung Basic (von Baltus - 18.11.2010 10:10)
Als Antwort auf IIC-Seek IIC-Adresssuche von Ernst H. - 18.11.2010 0:39
Ich nutze:
CC-Pro 128 Application Board, Pro-Bot128
Ja, zwei I2C-Geräte müssen zwei verschiedene Adresse haben.
Integrierte I2C-EEPROM hat ein festes Adres A0,
 so dass Adres von externes RTC PDF8583 muss geändert werden in A2.
In den Pro-Version gibt es zwei einfache Commando's (auf dem CD):
>  EEPROM_Data=EEPROM_Read(EEPROM_addr)
>  EEPROM_Write(EEPROM_addr, EEPROM_Data)

Dank überigens für unterstehende Code!


> 'Bei Control II gab es ein Programm IIC-Seek das alle angeschlossenen
>   'IIC - Adressen gefunden und aufgelistet hat
>   'wenn das ACK  zurück kommt oder nicht -
>   'nun mit Pro:
>
>   'ich habe einen RTC Chip 8583 angeschlossen der auf 0xA0 adressiert ist
>   ' also 160 Dezimal, auch den am Appl Port befindlichen EEProm  habe ich
>   'gefunden - ebenfalls 160 also muÃ? der RTC nun auf 162
>  
> 'Konsolenausgabe:
> 'Adr-Dezimal=156 Adr-Hex=009C    StatusCode=0020                                                                        
> 'Adr-Dezimal=158 Adr-Hex=009E    StatusCode=0020                                                                        
> 'Adr-Dezimal=160 Adr-Hex=00A0    StatusCode=0018 Adresse belegt!                                                        
> 'Adr-Dezimal=162 Adr-Hex=00A2    StatusCode=0020                    
>
>     'fertiges Programm - einfach starten:
>     Dim Counter As Integer
>     Dim Text(20) As Char
>     Dim Status, Status2 As Byte
>
> Sub main()
>
>     I2C_Init(I2C_100kHz)                    ' I2C Bit Rate: 100 kHz
>
>     For Counter = 0 To 254 Step 2
>     Text = "Adr-Dezimal="
>     Msg_WriteText(Text)
>     Msg_WriteWord(Counter)
>     Msg_WriteChar(9)
>     Text = "Adr-Hex="
>     Msg_WriteText(Text )
>     Msg_WriteHex(Counter)
>     I2C_Start()
>     I2C_Write(Counter)                         ' DEVICE ADDRESS
>     Status = I2C_Status( )
>     I2C_Stop ()
>     AbsDelay (5)
>     Msg_WriteChar(9 )                 'Tab
>     Text = "StatusCode="
>     Msg_WriteText(Text )
>     Msg_WriteHex(Status )
>     Msg_WriteChar(9 )                 'Tab
>     If Status = 0x18 Then
>         Text = "Adresse belegt!"
>         Msg_WriteText(Text )
>     End If
>     Msg_WriteChar(13 )
>
>     AbsDelay(200 )
>     Next 'Counter
>
> End Sub


    Antwort schreiben


Antworten: