Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

XMEGA - Proszę o wytłumaczenie działania funkcji bibliotecznej twi_master_driver

m72 12 Lis 2016 22:56 909 4
  • #1 12 Lis 2016 22:56
    m72
    Poziom 12  

    To moje pierwsze starcie z protokołem I2C.
    Ściągnąłem biblioteki twi_master_driver.c i inne niezbędne, próbuję opanować jak to wszystko działa.
    Podłączyłem do Xmegi zewnętrzny eeprom "24LC08" i próbuję się tym bawić.
    Zapis chyba opanowałem.
    Fragment głównego pliku

    Kod: c
    Zaloguj się, aby zobaczyć kod
    (pomijam konfigurację itp)
    Powyższa funkcja elegancko zapisuje do eepromu kolejne 4 wartości z tablicy począwszy od adresu 0x00. Pierwsza liczba z tablicy określa adres, reszta do dane.
    Na analizatorze wygląda to tak.
    XMEGA - Proszę o wytłumaczenie działania funkcji bibliotecznej twi_master_driver
    I po sprawdzeniu kostki w programatorze chyba wszystko ok.
    XMEGA - Proszę o wytłumaczenie działania funkcji bibliotecznej twi_master_driver

    I teraz moja prośba.
    Niech mnie ktoś oświeci w jaki sposób mam odczytać np 5 kolejnych wartości z eepromu rozpoczynając od adersu 0x01 ?
    Albo ogólnie jak zrobić odczyt z dowolnej komórki pamięci ?
    Oczywiście za pomocą powyżej zastosowanej funkcji.
    twi_exa..le.c Download (2.09 kB) twi_master..river.c Download (9.56 kB) twi_master..river.h Download (5.98 kB) 24lc08.pdf Download (400.19 kB)

    0 4
  • Pomocny post
    #2 18 Lis 2016 16:15
    wiere
    Poziom 10  

    Witam.

    Sprawdź:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    dane powinny być w tablicy:
    twi->readData;

    0
  • #3 18 Lis 2016 18:41
    m72
    Poziom 12  

    Wielki dzięki, to działa, dziwnie skonstruowana jest ta funkcja załatwiająca jednocześnie odczyt i zapis.
    To że działa wiem z tylko obserwacji przebiegów na analizatorze.
    XMEGA - Proszę o wytłumaczenie działania funkcji bibliotecznej twi_master_driver
    Faktycznie od komórki 0x0C zaczynają się wartości AD AE AF B0 B1, ręcznie wbite przeze mnie na progamatorze.

    Ale przystopowało mnie na najprostszej sprawie.
    Napisałeś że dane są w tablicy twi->readData ale nie wiem jak z niej odczytać te dane.
    Mógłbyś coś podpowiedzieć ?
    Tutaj jest cały plik główny, jest tam trochę zbędnych śmieci ale funkcja odczytująca jest kawałek za połową.

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #4 19 Lis 2016 21:21
    m72
    Poziom 12  

    Ponawiam pytanie, jak się dobrać do danych pobranych przez poniższe funkcje.
    Podłączyłem czujnik światła sfh7773. Niby wszystko działa.
    Stwierdzam to na podstawie bezpośredniej obserwacji przebiegów szyn I2C co załączam na obrazku.
    XMEGA - Proszę o wytłumaczenie działania funkcji bibliotecznej twi_master_driver
    Wynikiem są dwa bajty danych które przyjmują rózne wartości w zależności od ilości światła.
    Pomóżcie, jak te 2 bajty zapisać do zmiennych ?

    Zrobiłem sobie pętelke do wyświetlania tablicy CHYBA wynikowej "readData" i nic, same zera choć po szynie I2C idą prawidłowe dane.
    XMEGA - Proszę o wytłumaczenie działania funkcji bibliotecznej twi_master_driver
    Co robię źle ?

    Kod: c
    Zaloguj się, aby zobaczyć kod

    0
  • #5 21 Lis 2016 17:02
    wiere
    Poziom 10  

    A zobacz co masz z w zmiennej "twiMaster.bytesRead". Czemu zmienną "j" deklarujesz jako 16 bitową?

    0