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

Ile adresów I2C dla 3 urządzeń na jednej magistrali? Jak rozpoznać każde z nich?

Madergames9 15 Lis 2006 11:55 2907 4
REKLAMA
  • #1 3226742
    Madergames9
    Poziom 15  
    Posty: 212
    Pomógł: 4
    Ocena: 2
    Mama takie pytanko otoż w ukladzie mam zamontowane 3 uklady pracujace na magistrali I2C. Sprawdzalem czy wszystkie mi odpowiadaja i adresy za pomoca programu

    Dim Adres As Byte 'deklaracja zmiennej Adres = ( 0 - 255)- 1 bajt
    Config Scl = Portc.5 ' konfiguracja magistrali i2c
    Config Sda = Portc.4
    I2cinit
    'Config Lcd = 16 * 1a ' konfiguracja wyświetlacza Lcd

    '*** program ***

    'Print "start poszukiwania" ' napis na ekranie terminala

    Cls ' czyszczenie wyświetlacza
    Lcd "Start" ' napis na LCD
    Wait 2
    For Adres = 100 To 170 Step 2 'Pętla For - od adresu 100 do 170 ; krok 2
    Cls
    Lcd Adres
    Wait 2
    I2cstart ' uaktywnienie magistrali
    I2cwbyte Adres ' podanie adresu dla zapisu

    I2cstop ' koniec transmisji'

    If Err = 0 Then ' Err = 0 - odpowiedź pozytywna

    'Print "jest układ pod adresem:" ; Adres ; "!"

    Cls

    Lcd Adres ; " - jest uklad"
    Else 'Err = 1

    'Print "brak układu pod adresem:" ; Adres ; "!"

    Cls

    Lcd Adres ; " - brak ukladu "
    End If ' koniec if

    Wait 4 'czekaj 2 sekundy

    Next 'Adres 'pobierz następny adres

    Print "koniec poszukiwań"
    Cls
    Lcd "koniec"

    End

    Wynik poszukiwan to adresy 112, 160, 162, 164, 166 powinienem chyba otrzymac tylko trzy adresy prawda...?. Na magistrali jest PCF8583, 24C08, i PCF8574. Adres 112 nalezy do PCF8574. Adres 162 nalezy do PCF8583 bo taki mam uzyty w programie i zegar dziala, wiec co to sa za pozostale i ktore z nich nalezy do 24C08..?. Nie moge tej kostki wyjac z ukladu, bo jest wlutowana bezposrednio. Ktory adres moze do niego nalezec?. Pin 3 czyli a2 adresu "wisi" w powietrzu. Moze mi ktos to naswietlic..?

    POZDRO



    To jakich adresow uzyc do odczytu i zapisu...?
  • REKLAMA
  • #2 3226845
    yokoon
    Poziom 29  
    Posty: 1349
    Pomógł: 119
    Ocena: 144
    Witam
    Odczyt A8 H - 168 Dec Zapis A9 H - 169 Dec < adresy 24C08
    START-1-0-1-0-x-x-x-x <odczyt bitu ACK

    Adresowanie : odczyt zawartości baitu

    Start - 1-0-1-0-A2-S9-S8-0-ACK-S7-S6-S5-S4-S3-S2-S1-S0-ACK......

    S9,8 - wewnętrzny adres bajtu w pamięci
  • REKLAMA
  • #3 3227092
    Madergames9
    Poziom 15  
    Posty: 212
    Pomógł: 4
    Ocena: 2
    Czyli ta sekwencja zapisu i odczytu dla kostki pamieci z podciagnietym A2 do plusa jest prawidlowa..?. Wiec co to sa za odczytane adresy 164, 166 odczytane programikiem ktory podalem wczesniej
    Czy moglo byc to spowodowane tym ze A2 wisial w powietrzu..?

    Sub Write_eeprom(adres As Byte , Value As Byte)
    I2cstart 'start condition
    I2cwbyte 168 'slave address
    I2cwbyte Adres 'asdress of EEPROM
    I2cwbyte Value 'value to write
    I2cstop 'stop condition
    Waitms 10 'wait for 10 milliseconds
    'Call Read_eeprom(adres , Bytevar2)
    'If Bytevar <> Value Then Sub Write_eeprom(adres , Value)
    End Sub

    Sub Read_eeprom(adres As Byte , Value As Byte)
    I2cstart 'generate start
    I2cwbyte 168 'slave adsress
    I2cwbyte Adres 'address of EEPROM
    I2cstart 'repeated start
    I2cwbyte 169 'slave address (read)
    I2crbyte Value , 9 'read byte
    I2cstop 'generate stop
    End Sub

    POZDRO..
  • REKLAMA
  • #4 3227227
    arturssp
    Poziom 16  
    Posty: 292
    Pomógł: 7
    Ocena: 23
    Witam!
    Pamieci szeregowe eeprom o pojemnosci wiecej niz 256 bajtow sa stronicowane, kazda strona po 256 bajtow i kazda strona "symuluje" niejako oddzielne urzadzenie na magistrali i2c. Ja np uzywam pamieci 24C04 i mam ja dostepna pod adresami 168 (pierwszy blok 256 bajtow) i 170 (drugi blok 256 bajtow). Ty masz pamiec o pojemnosci 1024 bajty, wiec masz ja najprawdopodobniej podzielona na 4 strony po 256 bajtow. Stad te adresy "nieistniejacych" ukladow. Odepnij wszystko od magistrali i pozostaw tylko pamiec, rozszerz przeszukiwania powyzej adresu 170 (od 100 do 200 np) i powinne pojawic sie 4 adresy samej pamieci ( stron pamieci).

    Pozdrawiam!
  • #5 3234092
    yokoon
    Poziom 29  
    Posty: 1349
    Pomógł: 119
    Ocena: 144
    Tak, ale najpierw trzeba podać adres samej pamięci. Czyli A2 do masy to adres = A0 = 160, A2 do plusa to adres A8 = 168 i to są adresy same kostki.
REKLAMA