logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[M16] [Bascom] Sterowanie PCF8574AP

gothye 31 Maj 2009 16:36 3026 10
REKLAMA
  • #1 6599076
    gothye
    Poziom 33  
    Witam

    Za pomocą M16 komunikuje sie z expanderem PCF8574AP
    linie adresujące PCF są połączone z masą ,więc układ ma adres 112
    oczywiście linie SDA i SCL są podciągniete do +5V rezystorami 4.7k

    Program :

    $regfile = "m16def.dat"
    $crystal = 14745600
    $baud = 9600
    '##############################################################################
    Config Sda = Porta.0
    Config Scl = Porta.1
    
    Config Lcd = 16 * 1
    Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portd.7 , Db6 = Portd.6 , Db7 = Portd.5 , E = Portb.3 , Rs = Portb.2
    Cursor Off
    
    Do
    
    
    I2cstart
    I2cwbyte 112
    I2cwbyte 0
    I2cstop
    
       If Err = 1 Then
          Locate 1 , 1
          Lcd "brak układu"
       End If
    
    Loop


    Do wyjść PCF'a podłączony jest układ ULN2803 ( bufor prądowy ,sterujący przekaźnikami)

    Opis problemu :

    Nie mogę w żaden sposób ustawić wyjść PCF'a w stan 0

    zmieniałęm juz Układ PCF oraz ULN i bez zmian :(
  • REKLAMA
  • #2 6599113
    wader_669
    Poziom 28  
    
    const pcf_addres=112 ' lub daj 64 moze zadziala
    
    dim i_on as byte
    dim i_off as byte
    
    i_on=&b11111111
    i_off=&b00000000
    
    do
    i2csend pcf_addres, I_on
    wait 2
    i2send pcf_addres, i_off
    wait 2
    loop
    
  • REKLAMA
  • #3 6599133
    gothye
    Poziom 33  
    nadal nic ,niestety nie działa Twój program ,mi już ręce opadają:(
  • #4 6599166
    wader_669
    Poziom 28  
    Smieszne jest to ze twoj program powinien dzialac. Rozumiem, ze fusebity zmieniles.
    Ja bym cos jeszcze pokombinowal z tym addresem, wedlug noty powinien byc 112 ale wytestuj tez z 64

    Dodano po 3 [minuty]:

    Jeszcze co mozna zrobic to sprawdzic czy port procka dziala, za pomoca proste programu i diody.
    Nastepnie mozna by wystestowac czy pcf dziala. Daj przyciski
    pod linie ukladu i sprobuj zczytac stan. Nastepnie mozesz sprawdzic czy jest przerwanie, jak zmienisz stan na pcfie.
  • #5 6599212
    gothye
    Poziom 33  
    zmieniajac adres na inny niz 112 ,program pokazuje że pod tym adresem nie ma układu,wiec pozostaje przy adresie 112 i ...

    napisałem prosty program i stan portów mogę odczytać ,przez podanie przez rezystor 4.7k +5V lub zwierając porty pcf'a do masy

    ale dalej nie mogę sterować stanem pinów pcf'a :/
  • REKLAMA
  • #6 6599287
    wader_669
    Poziom 28  
    a co ze zmienna err? kiedy jest rowna 1 jak wpiszesz inny adres niz 112? i czy przy 112 tez jest rowna 1?
  • REKLAMA
  • #7 6601930
    gothye
    Poziom 33  
    zmienna err to zmienna bascoma ,jeśli ma wartość 0 to transmisja danych była ok ,jeśli = 1 oznacza błąd transmisji
  • #8 6602245
    dawid512
    Poziom 32  
    Spróbuj poszukać adresu tym programem:
    Dim Adres As Byte
    Dim Z As Byte
    
    Cls
    
    Locate 1 , 1
    Lcd "Szukamy urzadzen;)"
    
    Wait 2
    
    For Adres = 0 To 255 Step 2
    I2cstart
    I2cwbyte Adres
    I2cstop
    
    If Err = 0 Then
    Cls
    Locate 1 , 1
    Lcd "Znalazlem uklad"
    Lowerline
    Lcd "Adres to:" ; Adres
    Z = Adres
    Exit For
    Else
    Cls
    Lcd "Szukanie"
    Lowerline
    Lcd Adres
    
    End If
    
    Waitms 50
    Next Adres
    Cls
    Lcd "Koniec szukania"
    Lowerline
    Lcd "Znal. pod :" ; Z
    
    End
  • #9 6602304
    wader_669
    Poziom 28  
    wiem co to jest zmienna err, pytam kiedy ma wartosc 1? Przy adresie 112 tez ? bo jak wpiszesz kazdy inny adres powinna byc =1, bo nie istnieje takie urzadzenie o takim adresie.
  • #10 6602368
    gothye
    Poziom 33  
    przy podaniu adresu = 112 ,zmienna err jest = 0 .czyli transmisja ok
  • #11 6604443
    janbernat
    Poziom 38  
    Jak wykrywa PCF i odczytuje stan wyjść to i2c działa.
    Metodą "od końca"-wyjmij ULN, ustaw PCF w stan 01010101 lub 85 i zmierz woltomierzem wyjście PCF-a.
REKLAMA