Ads_700x200

niedziela, 1 grudnia 2013

AVR - ISP vc SPI co wolno a czego nie wolno ?

Witam,

Ten poradnik ma za zadanie przekazanie wam, tego co mi udało się dowiedzieć na temat ISP. Chciałbym tu nieco omówić ale tak od czysto praktycznej strony co to jest ISP (In System Programing) i czym różni się od SPI (Serial Peripherial Interface). Zwrócę uwagę jak się ma także ISP w niektórych procesorach do wyprowadzeń SPI a także na fakt, że nawet jeśli procesor posiada ISP to nie jest jednoznaczne z tym, że ma moduł SPI. Ale nie to jest najważniejsze. Wielu osobom sprawia bowiem kłopot i spędza sen z powiek, zagadnienie związane z możliwością wykorzystania pinów ISP jak MOSI, MISO i SCK do innych celów niż tylko do programowania. To tu jest bodajże najwięcej nieporozumień. Przykładowo jedną z największych porażek jakie przeżywa początkujący bywa np podłączenie pinów wyświetlacza LCD (tych D4..D7) do linii ISP. Gdy nagle występuje kłopot z programowaniem mikrokontrolera to prędzej pomyśli on o tym, że właśnie się zepsuł mikrokontroler niejednokrotnie (w pierwszym momencie) niż to, że być może coś źle podłączył. Później gdy już wie, że tak nie można to stara się znaleźć jakiekolwiek poradniki, które na podstawie wyliczanki, mówią że np tego nie można podłączać, tego również a tamto to już można. Ja bym chciał przedstawić inne podejście. Wyjaśnić co od czego zależy tak abyś mógł zrozumieć jak to działa i gdzie mogą być problemy a także jak ich nieraz unikać - abyś mógł sam oszacować zawsze z góry kiedy problem może wystąpić a kiedy nie. 


Zapraszam więc na (hmmm wcale nie krótki filmik) ;) ...


Mała aktualizacja!

Na naszym forum pojawiła się sugestia, że jednym z rozwiązań które umożliwia podłączanie LCD do pinów ISP w procesorze jest umieszczenie wyświetlacza LCD w podstawce i wyjmowanie go na czas programowania.


No tak - rozpinanie fizyczne takich połączeń jest tak oczywiste, że już nawet o tym nie wspomniałem, jednak okazało się, że ZAPOMNIAŁEM dodać jeszcze jednego alternatywnego rozwiązania takiego problemu. Proszę bardzo rzucić okiem na schemat poniżej:



Widać na nim 3 rezystory pomiędzy procesorem a liniami D7-D5 wyświetlacza. Rezystory mają niewielką wartość kilkaset ohm. Tutaj np. 220R (mogą być od 180R do 330R). Zastosowanie ich w takiej konfiguracji skutecznie eliminuje konieczność wyciągania z podstawki wyświetlacza LCD ;) proponuję to sobie sprawdzić na żywym organizmie ;)



24 komentarze:

  1. Mirku zrobisz też poradnik jak odblokować mikroprocesor po zmianie fuse bitu RESET na zwykły port ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Nie za bardzo ponieważ po takiej operacji nie ma prostego rozwiązania. Potrzebny jest albo programator równoległy, albo narzędzie jakie wymyślił np jeden fajny człowiek z Polski (nick zdaje się: manekinen) ... o nazwie "FuseBit Doctor" .. więc tu nie ma za bardzo o czym poradnika robić.

      Usuń
    2. http://mdiy.pl/atmega-fusebit-doctor-hvpp/

      Usuń
    3. Kiedyś też miałem problem z fuse bitami. Po zablokowaniu już 2x Atmega8 skonstruowałem sobie właśnie taki FuseBit Doctor na płytce stykowej i natychmiastowo miałem Atmege "czynną". Później wystarczy rozłożyć układ z płytki stykowej i jestem bez strat na zablokowaniu mikrokontrolera :) Polecam to każdemu początkującemu.

      Usuń
  2. Witam
    W 36 minucie kiedy mowa jest o połączeniu z układem RFM73 to jeśli dołączymy rezystor podciągający do vcc to ustrzeżemy się przed przypadkową aktywacją układu ale też uniemożliwimy późniejszy wybór/aktywację układu z pinu procesora...Chyba lepiej w takim przypadku było by wstawić zworkę i na czas programowania zdejmować zworę lub dać microswitch i na czas programowania wciskając go wymuszać stan wysoki. Tak przynajmniej mi się wydaje, może się myle. Pozdrawiam.

    OdpowiedzUsuń
    Odpowiedzi
    1. ;) a w jaki to niby sposób uniemożliwimy tym rezystorem wybór z procka ? ... no może kolega jeszcze raz przemyśli i rozważy spokojnie to co napisał bo pewnie to jakaś hmmm nie wiem pomyłka, literówka czy jak to nazwać ? ...

      Usuń
    2. No chodzi mi o to że bez rezystora, w trybie programowania nastąpi "przypadkowy" wybór scalaka a jak podciągniemy rezystorem do vcc to unikniemy tej "anomalii" jednak czy nie będzie problemu potem z uaktywnieniem scalaka przy podaniu stanu ,,0" z procka?

      Usuń
    3. Z rezystorem 10k, Atemaga sobie bez problemu poradzi i w razie potrzeby sprowadzi tą linię do ziemi ;)

      Usuń
    4. DOKŁADNIE, nie dość że nie będzie problemu z uaktywnieniem scalaka to wręcz nie może go być ;) .... no coś ty ...

      Usuń
    5. Oki to dzięki za wyjaśnienie w tym temacie :) Kto pyta, (mniej) nie błądzi :)

      Usuń
  3. haha apropo tych "stringów" przypomniały mi się inne śmieszne sytuacje związane właśnie z tymi nazwami technicznymi za czasów szkolnych np nauczyciel coś dyktował o impedancji a kolega coś nie dosłyszał i mówi: co impotencja ? xD Albo kiedyś nauczyciel opowiada kawał: Pewna pani pyta -"a dlaczego transformatory tak brzęczą " na to inżynier: jakby pani miała 50 okresów na sekundę też by Pani tak brzęczała !

    OdpowiedzUsuń
  4. ... mały backstage na końcu też się pojawił :) ...

    OdpowiedzUsuń
  5. Ja korzystałem do zablokowanej ATmega 32 wykonanej na pająka
    takiego urządzonka.
    http://mdiy.pl/atmega-fusebit-doctor-hvpp/
    I ATmega żyje do dziś.

    OdpowiedzUsuń
  6. Poradnik super, ale mogę zapytać jaki to program w którym rysujesz?

    OdpowiedzUsuń
  7. Panie Mirku, na końcu poradnika mówi Pan, że można spalić atmegę ogniem piekielnym, gdybyśmy musieli ja odlutować, aby zaprogramować na "tafli". Teraz do sedna. Pracuję w pewnej dużej firmie produkującej układy elektroniczne. Operatorzy, którzy lutują komponenty potrafią mieć na lutownicy grubo ponad 400 st. C!!!, lutowanie bez topnika i aż sam się dziwię, że scalaki spokojnie to przeżywają :) Wbrew pozorom ciężko jest usmażyć scalaka :)

    Pozdrawiam

    OdpowiedzUsuń
    Odpowiedzi
    1. Kolega chyba coś źle niestety usłyszał albo zrozumiał jeśli chodzi o to co powiedziałem. Ja powiedziałem - że gdyby tak trzeba było za każdym razem przelutowywać procesor z podstawki na TAFLI takiego ala pseudo programatora do układu docelowego i odwrotnie - kilkaset razy - bo czasem tyle trwa proces tworzenia kodu dla projektu to można byłoby go spalić hmm zniszczyć po prostu .... a tym bardziej jak się nie ma narzędzi specjalistycznych ...

      Wie kolega co ? ja i bez specjalistycznych narzędzi przelutowuję takie scalaki kilka razy jak trzeba - ale nie chodzę się i nie chwalę tym bo nie w tym rzecz, gdy się tworzy poradnik dla początkujących, gdy się coś doradza początkującemu. Więc bez urazy proszę ale to co kolega wyżej pisze o dużej firmie która to robi ;) nie ma w ogóle sensu w tym miejscu no i jest troszkę takim patrzeniem przez czubek własnego nosa .... bo nie każdy hobbysta pracuje w takiej firmie a nawet jakby pracował to nie pozwalałby sobie na zabawę ze swoimi prockami do domowego hobby ....

      no ale jak mówię - myślę, że kolega po prostu totalnie źle to zrozumiał albo i nie posłuchał uważnie całości i stąd ta uwaga nie na temat.

      Usuń
  8. Odświeżam wątek, ale mam sprawę, która mnie cały czas nurtuje.Nie znalazłem nigdzie jednoznacznej odpowiedzi. Po obejrzeniu powyższego filmu wychodzi mi na to, że w pdf-ie atmegi 128 na stronie 300 powinno być przy opisie tabelki 128.PIN Mapping ISP Serial Programming, a nie 128.PIN Mapping SPI Serial Programming. Mam rację?

    OdpowiedzUsuń
    Odpowiedzi
    1. Nie wiem o co ci chodzi ale przypomnę, że niejeden początkujący zjadł zęby na m128 bo nie sprawdził że piny MOSI i MISO SPI nie są pinami MISO i MOSI ISP i że są przemapowane na piny UART0

      Usuń
  9. Ok, o to chodziło. Po prostu zamiast pinów MISO i MOSI do programowania ISP używane są piny PDO i PDI.

    OdpowiedzUsuń
    Odpowiedzi
    1. No to od razu podpowiem ci drugą rzecz na której początkujący zjadają zęby z m128 ;) .... nie odprogramowują domyślnie (fabrycznie) ustawionego fusebitu m102 i później się dziwią że im coś nie tak programy działają ;)

      Usuń
  10. No to Pan mnie wyleczył z tafli :) W trakcie projektowania takiego zonka zajrzałem na ten poradnik. Teraz spokojnie mogę użyć skalpela i wyciąć go z monitora .. i fruuu do śmieci :)

    OdpowiedzUsuń