Witajcie. Mam układ PCF8574P powinien być PCF8574AP uC Atmega nie widzi go po magistrali I2C czy moze być problem z komunikacją ??
Program jest napisany w Bascomie.
$crystal = 8000000 ' Kwarc zewnętrzny8MHz
'******** KONFIGURACJA WYŚWIETLACZA LCD *********************************************************************
Config Lcd = 16 * 2 ' Deklaracja wyświetlacza LCD
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Initlcd ' Inicjalizacja wyświetlacza LCD
Cls ' Czyszczenie
Cursor Off
Cursor Noblink
'******** KONFIGURACJA MAGISTRALI I2C ***********************************************************************
' Scl
Config Scl = Portb.4
Config Sda = Portb.5 ' Sda
'******** KONFIGURACJA PORTÓW MIKROKONTROLERA ***************************************************************
Config Pind.6 = Input 'S1
Config Pind.7 = Input 'S2
'******** USTAWIENIA POCZĄTKOWE *****************************************************************************
Portd.6 = 1 'S1
Portd.7 = 1 'S2
'Wyzerowanie wyjść expanderów
I2csend 112 , 0
'******** DEKLARACJE ZMIENNYCH ******************************************************************************
Dim Stan1 As Byte
Dim Stan2 As Byte
Dim Licznik1 As Byte
Dim Licznik2 As Byte
Dim Koniec1 As Byte
Dim Koniec2 As Byte
Dim Adres As Byte
'******** DEKLARACJE PROCEDUR *******************************************************************************
Declare Sub Wyszukaj
'******** PROGRAM GŁÓWNY ************************************************************************************
Cls
Lcd "Ok..."
Wait 2
Cls
Call Wyszukaj
'******** PROCEDURY ****************************************************************************************
Sub Wyszukaj
For Adres = 100 To 200 Step 2
I2cstart
I2cwbyte Adres
I2cstop
If Err = 0 Then
Cls
Locate 1 , 1
Lcd "Pod adresem: " ; Adres
Stop
Else
Cls
Locate 1 , 1
Lcd "Brak ukladu: " ; Adres
End If
Wait 1
Next Adres
Lcd "Koniec"
End Sub
Program jest napisany do wykrycie układów w magistrali
Dziękiiii
Program jest napisany w Bascomie.
$crystal = 8000000 ' Kwarc zewnętrzny8MHz
'******** KONFIGURACJA WYŚWIETLACZA LCD *********************************************************************
Config Lcd = 16 * 2 ' Deklaracja wyświetlacza LCD
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Initlcd ' Inicjalizacja wyświetlacza LCD
Cls ' Czyszczenie
Cursor Off
Cursor Noblink
'******** KONFIGURACJA MAGISTRALI I2C ***********************************************************************
' Scl
Config Scl = Portb.4
Config Sda = Portb.5 ' Sda
'******** KONFIGURACJA PORTÓW MIKROKONTROLERA ***************************************************************
Config Pind.6 = Input 'S1
Config Pind.7 = Input 'S2
'******** USTAWIENIA POCZĄTKOWE *****************************************************************************
Portd.6 = 1 'S1
Portd.7 = 1 'S2
'Wyzerowanie wyjść expanderów
I2csend 112 , 0
'******** DEKLARACJE ZMIENNYCH ******************************************************************************
Dim Stan1 As Byte
Dim Stan2 As Byte
Dim Licznik1 As Byte
Dim Licznik2 As Byte
Dim Koniec1 As Byte
Dim Koniec2 As Byte
Dim Adres As Byte
'******** DEKLARACJE PROCEDUR *******************************************************************************
Declare Sub Wyszukaj
'******** PROGRAM GŁÓWNY ************************************************************************************
Cls
Lcd "Ok..."
Wait 2
Cls
Call Wyszukaj
'******** PROCEDURY ****************************************************************************************
Sub Wyszukaj
For Adres = 100 To 200 Step 2
I2cstart
I2cwbyte Adres
I2cstop
If Err = 0 Then
Cls
Locate 1 , 1
Lcd "Pod adresem: " ; Adres
Stop
Else
Cls
Locate 1 , 1
Lcd "Brak ukladu: " ; Adres
End If
Wait 1
Next Adres
Lcd "Koniec"
End Sub
Program jest napisany do wykrycie układów w magistrali
Dziękiiii