Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] Atmega8 działa, konwerter RS działa. Razem - nie startuje.

15 Oct 2019 14:18 648 23
  • Level 10  
    Zrobiłem prosty układ: Atmega8, która stale nadaje na USART (tylko nadawanie) + dioda LED, która miga w trakcie nadawania (dla kontroli).
    Podłączyłem gotowy (kupiony) konwerter TTL->RS232 - wszystko razem działa bez zarzutu.

    Jeśli konwerter jest podłączę do Atmegi bez prądu i podam zasilanie - układ nie startuje. Dioda LED świeci się na stałe, nic nie ma na łączu.

    Można wtedy zrobić reset (pin RESET masy) i układ startuje. Niestety dalej nie chce ruszyć przy zasileniu atmegi z konwerterem.

    Co może być przyczyną takiego zachowania, jak to naprawić?

    Dodałem opornik 5.6k między reset i VCC oraz różne kondensatory (3.3nF-100uF) pomiędzy zasilanie i masę atmegi, bez zmian.

    Pozdrawiam, ml.
  • Level 40  
    Witam,
    podja dokladnie jak twoj uklad wyglada, jak sam stwierdziles dolozenie konwertera blokuje uklad, moze zasilacz jest za slaby? czy obciazalnosc wyjsc jest za duza.
    Pozdrawiam
  • Level 10  
    Układ jest prosty, łątwiej opisać niż rysować:
    PB0 (pin 14) -> R500k -> LED -> Masa
    TxD (pin 3) -> konwerter TTL-RS ->
    RxD (pin 2) <- konwerter TTS-RS <-
    Vcc -- Vcc konwerterta - +5V zasilacza
    GND-- GND konwertera - GND zasilacza
    RESET, SCK, MISO, MOSI - do programatora (podłączany tylko na czas programowania).
    RESET (pin1) - R5.2k - Vcc

    Podłączony jest też kwarc i kondensatorki, ale nie korzystam z zewnętrznego oscylatora.
    Załączam zdjęcia. Widoczny na zdjęciu konwerter ma trochę mylący opis na swojej płytce: JEGO nadawania to pin RxD, a JEGO odbiór to pin TxD. Producent zapewne chciał poinformować gdzie podłączyć swoje RxD i TxD.

    Jeśli podam zasilanie bez konwertera to Atmega startuje. Potem mogę podłaczyć konwerter i wszystko śmiga. Problem jeśli podam zasilanie na już połącozny razem konweret i Atmegę.
  • Level 10  
    Zasilacz to 5V, 20A :-) Naprawdę.
    Jest dokładnie tak samo jak przy +5V z USB.
  • Level 40  
    Witam,
    zgadzam sie zkolega Gienek wyglada na chwilowe obciazenie zasilania,
    czy jestes w stanie zasilic atmege i konwerter z roznych zasilaczy (oczywiscie z polaczona masa),
    wspomniales ze robisz reset i nic, czy wogole uklad startuje po reset?
    Jak masz ustawiona konfiguracje mikrokontrolera? np. BOR (nie znam sie za bardzo na atmegach ale powinna miec to zaimplementowane)
    Pozdrawiam
  • Level 17  
    Cześć.
    Najlepiej byłoby jakbyś narysował schemat. Łatwiej wtedy łączyć i sprawdzać i to dla Ciebie.
    Wg mnie masz zwarcie między konwerterem a Twoją płytką. Rozmieszczenie elementów na płytce też nie jest optymalne do pinologii ATmegi8. Wygląda to tak jakbyś nie oglądał noty technicznej Atmegi.
    Pokaż zdjęcie swojej płytki od strony lutowania.
  • Level 10  
    Schemat i zdjecia drugiej strony - juteo (zostswilem na biurku w pracy).

    Co znaczy "zwarcie miedzy ukladem i konwerterem"? Maja polaczone masy, zasilanie oraz nadawanie i odbior na krzyz. Wiecej nic ich nie laczy.

    Zapytam o BOR - chodzi o to, ze napiecie zbyt wolno narasta w czasie wlaczenia i trzeba ustswic prog przy ktorym zaskoczy?
  • Level 37  
    240sx wrote:
    Problem jeśli podam zasilanie na już połącozny razem konweret i Atmegę.



    Tu może być też sprawa programowa. Masz tam połączony konwerter do wejścia RxD i po prostu jakiś stan przejściowy (niski konkretnie) powoduje że ATMEGA odbiera to jako znaki. Jeśli od strony programu nie masz tego obsłużonego to możliwe że program może się wywalić na jakimś przepełnieniu stosu albo coś podobnego.
    Czyli spróbuj w Twoim układzie
    240sx wrote:
    RxD (pin 2) <- konwerter TTS-RS <-

    to połączenie rozłączyć i zobaczyć rezultat.


    Jeszcze taka sprawa na marginesie, która nie wiem czy dotyczy akurat Twojego sprzętu, ale jak widzę Twoje fotki to myślę że warto o sprawie wspomnieć.
    Jakiś czas temu Chiny (i nas z konsekwencji) zalała plaga wadliwych podróbek MAX3232, zarówno w modułach (m.in. takich jak Twój) jak i jako luźne kostki. Które w pewnych konfiguracjach pracowały ok, ale przy współpracy np. z porządniejszymi przejściówkami USB-RS232 lub natywnymi COM z PC, tzn. używających większych poziomów napięcia np. -10V, +10V, wykazywały dziwne wadliwe działanie (jakieś echo ale zaśmiecone itp.).
    Temat ogólnie znany pod hasłem "fake MAX3232".
    Ale to nie wygląda na razie na istotne akurat w Twoim tu problemie, tak że tylko sygnalizuję.
  • Level 10  
    Ten sam układ zmontowałem na płytce uniwersalnej. Jest lepiej - czyli wskazywało by to, że winne jest moje lutowanie, choć nie jestem pewny (bo układ działa).

    1. Na płytce uniwersalnej układ startuje prawidłowo jeśli jest zasilony od już włączonego zasilacza.
    2. Jeśli podłączę ODŁĄCZONY od sieci zasilacz i uruchomię go z całym układem atmega zawisa:

    2.1 Dioda kontrolna świeci na stałe (powinna migać), układ nic nie nadaje.
    2.2 Gdy podam RESET (zewrę do masy) dioda gaśnie. Po odłączniu resetu układ dalej wisi, dioda świeci.
    2.3 Ukłąd można w tym stanie programować(!). Wgrywam oprogramowanie, ale potem układ dalej wisi.

    Czy oznacza to, że moja atmega przy powolnym wzroście napięcia przy starcie wpada w jakiś inny tryb i np. wymaga wybudzenia? Jak to zrobić?

    W załączeniu płytka montażowa (chyba widać wszystko tak jak na schemacie), powyżej moje lutowanie.

    Dodano po 36 [sekundy]:

    Dodaję obrazek
  • Level 17  
    1. Lutowanie tragedia.
    2. Używasz sprzętowego USART'a czy programowego? Na płytce lutowanej to chyba programowy USART?
    3. Podłączenie samego konwertera RS i Atmegi bez zasilacza nic nie da. Konwerter podłączony do PC'ta nie może zasilać układu; nie ma takiej możliwości. Trzeba mu podać zasilanie. To, że Leda świeci to chyba jakieś prądy błądzące.
    4. Na płytce stykowej, układ wydaje się poprawnie podłączony. Postaraj się na niej uruchomić układ a potem przenieść na lutowaną.
  • Level 10  
    1. Nie przeczę. Było ładniej od razu po zmontowaniu. Teraz to już wymęczona przez ciągłe testy i zmiany.
    2. USART to po prostu USART - "układ trasmisji szeregowej Atmegi". Czyli sprzętowy.
    3. Nie no, opisałem przecież, że zasilanie było. To jest tylko płytka, reszta przeniesiona na uniwersalną.
    Prądy błądzące świecące diodą? Bez przesady....
    4. Nie "wydaje się", a na pewno. No przecież pisałem, że już to zrobiłem!!! W pierwszym poście.
  • Level 29  
    Dodaj schemat całości albo nici z pomocy. To jest forum techniczne i aby dostać wsparcie trzeba wykazać jakąś inicjatywę.
    Rozrysuj wszystko dokładnie. Wszystko wygląda na problemy z zasilaniem. Na schemacie od razu wszystko będzie widać...
    Tu masz schematów minimalnego podpięcia Atmega8/Atmega32:
    Atmega8 działa, konwerter RS działa. Razem - nie startuje.
    Atmega8 działa, konwerter RS działa. Razem - nie startuje.
    Sprawdź, czy masz wszystko podpięte co trzeba...
    Nawet na tej stykówce brakuje mi połączeń... I niestety nie wszystko widać.
  • Level 31  
    240sx wrote:
    2.2 Gdy podam RESET (zewrę do masy) dioda gaśnie. Po odłączniu resetu układ dalej wisi, dioda świeci.

    Ja bym na próbe wyprowadzenia do modułu TxD i RxD podłączył szeregowo przez rezystory 200 om.

    240sx wrote:
    Układ jest prosty, łątwiej opisać niż rysować:
    PB0 (pin 14) -> R500k -> LED -> Masa
    TxD (pin 3) -> konwerter TTL-RS ->
    RxD (pin 2) <- konwerter TTS-RS <-
    Vcc -- Vcc konwerterta - +5V zasilacza
    GND-- GND konwertera - GND zasilacza
    RESET, SCK, MISO, MOSI - do programatora (podłączany tylko na czas programowania).
    RESET (pin1) - R5.2k - Vcc

    A gdzie masa programatora?

    240sx wrote:
    2.3 Ukłąd można w tym stanie programować(!). Wgrywam oprogramowanie, ale potem układ dalej wisi.

    Może atmega uszkodzona. A fusebity jakie masz?
    .
  • Level 10  
    Problem jest chyba bardziej skomplikowany niż się zdaje:
    - mikrokontroler może być "podtrzymywany" przez prądy z konwertera TTL- (tak w skrócie): https://www.avrfreaks.net/forum/atmega32-power-reset-problem

    Natomist u mnie jest jeszcze jeden problem: włączenie zasilania z mojego zasilacza wprowadza atmegę w taki dziwny stan w którym nie realizuje mojego programu, ale jest dostepny dla programatora (avrdude): można odczytać fuse, przeprogramwoac, ale dalej wisi. Co ciekawsze - reaguje na RESET, ale się nie resetuje.

    Że reaguje to domyślam się, bo szczęśliwie port PB0 jest w stanie wysokim więc nawet jak wisi to się dioda kontrolna świeci. Uziemienie resetu powoduje jej zgaszenie.

    Urcuhomiłem także watchdog - wydaje się, że także działa: dioda kontrolna miga regularnie co ok. 2s, więc pewnie watchdog próbuje zrestartować układ.

    Zasilacz można zawsze zmienić, ale bardziej interesująca jest kwestia co to za stan w którym się znalazł mikrokontroler? Jakiś standby, uśpienie? Jak można go z tego wyprowadzić?

    Sprzętowo nalezy odłączyć zasilanie, podłączyć RESET do masy, podłączyć zasilanie i odłączyć reset.
    Samo odłączenie zasilania rzadko przynosi efekt.
  • Level 10  
    Zasilacz jest w pudełku, więc aby podac dokłądne oznaczenie muszę go wczesniej rozbroić.
    Na pewno jest to MeanWell 5V, 9.5A.

    Schemat poniżej. Skrzyżowane linie na środku to zworki między ziemią i napięciem referencyjnym dla ADC.
  • Level 29  
    Oglądał kolega jak należy podpiąć Atmega8? No bo chyba jest kilka pkt zasilania i tak samo z GND. No i wszystko należy tak właśnie podpiąć... Nie wystarczy w jednym miejscu. Do tego kondensatory z zamieszczonych schematów jak najbliżej procesora. Gdzie jest masa programatora? Gdzie podciągnięcie nóżki RESET do Vcc przez rezystor? Gdzie filtracja zasilania?

    Na zamieszczonym schemacie brak istotnych szczegółów. Nawet brak kwarcu wlutowanego na PCB. A skoro jest kwarc, to gdzie przy nim dwa kondensatory 22pF (jeśli dobrze pamiętam)? Skoro kwarc to jaki? Jak ustawione FuseBity?
    Jak można analizować schemat szukając ewentualnych błędów, gdy ten nie jest pełny.

    Po parametrach zasilacza wnioskuję, że mamy do czynienia z niskiej jakości zasilaczem do LED i czymś takim mikrokontrolerów się nie zasila, przynajmniej nie bezpośrednio.
  • Level 10  
    Akuart Mean Well produkuje bardzo dobre zasilacze (i popularne także w dobrym sprzęcie).
    Ten mój to w dodatku z certyfikatem "for medical use", ok. $280 za sztukę.

    Napisałem wyżej, że cały układ z płytki przeniosłem na płytkę prototypowa.

    Problem w tym, że atmega "wisi", ale dalej można ją programować. I teraz moje pytanie: co to za stan?
  • Level 40  
    Witam,
    nie masz odsprzegania zasilania - jak wspomnial kolega powyzej dodaj kondensatory praktycznie na nozkach mikrokontrolera, typowo 100n i elektrolit na linji zasilania, nie zaszkodzi dolozyc to samo na tym konwerterze RS232.
    Jak dlugie masz kable laczace to w calosc, przewody zasilajace w szczegolnosci?
    Czy mozesz zasilic to do testow z zasilacza linjowego ?
    To ze mozna ja programowac nie swiadczy o tym ze program wogole nie wystartowal, ja w takich sytuacjach dodaje na poczatku programu procedurke ktor mignie np. 2x ta LED i wiadomo ze program ruszyl.
    Jezeli uzywasz kwarcu to przy niepewnym zasilaniu bez tych 22p kondensatorow moga byc cyrki.
    Przelacz sie na probe na RC oscylator.
    Jak juz prosilem i tez koledzy - jaka jest konfiguracja porcesora? (fuse bity!)
    Pozdrawiam
  • Level 10  
    Fuses (hex): D8 23
    Na samym początku programu mam miganie 100x50ms - stad wiem, czy program wisi czy nie.

    A czy mieliście przypadki nieprawidłowego działania Atmegi przy ZBYT WOLNYM wzroście napięcia zasilania? Jeden z wątków: https://www.avrfreaks.net/forum/power-not-running-reset-needs-be-held-low

    Kto wie czy to nie mój przypadek. Napięcie zasilania rośnie rzeczywiście powoli. Nie na tyle żebym mógł to zmierzyć z zegarkiem w ręku, ale zauważyłem że dużo lepiej startuje jeśli wezmę napięcie z już działającego zasilacza.

    Na szybko zmontowałem układ podający napięcie z opóźnieniem. O dziwo - działa wszystko (póki co - ale dopiero co się przestałem parzyć lutownicą). Przy okazji zapytam - czy to poprawny układ? Nie jestem elektronikiem na na hasło "układ opóźniający" w internecie dostaję ofertę włączników schodowych. Schemat w załączeniu.
  • Level 40  
    Witam,
    240sx wrote:
    ...Na samym początku programu mam miganie 100x50ms - stad wiem, czy program wisi czy nie. ...

    jestes w stanie to zauwazyc to dla ludzkiego oka swiecenie ciagle no i masz opoznienie rzedu 5s na starcie.
    Wlasnie od tego masz konfiguracje procesora fusebits, ustawiasz odpowiednie poziomy i opoznienia przy starcie,
    czemu nie dasz kondensatora raczej ukladu RC na Reset? Nie pamietam jakie wymagania ma atmega ale typowo to z 10k do zasilania i 100-470n do masy i masz opoznienie startu.
    Pozdrawiam
  • Level 31  
    240sx wrote:
    Fuses (hex): D8 23

    Jeśli D8 to high fuse to masz RESET VECTOR ustawiony na inny obszar pamięci niż standardowy, a używany zwykle z bootloaderem.
    Tak ma być? Jeśli nie, to ustaw domyślne czyli D9

    Niby BOD masz włączony... a działa chociaż? Atmega przy napięciu np 3V5 powinna być w stanie reset.

    Dla mnie ta atmega jest niepewna, bo masz watchdog który resetuje wystartowaną atmege i nic nie pomaga.

    W rejestrze MCUCSR możesz sprawdzić na starcie programu, co jest powodem resetu.
    .
  • Level 10  
    Problem rozwiązany!

    Przyczyna - ciekawa i wydaje się, że powinna występować dużo częściej: czas narastania napięcia zasilania. W specyfikacji jest napisane: min. 10mV/1ms, czyli pełne 5V musi się pojawić w czasie do 0.5 sekundy.

    Można o tym przekonać podłączając mikrokontroler pod zasilacz o regulowanym napięciu i ręcznie zrobić "wolny start".

    Mój zasilacz, firmowym, stabilny ale napięcie po włączeniu rosło stosunkowo wolno - niemal w oczach.
    Przekaźnik włączany z opóźnieniem ok. 1 sekundy rozwiązał problem.

    Ciekawe jest to, czemu to tak rzadko spotykany problem - tak to przynajmniej wynika z małej liczby jego opisu w internecie. Prawdopodobnie mało kto zasila atmegę z zasilacza 10A :-). Używa się ogniw albo włącza "z guzika" wpiętego pomiędzy kontroler i już wcześniej działający zasilacz.