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

Zakupione 5x ATMega644p, jedna sieja krzaki po UART

MES Mariusz 14 Paź 2016 12:26 1578 25
REKLAMA
  • #1 15994297
    MES Mariusz
    Poziom 36  
    Cześć.

    Zakupiłem w markowej hurtowni 5 Atmeg 644p. Jedna z pięciu zakupionych sztuk sieje krzaki po UART (zamiast tekstu). Na wszystkich uC ustawione identyczne fusebity, zaprogramowane tym samym firmwarem, taktowanie wewnętrzny RC 8 MHz. Po podmianie atmegi na inną sztukę problem znika. Problem ewidentnie występuje w jednej sztuce Atmegi.

    Czy mikrokontrolery podlegają reklamacji?

    Spotkaliście się z czymś takim, że jeden z zakupionych (w markowej hurtowni) mikrokontrolerów nie zachowuje się prawidłowo?

    Pozdrawiam
    Mariusz
  • REKLAMA
  • REKLAMA
  • #3 15994331
    tmf
    VIP Zasłużony dla elektroda
    MES Mariusz napisał:
    Cześć.

    Zakupiłem w markowej hurtowni 5 Atmeg 644p. Jedna z pięciu zakupionych sztuk sieje krzaki po UART (zamiast tekstu). Na wszystkich uC ustawione identyczne fusebity, zaprogramowane tym samym firmwarem, taktowanie wewnętrzny RC 8 MHz. Po podmianie atmegi na inną sztukę problem znika. Problem ewidentnie występuje w jednej sztuce Atmegi.

    Czy mikrokontrolery podlegają reklamacji?

    Spotkaliście się z czymś takim, że jeden z zakupionych (w markowej hurtowni) mikrokontrolerów nie zachowuje się prawidłowo?

    Pozdrawiam
    Mariusz


    Na około piszę - UART w ATMega nie powinien być taktowany z wewnętrznego generatora RC, ze względu na jego niewystarczającą stabilność i dokładność. To, że pozostałe 4 ci działają to przypadek. Wykorzystując w ATMega UART należy wykorzystać kwarc lub co najmniej robić kalibrację RC (i to właściwie każdorazowo po włączeniu urządzenia), a najlepiej kalibrację na bieżąco transmisją UART.
  • #4 15994400
    MES Mariusz
    Poziom 36  
    Dotychczas poskładałem około 15 sztuk i problemów nie było przy 4800, 8n1. Ale biorę do serca, i pomyślę o zmianie w projekcie.
  • #5 15994419
    tmf
    VIP Zasłużony dla elektroda
    Na tym polega właśnie podstępność wykorzystania RC - często działa, a problemy pojawiają się niespodziewanie. W ukończonych układch spróbuj np. podgrzać/oziębić procesor i sprawdź czy transmisja nadal będzie poprawna. Idę o zakład, że nie.
  • #6 15994439
    BlueDraco
    Specjalista - Mikrokontrolery
    Dodatkowo może to być też problem błędnego ustawienia podzielnika zegara transmisji (o jeden za mało), o czym też parę razy była tu mowa.
  • #7 15994634
    Jaca
    Poziom 31  
    Miałem kiedyś taki sam problem z kilkunastoma M644PV. Zanim zrobiłem kalibrator RC to część wylądowała w koszu. ;-)
  • #8 15994640
    piotrva
    VIP Zasłużony dla elektroda
    Rozwiązania są dwa, pierwsze to kalibracja rejestru OSCCAL - dosyć często to pomaga, o ile znamy w jakiej temperaturze będzie pracował uC.
    Ale jak pisali przedmówcy - do takich zastosowań należy bezwzględnie stosować kwarc.
  • REKLAMA
  • #9 15994652
    MES Mariusz
    Poziom 36  
    tmf napisał:
    Wykorzystując w ATMega UART należy wykorzystać kwarc lub co najmniej robić kalibrację RC (i to właściwie każdorazowo po włączeniu urządzenia), a najlepiej kalibrację na bieżąco transmisją UART.


    Kalibracja automatyczna przy starcie, na samym sofcie, bez dodatkowego wzorca - możliwa?
  • #10 15994700
    JacekCz
    Poziom 42  
    MES Mariusz napisał:
    tmf napisał:
    Wykorzystując w ATMega UART należy wykorzystać kwarc lub co najmniej robić kalibrację RC (i to właściwie każdorazowo po włączeniu urządzenia), a najlepiej kalibrację na bieżąco transmisją UART.


    Kalibracja automatyczna przy starcie, na samym sofcie, bez dodatkowego wzorca - możliwa?


    Niektóre mają nawet wewnętrzny termometr (AtTiny85), bo z temperatury -10/+50 to może być dryft do teoretycznie pojedynczych procent różnicy freq RC (oprócz różnic egzemplarza)

    Mam nieukończony projekt na płytce '85 bez kwarcu, jakos to sobie przemyśliwuję (cel: ton o stabilności porównywalnej z muzyką).

    Do czegoś się trzeba odnieść, cudów nie ma.
    Ja sobie zakładam/zakładałem jednorazowe skalowanie egzemplarza w dwóch różniących się temperaturach (można przyjąć liniowość) , skalowanie w jakimś "stanowisku uruchomieniowym", uP sobie współczynniki korekcyjne by zapamiętywał we flashu.

    Nie mam parcia na ten projekt, nie wiem kiedy ukończe. Ale wyzwanie intelektualne jest ciekawe. tzw małe gó... które jest fajnym zadaniem.
  • #11 15994792
    Konto nie istnieje
    Konto nie istnieje  
  • REKLAMA
  • #12 15994815
    Konto nie istnieje
    Poziom 1  
  • #13 15995074
    tronics
    Poziom 38  
    Cytat:
    Prędkość transmisji nie ma wpływu na akceptowalny błąd taktowania.

    Ale wpływa na BER przy tym samym taktowaniu... przez co rozjazd jest mniej zauważalny dla danych kombinacji baud rate, f_cpu i jego odchyłki od wartości nominalnej. Niemniej kwarc, szczególnie "uart-friendly" załatwi sprawę bez kombinowania więc pytanie do autora wątku - "jest li sens komplikować"?
  • #14 15995086
    MES Mariusz
    Poziom 36  
    W płytkach do tej rewizji miałem eksperymentalnie zostawione miejsca na kwarc i kondensatory. Co prawda obudowa się nie zamknie, ale da się w ten sposób potwierdzić lub wyeliminować uszkodzenie Atmegi. Dam znać.
  • #15 15995126
    Konto nie istnieje
    Konto nie istnieje  
  • #16 15995158
    Konto nie istnieje
    Poziom 1  
  • #17 15995312
    Konto nie istnieje
    Konto nie istnieje  
  • #18 16004889
    piotr411
    Poziom 22  
    Tak z ciekawości sprawdziłem na Atmega 8L(seria AU), i co ciekawe na wewnętrznej oscylacji 8MHz "nie działa". W zasadzie działa, tyle, że bitrate jest 20% zawyżony. Sprawdziłem na kolejnych 5szt. We wszystkich błąd jest podobny. Natomiast po odjęciu wspomnianych 20%, wszytko działa bardzo dobrze, czyli jeśli prędkość deklarowana jest 19200, odjecie 20% daje 18816 i przy takiej prędkości działa. Analogicznie dla wszystkich innych prędkości. To taka ciekawostka przy okazji tematu ;)
  • #19 16005028
    kamyczek
    Poziom 38  
    Robiłem uarta na różnych AVR sprzętowo i programowo z generatora RC nigdy nie miałem problemu z tym że błąd ma 20% . Powodem błędu jest nie czytanie dokumentacji mikrokontrolera jak ją przeczytasz będziesz miał tyle ile ma być i na każdym układzie i za każdym razem . Co do kupowania układów kupiłem ich ponad 1000 do tej pory ani jeden nie był wadliwy kupowałem w dużych sklepach które nie sprowadzają towaru z Chin . Czasem w układach są jakieś błędy i coś nie działa tak jak powinno ale problemy są opisane na końcu PDF i łatwo sprawdzić czy układ jest w tej czy nowszej wersji .
  • #20 16006945
    piotr411
    Poziom 22  
    Jeśli zerkniesz do dokumentacji w części dotyczącej "serial". Napisano, że do poprawnej pracy należy stosować zewnętrzne taktowanie. Czyli wszytko co wyżej poprzednicy napisali. Jeśli się upierasz zrobić to bez kwarcu, możesz od żądanej prędkości odejmować 20% lub przed rozkazem wysłania/odbierania ustawiać oscylator.

    Abu ustalić wartość korekcji oscylatora masz program poniżej:

    Kod: VB.net
    Zaloguj się, aby zobaczyć kod


    Obserwuj terminal, w chwili pojawienia się prawidłowego tekstu na końcu będzie widoczna wartość jaką powinieneś ustawić dla OSCCAL
    Wartość OSCCAL powinna mieścić się w przedziale 160-180, wybierasz środkową wartość.

    Czyli można tak:
    Kod: VB.net
    Zaloguj się, aby zobaczyć kod
  • #21 16007905
    piotrva
    VIP Zasłużony dla elektroda
    @kamyczek, niestety ale ja mam inne doświadczenia - często widziałem u ludzi proszących mnie o pomoc z UART'em właśnie taki problem - bo koledze działa na Internal RC, a mi sieje krzaki.
    Każdorazowo pomagało doraźnie OSCCAL.
    A to że kwarc jest zalecany wynika nawet z tego, że są w DS tabele dla standardowych kwarców UART-friendly.
  • #22 16008179
    Konto nie istnieje
    Poziom 1  
  • #23 16008259
    piotr411
    Poziom 22  
    Od 22-100"C nie ma wpływu sprawdzone przez grzanie układu podczas pracy Hot Air'em.
    Sprawdzałem oscylator w w/w przedziale temp i nic nie drgneło. Korekcja wskazywała 164-184
  • #24 16008283
    Konto nie istnieje
    Poziom 1  
  • #25 16008294
    piotr411
    Poziom 22  
    Atmega8 wysyła do PC "Test 1" PC jak odbierze odsyła "OK" paczki idą co 500ms.


    Oczywiście, że sprzętowy UART ma korekcję, tolerancja wynosi 2%

    Mogę zrobić test w drugą stronę czyli 22"C do - 5"C
  • #26 16008339
    Konto nie istnieje
    Poziom 1  
REKLAMA