Jak ustalić, czy nowy mikrokontroler jest uszkodzony?

11

Nigdy nie miałem do czynienia z częściami będącymi wadliwymi cieśninami od digikey, ale 3 nowe Atmel ATmega164A, które otrzymałem, wykazują bardzo dziwne zachowanie.

Zawęziłem go do czegoś związanego z zegarem i okazało się, że wynikowy sygnał zegarowy z rzekomo „fabrycznie skalibrowanego” wewnętrznego oscylatora drga między 650-700 kHz zamiast solidnego 1 MHz, jaki powinien być. Byłem w stanie zapisać bajt kalibracyjny, aby uzyskać to bardzo blisko 1 MHz (nadal z pewnym drganiami) i większość rzeczy działa, ale UART po prostu nie zachowują się prawidłowo, wydają się wytwarzać ciągły strumień krótkich impulsów bez względu na to o co ich poprosisz.

Miałem wcześniej do czynienia z wersją tego mikrokontrolera o niskiej mocy (164P) z zerowymi problemami i postanowiłem go upuścić na miejscu i sprawdzić na nim wyjście zegara, a także jego solidny 1 MHz bez zakłóceń. Przechylam się do wniosku, że te układy 164A są wadliwe, ale czy byłyby jakieś inne testy, które mógłbym to potwierdzić?


Edycja: Pomyślałem, że opiszę proces, według którego mierzę zegar. Włączyłem bit bezpiecznika wyjściowego zegara i zmierzyłem odpowiedni pin przy pomocy próbkowania analizatora logicznego z bardzo dużą szybkością. Mam program, który zapisuje się w rejestrze kalibracji OSCCALi byłem w stanie przetestować i naprawić moją drogę do 1 MHz.


Edycja # 2: Po dalszych badaniach wydaje się, że mikrokontroler zaczyna działać po określonym rozmiarze programupróg. Projekt z otwartymi kośćmi, w którym pojedynczy plik źródłowy miga diodą LED, wydaje się być w porządku, ale kompilowanie i łączenie w dowolnym innym moim pliku (powiedzmy w bibliotece UART itp.) Bez wywoływania funkcji do tych metod powoduje, że mikrokontroler zachowuje się w opisane zachowanie powyżej. Połączenia zasilania są w porządku i zastosowano właściwe odsprzęganie. W tej chwili nie mam czasu na debugowanie, więc zamiast tego wybraliśmy wersję o małej mocy. Nie jestem pewien, gdzie dokładnie może być problem 1) 164A i 164P nie są kompatybilne z kodem 2) Procedura programowania jest inna dla tych dwóch komputerów uC 3) Jednostki są wadliwe. Jestem przekonany co do projektu naszej płyty i wykluczę problemy z zasilaniem. Niestety, nie mogę naprawdę wybrać prawidłowej odpowiedzi, więc pozostawię to pytanie bez zmian - może „ Wrócę do problemu w przyszłości. Dzięki wszystkim, którzy dostarczyli wnikliwe komentarze lub odpowiedzi, mogą być przydatne innej osobie z problemami związanymi z UC.

Jon L.
źródło
Nie bezpośrednio związane z twoim pytaniem, ale warte wspomnienia. Wielu producentów układów scalonych ma stronę Errata, którą publikują, gdy znajdą błędy w niektórych wersjach krzemowych. Kilka razy złapał mnie znany błąd, który był w błocie, którego nigdy nie sprawdziłem. Zwykle nie są to rzeczy tak duże, jak zegar, który nie działa i zwykle mają trochę do zaoferowania. Ale w twoim przypadku nie jest znana errata.
Kellenjb
1
@jon, jeśli wersja o wyższej mocy jest zepsuta, a wersja o niższej mocy działa, istnieje szansa, że ​​nie rozdzielisz dobrze obwodu i masz problemy z integralnością zasilania.
Kortuk
@Kellenjb, „Brak znanej erraty” dla tego modelu w arkuszu danych (pojawia się najnowszy arkusz danych, 06.11). Z pewnością warto o tym wspomnieć, ale dziękuję.
Jon L
@Jon Tak, to właśnie rozumiałem przez „Ale w twoim przypadku nie jest znana errata”.
Kellenjb
1
Popieram to, co powiedział Kortuk. Pachnie mi to jako problem z zasilaniem lub odsprzęganiem.
Olin Lathrop

Odpowiedzi:

3

Tego rodzaju porażka rzadko występuje. Możesz spodziewać się, że zobaczysz nieco więcej szumu na szpilce lub że ten pin będzie zupełnie niefunkcjonalny. Ale posiadanie go „trochę działa, ale nie w użyteczny sposób” jest rzadkością. Podejrzewam, że są problemy projektowe, które powodują problemy, i mają coś wspólnego z różnicą między 164A i 164P. Ponieważ jitter jest wysoki, patrzę na rzeczy związane z mocą. Czy wszystkie piny zasilania / gnd są podłączone? Czy styki we / wy są napędzane, wyciągane wysoko lub nisko? Itp.

Ale nadal istnieje możliwość, że części są złe. To rzadkie, ale nie niespotykane. Jedynym prawdziwym sposobem na to jest zdobycie kilku części od innego dostawcy i wypróbowanie ich. Jeśli działają, musisz zbadać dalej i sprawdzić, czy zabiłeś ich podczas obsługi / lutowania lub czy naprawdę pochodzą od Digikey źle.


źródło
2
Potrójnie sprawdzę wszystko, kiedy będę miał okazję. Ja też jestem sceptycznie nastawiony do własnych wniosków, pomysł, że nie zostanie on złapany w fabryce lub szansa, że ​​został uszkodzony podczas przejścia, wydaje się bardzo mało prawdopodobny ... przekaże raport.
Jon L
pod względem połączeń wszystko się sprawdza. Przeredaguję pytanie, aby podać więcej szczegółów ...
Jon L
2

Kiedyś miałem bardzo podobny problem z podstawowymi częściami Microchip. Mieliśmy problemy z programowaniem ICSP i znaleźliśmy sposób na usunięcie trymera oscylatora, powodując poważne błędy w dokładności wewnętrznego zegara. Upewnij się, że urządzenie programujące i / lub narzędzia programujące są prawidłowo podłączone i są używane poprawnie.

Nie ma łatwego sposobu zweryfikowania dokładności oscylatora bez programowania części, więc po prostu napisałbym trywialny program do przełączania portów (taki, który nie robi nic poza poruszaniem linii we / wy) i kazał komuś innemu zaprogramować części, najlepiej z innym sprzętem do programowania. Po zweryfikowaniu poruszenia można ponownie wykonać flashowanie własnym kodem i sprawdzić, czy problem nadal występuje.

Adam Lawrence
źródło
Włączyłem bit bezpiecznika wyjściowego zegara, który umieszcza sygnał zegara na pinie PORTB. To właśnie próbuję, aby określić dokładność oscylatora / zegara. Dokładnie sprawdzę proces programowania i narzędzia, dzięki.
Jon L