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

SPI Atmega8 – brak użycia SS (PB2) i rola sygnału LED w opisie wtyczki SPI

m1sha 17 Lis 2005 22:08 10683 8
REKLAMA
  • #1 2000612
    m1sha
    Poziom 11  
    Posty: 12
    Witam,

    natknąłem się na następujący problem: w opisie standardu wtyczki SPI widać czarno na białym, że są wykorzystywane sygnały:

    MOSI SPI - sygnał danych Master wy / Slave we,
    LED - Sygnał sterowania diodą LED i multiplekserem
    RST - Sygnał RESET układu docelowego
    SCK SPI - sygnał zegarowy
    MISO SPI - sygnał danych Master we / Slave wy + zasiłka.

    Atmega jako interfejs SPI (dedykowane piny) posiada:

    PB5 SCK (SPI Bus Master clock Input)
    PB4 MISO (SPI Bus Master Input/Slave Output)
    PB3 MOSI (SPI Bus Master Output/Slave Input)
    PB2 SS (SPI Bus Master Slave select)

    No i tu mam problem - nie wiem dlaczego kabel nie wykorzystuje sygnału SS (PB2). Do tego pojawia się tajemniczy sygnał LED. O ile spokojnie mógłbym zdecydować się na rezygnację z diody to zastanawia mnie sterowanie tym multiplekserem...
    Co podłączyć pod to wyjście (wejście?)?
    Czy można poprostu go zostawić nie podłączone?
    Co z z sygnałem SS? Przecież nie jest to to samo co ten LED... A może się mylę...

    Pomóżcie proszę.
  • REKLAMA
  • #2 2000644
    genetix
    Poziom 24  
    Posty: 669
    Pomógł: 42
    Myk jest w tym, że procesor ten posiada dwa porty szeregowe funkcjonujące wg. standartu SPI.

    Kabel, który opisałeś służy do programowania układu, dlatego zawiera dodatkowe sygnały (m.in. RESET i LED). Jest to kabel ISP i jest on podłączany do specjalnego portu, jednakże nie ma on nic wspólnego z portem SPI, który służy procesorowi do komunikacji ze światem zewnętrznym - czyli piny portu, które wypisałeś poniżej.

    Reasunując: nie jesteś w stanie wykorzystać portu ISP służącego do programowania w celu komunikacji proca z innymi urządzeniami.
    Tak samo nie zaprogramujesz układu podłączając się programatorem do interfejsu SPI, który służy jako urządzenie peryferyjne.

    Przykład:
    Znany i lubiany AT90S2313 posiada port SPI służący TYLKO do programowania szeregowego (ISP). Jak się przyjrzysz liście rejestrów tego procka, to nie znajdziesz rejestrów odpowiedzialnych za sterowanie portem SPI (SPDR, SPSR, SPCR) Dlatego jeśli chcesz się komunikować przez SPI musisz go emulować programowo.

    Generalnie jest to trochę zamotane, ale mam nadzieję, że wiesz co mam na myśli.... (a jak nie to zawsze mogę Cię odesłać do datasheet'a :D )
  • REKLAMA
  • #3 2000754
    m1sha
    Poziom 11  
    Posty: 12
    Ok. Z tego co piszesz wynika, że po prostu zakładam użycie złego kabla...

    Znałazłem przed momentam coś takiego. Jeśli bym zbudował ten programator to wtedy mam wszystkie mi potrzebne sygnały w moim starym Atmega8. Zastanawia mnie tylko 1 rzecz. Czy reset, który jest przedstawiony tu w oczywisty sposób jako wejście mam podpiąć poprostu do wejscia resetującego cały układ??

    Druga rzecz - sygnał SS, o którym wczesniej juz pisalem, nie jest wykorzystywany przez żaden programator, czy to tylko taki zbieg okoloiczności, że trafilem już na drugi, który akurat go nie używa? ...

    Z góry thx za pomoc
  • Pomocny post
    #4 2000800
    genetix
    Poziom 24  
    Posty: 669
    Pomógł: 42
    Widzisz, nadal sie nie rozumiemy... zatem obiecane datasheet...

    http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf

    Podczas programowania układu interfejsem ISP używasz podłączeń ze strony 234. Do tego dołączasz pin !RESET (tak, ten normalny reset) a nóżką SS się nie przejmujesz.

    Jeśli chcesz, żeby kontroler sterował czymś przez SPI używasz sygnałów MISO, MOSI, SCK, SS. (strona 123)

    Sygnał SS (skrótowo mówiąc) służy do sterowania przepływem danych podczas komunikacji np. dwóch nontrolerów. Cały protokół SPI opiera się na tym, że jedno urządzenie jest nadrzędne (master) i kontroluje całą transmisję. Dlatego wejście SS pozwala na dogadanie się dwóch urządzeń.

    Oczywiście trudno, żeby podczas programowania mikrokontrolera on sam był "masterem", więc ten sygnał nie jest używany przez żaden programator. W trybie programowania szeregowego urządzeniem "master" zawsze jest programator (komputer).

    pozdrawiam.
    genetix
  • REKLAMA
  • #5 2000891
    m1sha
    Poziom 11  
    Posty: 12
    Dobra :)

    Widzę światełko w tunelu. Mam użyc w takim razie tylko MISO, MOSI i SCK i Resetu.

    W takim razie jak wygląda programator do takiego układu? Zakładam że są gotowe komercyjne wersje do kupienia w sklepie... A może nie ma ? ;)

    Jeśli istnieje gotowa implementacja to fajnie by było jej użyć...

    Ps. Czy przytoczony wyżej przeze mnie schemat programatora nie nadaje się do programowania? Jak tak to dlaczego?
  • Pomocny post
    #6 2000948
    genetix
    Poziom 24  
    Posty: 669
    Pomógł: 42
    Niestety linki do pdf z opisem są dead, więc nie wypowiem się na ten temat.
    Ale za to mogę zaproponować zbudowanie programatora szeregowego opartego na standardzie STK200/300. Koszt wykonania: góra 10zł, (mnie kosztował nieco więcej: obudowa, diodki, złącza i zestaw kabelków do różnych złącz) Jego schemat jest z tego co pamiętam w helpie do Bascoma. Był też publikowany w EdW przy okazji kursów programowania AVR'ów. Ja tego programatora używam już ze 3 lata i chodzi dobrze. Zaletą STK200/300 jest fakt, że obsługuje go m.in. CodeVision - czyli piszesz program i programujesz kość w jednym środowisku.


    powodzenia!

    PS. po odrysowaniu schematu z helpa Bascoma skasuj natychmiast program z dysku, bo jeszcze się do niego przyzwyczaisz. Bascom jest jak TVN - ogranicza zdolność samodzielnego i kreatywnego myślenia.
  • #7 2000987
    m1sha
    Poziom 11  
    Posty: 12
    Help do Bascoma powiadasz ;) Zerknę...

    Zależało by mi na czasie, bo praktyk elektronik ze mnie żaden i zlutowanie paru scalaków to dzień straty.

    Ale jak mus to mus. Dzieki za pomoc, jeszcze sie jutro odezwę jeśli coś będzie nie tak.

    Pozdrawiam
    Misha
  • REKLAMA
  • #8 2000995
    genetix
    Poziom 24  
    Posty: 669
    Pomógł: 42
    Tam wchodzi jeden scalak i kilka oporników + złącze D-Sub-25.
    Niektórzy robią to wogóle bez scalaka, jednak moim zdaniem dobrze się czasem zabezpieczyć. Nigdy nie wiadomo...
  • #9 2264056
    m1sha
    Poziom 11  
    Posty: 12
    dzieki, problem rozwiazany :)

Podsumowanie tematu

✨ Dyskusja dotyczy problemu z wykorzystaniem sygnału SS (PB2) w interfejsie SPI mikrokontrolera Atmega8 oraz roli sygnału LED w opisie wtyczki programatora ISP. Wyjaśniono, że kabel programatora ISP zawiera dodatkowe sygnały takie jak RESET i LED, które służą do programowania układu, a nie do standardowej komunikacji SPI. Sygnał SS nie jest wykorzystywany w programatorach ISP, ponieważ podczas programowania to programator pełni rolę mastera, a mikrokontroler jest slave, więc SS nie jest potrzebny. Do programowania Atmegi8 przez ISP wystarczą sygnały MISO, MOSI, SCK oraz RESET. Sygnał LED w opisie wtyczki służy do sterowania diodą i multiplekserem, ale nie jest konieczny do programowania. Zaproponowano użycie popularnego programatora szeregowego opartego na standardzie STK200/300, który jest tani i powszechnie stosowany, a także wspierany przez środowiska programistyczne takie jak CodeVision. Schematy programatorów można znaleźć w dokumentacji Bascoma lub publikacjach Elektroniki dla Wszystkich. Podsumowując, do programowania Atmega8 przez ISP nie używa się sygnału SS, a sygnał LED można pominąć lub wykorzystać do sterowania dodatkowymi funkcjami, jeśli jest to potrzebne.
Wygenerowane przez model językowy.
REKLAMA