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

[ATtiny2313][C] Problem z obsługą USI jako SPI

Tranzystor_1992 29 Sie 2009 08:48 2038 4
REKLAMA
  • #1 6956103
    Tranzystor_1992
    Poziom 16  
    Witam,
    mam problem ze sterowanie wewnętrznym modułem USI. Potrzebuję skonfigurować go do pracy w trybie Three-wire Mode(SPI). Na samym początku konfiguruję porty SCK i MOSI jako wyjścia oraz MISO jako wejście. Procedurę obsługi USI w trybie Tree-wire zaczerpnąłem z noty katalogowej i przerobiłem ją na kod w C. Wygląda to tak:

    unsigned char SPITransfer(unsigned char Dane)
    {
    	USIDR = Dane;
    	USISR = _BV(USIOIF);
    	
    	while(USISR & _BV(USIOIF))
    		USICR = _BV(USIWM0) | _BV(USICS1) | _BV(USICLK) | _BV(USITC);
    	
    	return USIDR;
    }

    Ale niestety dane nie są ani odbierane ani wysyłane :|

    Dziękuję za każdą pomoc :)
    Pozdrawiam :)
  • REKLAMA
  • #2 6965113
    rfhzcx
    Poziom 14  
    O ile coś pamiętam z SPI-a to tam był jakiś numer z sygnałem SS. Druga sprawa w przypadku tak prostych procedur warto czasami podejrzeć kod wynikowy (w assemblerze).
    Pozdro
    AK
  • REKLAMA
  • #3 8410728
    1906
    Poziom 11  
    W attiny2313 odpowiednikiem SPI jest USI. Jak wiemy SPI steruje się za pomoca 4 nóżek - MOSI, MISO, SCK i SS.
    Jednak w attiny2313 nie ma nóżki SS. Aby nawiązać komunikacje pomiędzy dwoma uC, ta nóżka jest potrzebna. W datasheet Tiny jest napisane, ze sprawę brakującej nóżki SS można rozwiązac programowo.

    Czy ktoś wie jak to trzeba zrobic ?
  • REKLAMA
  • #4 8411010
    tmf
    VIP Zasłużony dla elektroda
    SS to slave select - wykorzystujesz dowolny pin IO i podłączasz go do pinu SS slave, wystawiasz 0 tuż przed początkiem transmisji, wrzucasz 1 tu po zakończeniu. Ot i cała magia.
  • #5 8411787
    Tranzystor_1992
    Poziom 16  
    Jeżeli chodzi o SS to po prostu konfigurujesz pin-a jako wyjście i sterujesz niski, wysoki stan za pomocą rejestrów PORT. Jeżeli chodzi o problem USI to został on rozwiązany. Nóżki MISO i MOSI się nie zgadzają, ten interfejs ma je zamienione... Jeżeli nie spojrzycie do noty to możecie je w zły sposób podłączyć z peryferiami :(

    Pozdrawiam ;)
REKLAMA