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

ATMega8, lm1972 - TWI, brak komunikacji z cyfrowym potencjometrem

Rafciok997 04 Paź 2013 18:12 2400 3
REKLAMA
  • #1 12808270
    Rafciok997
    Poziom 10  
    Cześć,

    Złożyłem układ według schematu
    ATMega8, lm1972 - TWI, brak komunikacji z cyfrowym potencjometrem

    Za nic jednak nie mogę zmusić ich do poprawnej komunikacji. Kod Atmega8 (TWI Master):

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Z tego co wiem to jeśli będę nadawał na adres 0x00 (najmłodszy bit - bit zapisu) to nadaje do wszystkich te same dane. Zatem dane powinien odbierać LM1972. Pierwsze 8 bitów to adres komórki pamięci (wybór kanału - prawy/lewy) a kolejne 8 bitów to wartość którą chcę zapisać do tej komórki (poziom głośności na danym kanale). W teorii wydaje się to być proste itp. lecz pomimo tego nie mogę zmusić urządzeń do poprawnej komunikacji. Raz na kilkadziesiąt wysłanych różnych kombinacji adresów i poziomów ustawi się jakiś tam poziom głośności, niekoniecznie ten wysyłany. Działa to super niestabilnie. Męczę się z tym już drugi tydzień i wciąż nic. Doradźcie proszę co może być nie tak. Może z kodem jest coś źle. Mam wątpliwości co do samego pull-up'u, a mianowicie czy wystarczy programowe jego zrobienie czy musi to być połączenie fizyczne? Sprawdzając miernikiem jest napięcie ok 5V na obu wyjściach.
  • REKLAMA
  • #2 12808307
    dondu
    Moderator na urlopie...
    Cześć.

    1. Najpierw podłącz prawidłowo mikrokontroler: http://mikrokontrolery.blogspot.com/2011/04/minimalne-podlaczanie-pinow.html
    2. Później prawidłowo zdefiniuj F_CPU: http://mikrokontrolery.blogspot.com/2011/03/fcpu-gcc-gdzie-definiowac.html
    3. Potem pokaż komunikaty z kompilacji.
    4. Następnie wskaż, gdzie masz pętlę główną programu.
    5. I przeczytaj o zmiennych opóźnieniach: http://mikrokontrolery.blogspot.com/2011/04/gcc-avr-funkcje-opoznienia-delay.html
  • REKLAMA
  • #3 12808398
    tadzik85
    Poziom 38  
    A potem pokaż gdzie ten potencjometr ma interfejs I2C?
    Ja tam widzę coś bliższego SPI
  • #4 12808831
    Rafciok997
    Poziom 10  
    1. Co do prawidłowego podpięcia mikrokontrolera to zapewne chodzi Ci o AVCC. Przeczytałem, że jest on wewnętrznie zwarty z VCC więc go nie łączyłem z nim ponownie. Ale pomimo to, jutro podłącze go do zasilania.
    2. F_CPU jest poprawnie zdefiniowane. Co z nim nie tak? Plik jest jeden, nie muszę inaczej go definiować.
    3. Żadne błędy nie wychodzą, szczegóły jutro - postaram się je wrzucić po pierwszych poprawkach.
    4. Pętli głównej nie ma ponieważ program na razie polega na przesłaniu jednego komunikatu do potencjometru - taki prosty test. Jak to mi się uda to będę budował program z pętelką.
    5. Na opóźnieniach nie chciałem się skupiać ponieważ w finałowym programie ich tam w ogóle nie będzie. Są one tylko po to aby podczas testów zapaliły i zgasiły diodę.


    No i na koniec: EUREKA - to jest SPI :D. Przerabiam program i zobaczymy czy ruszy :). Niestety brak wiedzy jest bolesny :(. Dzięki i jeszcze się odezwe.
REKLAMA