Tania ATmega8 z Chin: podróbka czy okazja?

00

Artykuł publikujemy dzięki uprzejmości Andy’ego Browna, autora bloga AnydsWorkshop.

Ostatnio pracowałem nad projektem z płytką uniwersalną w celu opracowania prototypu. Kupiłem sobie mikrokontroler ATmega328P firmy Farnell – ten sam, który znajduje się na każdej płytce Arduino Uno. Mój pomysł był taki, aby stworzyć firmware wykorzystując ogromną dostępną pamięć Flash 32 kB, a następnie zmniejszyć je do najmniejszego mikrokontrolera, który byłby w stanie je pomieścić.

 

1
Mikrokontroler ATmega328P, którego używałem w prototypowaniu

 

Ugniatanie kodu

Gdy skończyłem pisanie programu, miałem 37 klas umieszczonych w plikach .h oraz .cpp. Rozmiar skompilowanego oprogramowania wyniósł około 12 kB. Największa optymalizacja, którą można wykonać, to przeniesienie wszystkich ciał funkcji do plików nagłówkowych i nadanie im atrybutu inline – jest o modyfikator linkowania i nic poza tym. Jedynie procedury obsługi przerwań oraz definicje PROGMEM  powinny pozostać w plikach .cpp. Gdy całe drzewo wywołań jest widoczne dla optymalizatora, ma on szansę się wykazać, a efekt jest dramatycznie skuteczny. W moim przypadku oprogramowanie zmniejszyło swoją objętość z 12 kB do 7 kB (przy użyciu kompilatora avr-gcc 4.9.2). Teraz mógę je zmieścić w pamięci mikrokontrolera ATmega8.

 

Poszukiwania ATmega8

Następnie zajrzałem na stronę Farnell, aby sprawdzić ceny. Zazwyczaj korzystam z usług tego dystrybutora, bowiem zapewnia on darmową dostawę dla zamówień powyżej 20 GBP i mają kontrolowany, wysokiej jakości łańcuch zaopatrzenia. Cena 2,39 GBP + 20% VAT (w warunkach brytyjskich) za pojedynczy układ ATmega8 16PU w obudowie DIP to dużo, zwłaszcza, gdy za około jednego funta można dostać szybszego i bardziej rozbudowanego STM32F0. Co gorsza, nie miałem też wystarczającej wartości koszyka, aby otrzymać darmową dostawę.

Zawsze twierdziłem, że trzeba być naiwniakiem, aby zamawiać układy scalone bezpośrednio z Chin poprzez serwisy aukcyjne, ale tym razem postanowiłem spróbować. ATmega8 była dostępna u sprzedawców Ali Express w niesamowicie niskiej cenie 4,95 USD za pięć sztuk, czyli niecały dolar za jedną.

 

2

Mikrokontroler ATmega8 pochodzący z paczki importowanej z Chin

 

Nie mogłem się oprzeć i kupiłem opakowanie, które dotarło po około dwóch tygodniach. Nie wiedziałem, czy będą działać. W internecie krąży wiele opowieści o podrobionych układach z Chin, łącznie z mocno nagłośnionym zakupem przez firmę Sparkfun taśmy elementów wyglądających jak mikrokontrolery ATmega, które – jak się okazało – w środku były puste! dokonanym przez pewnych nieszczęśników ze Sparkfun, które następnie chcieli sprzedać. Szczerze mówiąc, nie byłem przekonany do tego pomysłu.

 

Przyjrzyjmy się bliżej

Nie miałem zamiaru tracić zbyt wiele czasu testując układy. Postanowiłem, że jeśli nie zadziałają za pierwszym razem, wylądują w koszu – mój czas jest warty więcej niż dopłata do mikrokontrolerów ze sklepu Farnell.

Pierwszą rzeczą, jaką sprawdziłem pod mikroskopem, były oznaczenia na obudowie. Często podróbki mają podejrzane napisy, nawet z błędami w pisowni. Tak wygląda ATmega328P w powiększeniu 1:1 z pierścieniem pośrednim 67 mm.

 

3

Powiększone logo Atmela na obudowie mikrokontrolera ATmega328P

 

Tak wygląda potencjalnie podejrzana ATmega8 w podobnym powiększeniu. Warto zauważyć, że oznaczenie daty jest podobne, zatem można oczekiwać, że oba układy zostały wyprodukowane w tym samym procesie.

 

4

Powiększone logo Atmela na obudowie mikrokontrolera ATmega8

 

Są podobne, ale z pewnością nie powstały na tej samej maszynie. Wytrawione logo 328P powstało z dwóch równoległych kresek, a w wersji 8 składa się z 3 równoległych kresek.

Co ciekawe i być może znaczące, litera „M” w logu Atmel w wersji 328P ma zakrzywienie w prawym górnym rogu, co odpowiada prawdziwemu logu Atmel sprzed kilku lat. „M” w modelu ATmega8 nie ma takiego zakrzywienia. Ponadto „L” w wersji ATmega8 ma jest wygięte do góry na końcu, czego nie obserwujemy w modelu 328P ani w oryginalnym logo firmy. Firmy przykładają dużą uwagę do swoich logo, a niedokładne odwzorowanie może oznaczać podróbkę.

 

Test – miganie diodami

Najczęstszym testem mikrokontrolera jest program migający diodami LED. To podstawowy test, który bada wewnętrzny oscylator i jeden z peryferyjnych czasomierzy w zaledwie kilku liniach kodu. Przygotowane demo zakłada, że mikrokontroler pracuje na częstotliwości 8 MHz. W swoim teście użyłem do tego celu zewnętrznego rezonatora kwarcowego.

Rzućmy okiem na kod. Po pierwsze musimy sprawić, aby czasomierz pracował z rozdzielczością milisekundową.

 

MilisecondsTimer.h

Do pobrania

O autorze