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

[Rozwiązano] Klawiatura m5stack nie odpowiada na zapytania I2C - kod i zrzut ekranu

elektrofil 17 Wrz 2024 11:30 138 4
REKLAMA
  • #1 21229345
    elektrofil
    Poziom 17  
    Witam, mam problem aby zmusić do współpracy klawiaturę m5stack CardKB v1.1.
    mianowicie mój problem polega na tym iż jest głucha na próby komunikacji z nią po i2c. skanuję wszystkie nieparzyste adresy, chociaż wiem że powinna odpowiedzieć na zapytanie o adresie 191dec.
    poniżej wklejam kod oraz zrzut ekranu z analizatora stanów logicznych
    $regfile = "m328pdef.dat"
    $crystal = 16000000
    Config Sda = Portc.1
    Config Scl = Portc.0
    i2cinit
    config i2cdelay =10000
    Dim Adres1 As Byte
    Dim bajt As Byte
    dim licz as byte
    Adres1 = 0xbf '191
    print "m5stack"
    
       Do
        Gosub Wyslij_2
        if bajt<255 then
          print bajt
          waitms 100
        endif
       Loop
    
    End
    
    wyslij_2:
    for licz=1 to 255 step 2
    I2cstart                                                 'generate start
     ' I2cwbyte 0xbe                                      'slave adsress
     ' I2cwbyte 0x5a                                          'address of EEPROM
      I2cstart                                                 'repeated start
      I2cwbyte licz
      print licz                                  'slave address (read)
      I2crbyte bajt,nack                                   'read byte
      if Err = 0  then print bajt
      I2cstop
    next licz                                                'generate stop
      print "koniec skanowania"
      return
    


    Klawiatura m5stack nie odpowiada na zapytania I2C - kod i zrzut ekranu
  • REKLAMA
  • REKLAMA
  • #3 21229442
    elektrofil
    Poziom 17  
    Dziękuję za szybką odpowiedź, oczywiście pierwsze co zrobiłem to było użycie i2scann. a tam wyskakuje adres 190. więc do odczytu pozostaje wybór 191.
    zresztą kod który podałem przepytuje wszystkie nieparzyste adresy. a klawiatura reaguje stanem diody led tylko pierwsze naciśniecie.
    Zrzut ekranu programu Termite 3.4 pokazujący wyniki skanowania adresów.
  • REKLAMA
  • Pomocny post
    #4 21229552
    bart-projects
    Poziom 29  
    W kodzie z pierwszego postu masz dwa razy pod rząd I2cstart bez żadnego I2cstop tak jakbyś to przepisał z kodu odczytu RTC gdzie najpierw wpisuje się adres komórki spod której chcesz czytać.
    Skasuj jedno I2cstart i śmiało uderzaj pod adres 191 bo to jest po prostu 5F przesunięte o jeden w lewo i dodany bit RW więc wyjdzie BF.

    BTW. Te If ERR = 0 powinno być po I2cstart i tam dodajesz Else Print "ERROR"
    Potem wpisujesz adres układu &HBF i tez If Err = 0 Else Print "NO ANSWEAR"
    Po co czytać I2crbyte jak magistrala stoi zawieszona lub układ nie odpowiada. To ją właśnie może zawiesić.

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • #5 21229577
    elektrofil
    Poziom 17  
    Tak to jest jak program składa się za pomocą ctrl+c, ctrl+v.
    po skasowaniu i2cstart program działa, co prawda kod umieszcza w buforze dopiero po puszczeniu przycisku, ale to jakoś przeboleje.
REKLAMA