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.

Bascom ale nie koniecznie, i2c-ustalenie adresu i ramki danych

januss73 03 Kwi 2014 20:19 1569 3
  • #1 03 Kwi 2014 20:19
    januss73
    Poziom 31  

    Sprawa wygląda tak

    Chcę ustawić jeden rejestr układu ADAU1701 za pomocą ATMega8 używając komunikacji i2c.

    Tak wygląda adres kości.
    Bascom ale nie koniecznie, i2c-ustalenie adresu i ramki danych

    Ponieważ adr1 i adr0 mam na masie dla write będzie to 104 i z tym raczej nie mam problemu.

    Nie wiem natomiast jak podzielić późniejsze ramki, ponieważ każdy subadres i rejestr jest 16 bitowy a ja wysyłam po 8 bitów, no i plącze mi się które bity są starsze, które mają być na początku, a które na końcu.

    Tak ma wyglądać zapis:
    Bascom ale nie koniecznie, i2c-ustalenie adresu i ramki danych

    Bascom ale nie koniecznie, i2c-ustalenie adresu i ramki danych

    I tak wygląda rejestr, który chcę ustawić

    Bascom ale nie koniecznie, i2c-ustalenie adresu i ramki danych

    Przy czym domyślnie wszystko jest 0, a ja chcę ustawić D2, D3 i D4 na 1.

    Tak więc subadres jest równy 2076 czyli binarnie
    0000100000011100
    mam więc wysłać najpierw
    00001000
    a potem
    00011100?
    czy odwrotnie?

    Skoro rejestr chcę ustawić na
    0000000000011100
    mam wpisać najpierw
    00000000
    i potem
    00011100
    czy odwrotnie?

    0 3
  • Pomocny post
    #2 03 Kwi 2014 22:02
    Akane
    Poziom 27  

    Skoro rysunek 2255842600_1396547955 pokazuje, że najpierw wysyła się "address high" a po nim "address low", to można przyjąć (bez zagłębiania się w notę), że dane wysyłane po sub-adresie przesyła się w taki sam sposób: najmniej znaczące bajty wielobajtowych danych wysyłamy na końcu, zatem 0xAABB wyślemy jako najpierw 0xAA, potem 0xBB, najpierw szesnastki, potem jedności.

    Podobnie dane binarne: 0000100000011100 dzielimy na połowę i najpierw ślemy "lewą" stronę, czyli 00001000.

    Dobrze by było doczytać, albo zwyczajnie sprawdzić "czy działa", o ile efekt będzie jakoś namacalny.

    0
  • #3 03 Kwi 2014 23:28
    januss73
    Poziom 31  

    Dzięki za odpowiedź.
    Owszem, efekt powinien być namacalny po ustawieniu tego i jeszcze jednego rejestru.
    Rzecz w tym, że nie wiem gdzie leży problem. Czy ja coś źle robię, czy może układ jest uszkodzony, bo mam dwie takie kostki z wylutu.

    Próbuje teraz zapisać i odebrać to co co zapisałem i kiepsko to wygląda bo otrzymuje 255. Niestety moje umiejętności ograniczają się do bascoma.


    Kod: jezyk_programowania
    Zaloguj się, aby zobaczyć kod

    0
  • #4 18 Kwi 2014 21:17
    januss73
    Poziom 31  

    Problem rozwiązany. Oczywiście rady Akane były trafne, ale głównym roblemem był wadliwy rezonator kwarcowy podpięty pod układ. Po wymianie komunikacja jest bezproblemowa i wszystko działa jak trzeba.
    Dziękuję i zamykam.

    0