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

[Atmega32][C][SPI] - Niepoprawny sygnał SCK, MOSI, SS

sotrab 13 Sty 2013 18:38 3498 8
REKLAMA
  • #1 11784081
    sotrab
    Poziom 10  
    Witam,

    mam problem z układem ENC28J60 podłączonym poprzez interfejs SPI, a dokładniej komunikacja między atmegą i ENC nie działa, bardzo nie podobają mi się przebiegi SCK, MOSI oraz SS.

    SCK:
    0,2V/dz
    50us/dz
    słabo widoczne są piki o amplitudzie ok. 0,8V

    [Atmega32][C][SPI] - Niepoprawny sygnał SCK, MOSI, SS

    MOSI oraz SS:
    2V/dz
    50us/dz
    [Atmega32][C][SPI] - Niepoprawny sygnał SCK, MOSI, SS

    Atmega pracuje na 16MHz, SPI na 8MHz (na 4Mhz jest to samo).

    Inicjalizacja przebiega zgodnie z poniższym kodem:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Czy ktoś spotkał się z podobnym problemem?
    Proszę o pomoc.
  • REKLAMA
  • REKLAMA
  • #3 11786430
    sotrab
    Poziom 10  
    Jak najbardziej. Przebiegi wyglądają identycznie niezależnie od tego czy ENC28J60 jest podłączony.
    Dodam jeszcze, że atmega pracuje na 5V, a moduł na 3,3V, pomiędzy nimi bufor wg datasheet'a.
  • REKLAMA
  • #5 11786648
    piotrva
    VIP Zasłużony dla elektroda
    I jeszcze jedno - masz pin nardware SS ustawiony jako WYJŚCIE? Nawet jeśli korzystasz z innego pinu jako CS układu ENC28J60 to pin oznaczony jako SS MUSI BYĆ USTAWIONY JAKO WYJŚCIE.
  • REKLAMA
  • #6 11787865
    sotrab
    Poziom 10  
    fragment schematu, z pośpiechu zapomniałem dodać bufor, który miałem w innym pliku:
    [Atmega32][C][SPI] - Niepoprawny sygnał SCK, MOSI, SS

    a tu schemat płytki z modułem ENC28J60:
    Link

    SS (PB4) jako wyjście ściągnięte do masy:
    Cytat:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Opisane sygnały wyglądają identycznie w przypadku podłączenia ENC jak i bez niego.
  • #7 11787890
    tmf
    VIP Zasłużony dla elektroda
    AREF się nie łączy z Vcc. Ale to tak btw. Nie pokazałeś konwertera poziomów logicznych. Odłącz ENC i sprawdź jak wtedy wygląda przebieg. Pokaż schemat konwertera.
  • #8 11791743
    maniek1818
    Poziom 22  
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    :?: :!: :?:
    Powinno być chyba tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    DDR:

    * ustawienie '1' odpowiedniego bitu - wyjście;
    * skasowanie '0' odpowiedniego bitu - wejście;

    PORT:


    * ustawienie '1' odpowiedniego bitu - High;
    * skasowanie '0' odpowiedniego bitu - Low;

    Tak mi się wydaje bynajmniej.

    MISO - wejście;
    MOSI, SCK, CS - wyjście.

    Jeśli to jest sprzętowy SPI to tylko musisz używać rejestru PORT do sterowania linią CS (wyboru urządzenia Slave).
  • #9 11796217
    sotrab
    Poziom 10  
    Faktycznie, a nie spodziewałem się, że w bibliotece mógł taki błąd... a właściwie takie błędy bo znalazłem jeszcze kilka!
    teraz kod wygląda tak:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Niestety to w (nie)działaniu niczego nie zmienia :(

    Wyjąłem atmegę i zasiliłem ją na płytce stykowej (podłączone wyłącznie zasilanie, taktownie 8MHz wewnętrznym na potrzebę tej próby). Przebiegi nie zmieniają się, stąd wniosek, że w grę nie wchodzą jakieś zwarcia czy błędy lutownicze na płytce. Podejrzewam uszkodzenie atmegi, spróbuję skołować inną sztukę i na niej sprawdzić co się będzie działo.

    ----------

    Sprawdziłem na innej atmedze, przebiegi są identyczne pod względem kształtu natomiast są zależne od częstotliwości taktowania procka. Nie mam już pomysłów :(

    ----------

    Problem rozwiązany, na płytce z ENCJ była zworka na potrzeby testu napięciowego, o której nie wiedziałem(musiałem wszystko rozłożyć na czynniki pierwsze żeby ją przypadkiem znaleźć:/) wystarczyło ją zewrzeć, a wszystko hula jak należy. Przebiegi z oscyloskopu jak się okazuje reprezentują poprawne działanie albo oscyloskop przekłamuje (a niestety nie jest pierwszej klasy). Dziękuje wszystkim za poświęcony czas i znalezione w oprogramowaniu błędy. Temat zamknięty.
REKLAMA