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

[ATmega16] Programowanie, a PORTB jako szyna danych...

marenc 03 Paź 2008 08:34 2076 4
  • #1 5593706
    marenc
    Poziom 24  
    Witam, jest to kolejny post z serii "nie mogę zaprogramować układu".

    Podczas projektowania układu musiałem użyć portu B jako 8b szynę danych. Na jej końcach znajdują się układy 74HC573(zatrzaski) w układzie wejściowym i wyjściowym(taki prosty ekspander portów na TTL). Całością steruje przez demultiplekser.

    Problem polega na tym, że po zmontowaniu układu nie mogę zaprogramować mikrokontrolera ATmega16.

    Płytka jest zmontowana prawidłowo, programator(AVR Dragon) wykrywa poprawnie napięcie w układzie, prędkość ISP zmniejszona do 125k(bo nowy AVR pracuje z 1MHz internal RC).

    Podejrzewam, że układy TTL przeszkadzają w transmisji danych z/do mikrokontrolera przez ISP. Demultiplekser mam podłączony do portu C, więc niewyłączony jeszcze JTAG może wpływać na pracę demultipleksera.

    Chciałbym spytać jak wprowadzić możliwie najprostszą metodą zmiany, aby było możliwe programowanie. Wyłączenie zasilania dla zatrzasków rozwiąże problem?
  • Pomocny post
    #2 5593783
    szelus
    Poziom 34  
    Jakiś schemat zawsze ułatwiłby jednoznaczną interpretację tego, co napisałeś. Zrozumiałem z tego, że masz 573 podłączony jako bufor wejściowy - wyjściem do portu B procesora. Jeżeli tak, to przecież 573 ma wyjścia trójstanowe. Wystarczy zapewnić, aby w czasie programowania AVR-a na jego wejściu /OE był stan wysoki.
  • #3 5594300
    marenc
    Poziom 24  
    Szyna danych jest długa(dużo układów 573), ale podstawowy schemat jest poniżej.

    Demultiplekser ma zanegowane wyjścia i w zalezności od adresu albo odczytuję wartości(z dolnego), albo zapisuję wartości(do górnego). Niestety te układy nie mają wejść 3-stanowych co z pewnością rozwiązało by problem.

    PS. Wyciąganie układu raczej będzie niemożliwe w fazie finalnej, więc ta opcja odpada.
  • Pomocny post
    #4 5594354
    szelus
    Poziom 34  
    Jak szyna jest długa, to może być konieczne korzytanie z wolnego zegara do programowania. Ale to sie okaże...

    Lepiej pokaż/opisz ten tajemniczy demultiplekser. Z powyższego rysunku widać wyraźnie, że "tu leży pies pogrzebany" ;), bo steruje wyjściami 573 (w kierunku do AVR).

    marenc napisał:
    Niestety te układy nie mają wejść 3-stanowych co z pewnością rozwiązało by problem.

    Chyba wyjść... Ale to nie jest problemem. Nie potrzebny jest stan wysokiej impedancji. Potrzeba, aby na wszystkich wyjściach podłączonych do /OE układów 573 był stan wysoki w czasie programowania. Nie mają te demultipleksery wejścia "enable"?
  • #5 5594392
    marenc
    Poziom 24  
    DEMUX to 74HC138. Ma 3 wejścia jako ENABLE(2 na stałe do masy o 1 sterowany przez PC5). I to właśnie PC5 może źle sterować demultiplekserem, ponieważ służy on do obsługi interface'u JTAG, którego jeszcze nie zdążyłem wyłączyć. Szyna adresująca DEMUX też jest odpowiednio z PC2-PC4, które także odpowiadają za ten interface.

    Generalnie myślałem, że problemem jest "kradzież" prądu przez układy 573, co uniemożliwia programowanie. Próbowałem programować z częstotliwością 100Hz i nie pomogło.

    //Na podstawie pomocy kolegi rozwiązałem problem. Podczas programowania mikrokontroler przechodzi w stan RESET'u, co powoduje wysoką impedancję na wszystkich I/O. Brak rezystora(do masy w moim przypadku) na linii sterowania DEMUX'em powodował jego błędne działanie.
REKLAMA