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

Konfiguracja SCK, MISO, MOSI w ISP - wejścia czy wyjścia? ZL2PRG-STK200/300

wojachowski 06 Wrz 2005 19:51 2342 5
REKLAMA
  • #1 1796631
    wojachowski
    Poziom 12  
    Posty: 37
    Ocena: 1
    http://www.btc.pl/pdf/zl2prg.pdf - tu napisane jest, że żeby można było zastosować proste podpięcie programatora do mikrokontrolera (tak jak na rys6 w załączonym dokumencie) nóżki SCK MISO MOSI nie mogą być skonfigurowane jako wyjście.
    http://www.edw.com.pl/index.php?module=ContentExpress&func=display&ceid=142 – tu natomiast sprawa stawiana jest kompletnie inaczej.
    Wydaje mi się że to pierwsze jst błędne.

    I co ma sobie zakodować w głowie początkujący mikrokontrolerowiec?

    Tak na marginesie: Czy w ogóle polecacie ten programator (ZL2PRG – STK200/300), mam na zbyciu układzik SN74LS244N więc pomyślałem, że mogę go zbudować?
    Moderowany przez Light-I:

    Proszę tytułować tematy, zachowując logiczne i techniczne odniesienie do treści. Poprawiono...

  • REKLAMA
  • Pomocny post
    #2 1796902
    lbugiera
    Poziom 21  
    Posty: 348
    Pomógł: 45
    Ocena: 5
    W obydwu przypadkach chodzi o to aby jednocześnie dwa źróła nie próbowały sterować jedną linią. Gdy tak się stanie jedno źródło (dajmy na to programator) próbuje ustawić na lini stan niski. Drugie (dajmy na to jakiś układ HC) próbuje wystawic wysoki. Taka sytuacja powoduje przepływ dużego prądu od układu drugiego do pierwszego, często przekraczającego dopuszczalne wartości dla obudwu układów. Dodatkowo jeśli obydwa źródła maja podobną siłe to ustali się połowa napiecia zasilania, czyli stan zabroniony. Całe kilka zadań mozna podsumowac jednym : to nie będzie działać :). Rozumiem, że chodzi ci o to że w jednym (to z btc) napisali aby gdy chcesz uzywac mosi,miso lub sck jako wyjścia to masz dać multiplekser (że wtedy jest problem), a w eportlau ze jest problem, gdy jest ustawione jako wejscie. W przykładzie przyłaczenia z pdf'a gdy te linie sa ustawione jako wejścia problem jest rozwiązany dodaniem tych 3 rezystorów 1k. Zauwaz , że wtedy ta róznica napiecia pomiędzy dwoma źródłami sygnału odłozy sie na rezystorze, w wyniku tego popłynie prąd (ale juz w dopuszczalnych wartościach ok 5mA) oraz ponieważ programator jest podłaczony bezposrednio do linii miso mosi i sck to ustali na nich to co chce. Dlatego w pdf'ie piszą, że mozliwe jest podłaczenie programatora gdy te 3 linie są ustawione jako wejścia. Natomiast w elportalu nie przewidzieli tych 3 rezystorów i dlatego piszą, że są problemy. Natomiast jeśli te 3 linie ustawione są jako wyjścia to w elportalu piszą że nie ma tego problemu, ponieważ procesor podczas programowania jest resetowany (linia reset jest cały czas w stanie niskim), a jak jest resetowany to wszystkie piny atmela ustawiaja się jako wejścia, a więc nie przeszkadzają w programowaniu. Problem pojawia się w momencie puszczenia resetu zaraz po zaprogramowaniu. Procek jest bardzo szybko inicjalizowany (poprostu zaczyna wykonywac program) no i przy tej inicjalizacji którac z tych 3 linii może zostać ustawiona jako wyjście. Aby zapobiec "gryzieniu" się programatora z wyjściami atmela, prgramator przed puszczeniem resetu musi ustawić swoje linie jako wejścia i wtedy nie będzie problemu. Tylko, że nie jestem pewien czy każdy programator to robi (albo kążdy program obsługujący stk200). W pdf'ie nie byli tego pewni i dlatego dali multiplekser. Taki multiplekser chroni przed każdą z wyżej opisanych sytuacji, ale wprowadza dość znaczne zamieszanie na płytce no i rezystancje szeregową kanału około 300 om co może miec czasami znaczenie.

    Co do stk200 to warto. Warto sobie tez zrobić jakąs przedłużke do lpt'a


    Powodzenia
    Boogie
  • REKLAMA
  • #3 1797275
    wojachowski
    Poziom 12  
    Posty: 37
    Ocena: 1
    dwa źródła + forum = wiedzieć ;)

    Dziękuje za profesjonalną odpowiedź, teraz stało się wszystko jasne. Pozostaje mi jeszcze zapytać, co lepiej jest robić:
    1) czy dać trzy oporniki i zastosować piny spod MISO MOSI i SCK jako wejścia (opornik 1k przy pinie procesora, za opornikiem węzeł – jedno odejście przez kolejny opornik 1k do +5V a drugie przez przycisk do masy)?
    2) Czy lepiej może zastosować MISO MOSI SCK jako wyjścia i mieć: albo zaufany programator + program, albo stosować inne patenty (multiplekser, jumperki).

    Napisał Pan, że ustalenie stanu niskiego powoduje ustawienie wszystkie piny ustawiają się na wejście? A czy już wtedy dochodzi do kasowania? Jakie konsekwencje ma przypadkowe zwarcie resetu z GND?

    Tak a propos przełączników. To czy jest sens inwestować w rezystory podciągające do +5V, jeśli ten sam efekt uzyska się po włączeniu rezystora podciągającego w procku?
  • REKLAMA
  • #4 1797333
    lbugiera
    Poziom 21  
    Posty: 348
    Pomógł: 45
    Ocena: 5
    Jeśli chcesz podłaczyć przycisk pod miso, mosi i sck to nie potrzebne są rezystory zabezpieczajace takie jak w pdf'ie, ponieważ nie masz żadnego aktywnego źródła, które mogło by się "gryźć" z programatorem. Więc nie musisz ich dawać. Co do pytania czy rezystory zewn. czy pull-upy, to do przycisków dodawanie rezystora podciągającego raczej nie ma sensu, chyba, ze jest to linia reset. Ta linia musi byc "mocno" podciagnięta do plusa. (rezystor około 1-5k)

    Z tego co napisałeś to źle podłączyłeś ten rezystor zabezpieczający jak w pdf'ie (albo chcesz podłączyć). Węzeł ma być zaraz przy pinie i dopiero od węzła rezystor tak jak w pdf'ie.

    Co do tego czy stosować miso,mosi i sck jako wyjscia czy wejścia to odpowiedź brzmi: w zalezności jak Ci jest lepiej. Nie ma reguły. Dobre zrozumienie tego dlaczego trzeba tutaj poświecić troche uwagi pomoze wybrac najlepsze rozwiązanie (czyli to co pisałem wczesniej). Jeśli możesz spokojnie zostawić te linie tylko dla programatora to dlaczego nie. Jesli to ma byc płytka uniwersalna (taka na której jest procek układ resetu złącze do programowani i ew. pare przycisków i diodek, a reszta wyprowadzona na goldpiny) to ja bym uzył multipleksera, ale ogólnie multiplekser (ja uzywałem hc4053) jest upierdliwy.

    Przejście linii reset w stan niski nie wprowdza jeszcze procka w stan programownia. Przez interfejs SPI (to właśnie te 3 linie miso,mosi,ck - zakładam, ze jeszcze możesz tego nie wiedzieć) musi zostac wysłane bodajże sekwencja 4 znaków i dopiero wtedy procek wykonuje rozkazy programujące.
    Gdy procek jest "w resecie" to wszystkie piny automatycznie ustawiaja sie jako wejścia bez włączonych pull-up'ów

    Powodzenia
    Boogie
  • REKLAMA
  • #5 1797460
    wojachowski
    Poziom 12  
    Posty: 37
    Ocena: 1
    lbugiera napisał:
    Jeśli chcesz podłaczyć przycisk pod miso, mosi i sck to nie potrzebne są rezystory zabezpieczajace takie jak w pdf'ie, ponieważ nie masz żadnego aktywnego źródła, które mogło by się "gryźć" z programatorem.


    Czy za „aktywne źródło” uważa się podpięcie do masy?? Jeżeli są to przyciski: przyciśnij mnie a ja zewrę masę, a potem sam odskoczę – to nie ma problemu, gorzej jest chyba z tymi, które same nie wyskakują :D

    lbugiera napisał:
    Z tego co napisałeś to źle podłączyłeś ten rezystor zabezpieczający jak w pdf'ie (albo chcesz podłączyć). Węzeł ma być zaraz przy pinie i dopiero od węzła rezystor tak jak w pdf'ie.


    Oczywiście, pisząc węzeł na myśli miałem: węzeł rozdzielający: rezystr z pdf’a, rezystor do +5V i odejście do guziczka. Nie: linie portu i odejście do programatora.

    lbugiera napisał:
    Co do pytania czy rezystory zewn. czy pull-upy, to do przycisków dodawanie rezystora podciągającego raczej nie ma sensu, chyba, ze jest to linia reset. Ta linia musi byc "mocno" podciagnięta do plusa. (rezystor około 1-5k)


    Czyli rozumiem, że reset idzie tylko do 5V przez rezystor np. 1k. Samo, więc rodzi się pytanie, jak wykorzystać linię portu, które jest na tej samej nóżce, co reset (tak jest np. w ATmedze8 – tu reset jest pod PC6)
  • #6 1797521
    lbugiera
    Poziom 21  
    Posty: 348
    Pomógł: 45
    Ocena: 5
    No jak masz zamiar przyciskać ten przycisk podczas programowania to lepiej daj te rezystory, ale myśle, że możesz się powstrzymać :). Na linii reset możesz sobie dać przycisk zwierający ja do masy, czyli resetujący procek.
    Portu PC6 możesz użyć, ale lepiej, żebys miał programator równoległy. Bo ustawiająć PC6 jako port nie możesz już potem zresetować procka tak jak dotychczas, a więc i nie możesz zaprogramować przez stk200 czy inny programator szeregowy. Potrzebny jest wtedy programator równoległy dający +12 na linie reset/pc6 itd.. Także żadko się jej używa.

    Powodzenia
    Boogie
REKLAMA