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][SPI] Kilka urządzeń na SPI - problem

Kabuto15 21 Cze 2008 13:16 3817 2
REKLAMA
  • #1 5271060
    Kabuto15
    Poziom 19  
    Witam.
    Podczas uruchamiania pewnego generatora DDS obsługującego układy AD9831 oraz AD8321, napotkałem na problem. Oba układy komunikują się z zewnętrzem za pomocą SPI.
    Problem jest następujący. Bezpośrednio po zaprogramowaniu ATmega32, program wykonuje się dopóki nie spotka definicji obsługi wysyłania bajtów na magistralę SPI. Następnie nie odpowiada. Co ciekawe jeśli odłączę zasilanie i ponownie uruchomię układ to działa on poprawnie. Niekiedy również po załączeniu zasilania program się wiesza i musze zrestartować go i kolejne uruchomienie jest poprawne. Trzeba dodać, że programator podpięty jest non stop do układu i z obserwacji wynika, że jego przepinanie nie ma wpływu na działanie/nie działanie układu.
    Zastanawiam się czy nie powinienem podciągnąć wyjść CS1 i CS2 do zasilania, ale skoro ustawione są one jako wyjścia to w trybie Master nie powinno być problemu. Poniżej widoczny rysunek podłączenia układów (nie ma żadnych buforów). Sterowanie urządzeniami za pomocą wyjść CS.
    [ATmega32][SPI] Kilka urządzeń na SPI - problem
    Dodatkowo poniżej prezentuje kluczowe funkcje obsługi SPI przeze mnie:

    Inicjalizacja SPI
    
    SPCR = _BV(SPE) | _BV(MSTR) | _BV(CPOL);  
    SPSR = _BV(SPI2X); 	
    DDRB=0xff;
    PORTB=0x18;


    Wysłanie bajtu danych
    
    PORTB &= ~_BV(AD8321_CS);
    SPDR = data;
    while(!(SPSR & _BV(SPIF)));			
    PORTB |= _BV(AD8321_CS); 	
  • REKLAMA
  • Pomocny post
    #2 5271432
    BoskiDialer
    Poziom 34  
    Jakiś czas temu był podobny problem - pin SS (PB4, u ciebie pokrywa się z CS1) był konfigurowany jako wyjście PO ustawieniu bitu MSTR (jeśli przy ustawianiu bitu MSTR na pinie SS będącym jeszcze wejściem był stan niski, to bit MSTR się nie ustawi). Spróbuj przenieść przypisanie do DDR'a przed inicjalizację SPI.
  • #3 5271547
    Kabuto15
    Poziom 19  
    Dziękuję bardzo - PODZIAŁAŁO, a tyle mi to już krwi napsuło.
REKLAMA