niedziela, 3 kwietnia 2011

ERRATY - Utrapienie elektroników


Autor: Dondu

Jeżeli sądzisz, że producenci nie mają problemów z produkcją swoich mikrokontrolerów, to jesteś w błędzie :-)

Czasami możesz spotykać się z problemami, dot. wad niektórych wersji lub wręcz partii konkretnego mikrokontrolera. Każdy taka wada jest opisana w dokumencie zwanym Erratą.

Erraty wskazują na odstępstwa od dokumentacji podstawowej (datasheet) mikrokontrolera, opisując wady lub podając inne ważne informacje. Poniżej przykłady takich problemów opisanych w erratach.


Parę informacji praktycznych:

  • czasami erraty są publikowane jako osobne dokumenty, a czasami są one zawierane w nowej wersji datasheet danego mikrokontrolera,
  • niektórzy producenci (np. Microchip) umożliwiają zapisanie się do newslettera konkretnego mikrokontrolera, by dostawać informacje natychmiast, gdy pojawi się jakiś dokument jego dotyczący.





Przykład: ATmega8

Erraty zawarte są w datasheet tego mikrokontrolera w osobnym rozdziale Errata. Jest tam wiele kolejnych errat dotyczących poszczególnych partii mikrokontrolera. By pokazać problem wybrałem:




Magiczne słówko REV (ang.: Revision) oznacza partię układu ATmega8 wykonaną w wersji, której numer (znaczek) znajduje się po napisie REV. Patrząc na powyższy fragment erraty możesz zuważyć, że fragment ten dotyczy układów ATmega8 w wersji wykonania od D do I oraz M.

Zobaczmy więc czego Errata dotyczy:




Pierwszy problem jaki spotkamy w układach ATmega8 w/w wersji, to problem, który dotyczy pierwszego pomiaru za pomocą komparatora analogowego w czasie gdy mikrokontroler jest zasilany wolno rosnącym napięciem Vcc. Od razu podane jest proponowane rozwiązanie tego problemu, polegające na wyłączeniu i ponownym włączeniu komparatora przed dokonaniem pomiaru, gdy mikrokontroler właśnie został włączony (zasilanie) lub zresetowany.

Jak widać to mało istotny problem i łatwo go rozwiązać. Inaczej jest już w przypadku drugiego problemu:




Tutaj producent pokazuje, że istnieje możliwość tracenia przerwań podczas gdy wystąpią one w trakcie zapisywania rejestrów timera pracującego w trybie asynchronicznym. To już poważniejsza sprawa, ale rozwiązanie opisane jest.




Trzeci problem z punktu widzenia programisty właściwie nie występuje, gdyż do czyszczenia mikrokontrolera używa programów, które są poprawnie napisane. Ale dla porządku opiszę problem:

Producent zwraca uwagę, że jeżeli podczas czyszczenia pamięci programu mikrokontrolera, przed zakończeniem tej czynności zostanie odczytana sygnatura układu, może ona zostać skasowana, a to już poważny problem.




Czwarty problem jest dość istotny z punktu widzenia projektu, który wykorzystuje Timer/Counter2 do pracy asynchronicznej z zewnętrznym kwarcem 32,768kHz. To najczęściej dotyczy projektów, w których odmierzany jest czas, czyli zegarków, itp. Opisany problem polega na tym, że jeżeli taki kwarc podłączasz do wejść TOSC1 i TOSC2, a jednocześnie korzystasz z wewnętrznego oscylatora RC do napędzania mikrokontrolera, to niestety nie można włączyć wewnętrznych kondensatorów kwarcu 32,768kHz.

Rozwiązaniem jest dołożenie tych kondensatorów na zewnątrz mikrokontrolera, co dokładnie opisane jest we fragmencie erraty pokazanym powyżej.


Erraty mogą i często dotyczą parametrów elektrycznych i innych. W datasheet ATmega8 możesz znaleźć listę zmian (rewizji):



... i tak dalej :-)





Przykład: PIC18F67K90

Microchip poszedł w inną stronę niż Atmel publikując erraty jako osobne dokumenty. Przykładem takiej erraty jest Errata B dla PIC18F67K90: Zobacz erratę

Znajdziesz w niej sporo odstępstw od datasheet tego mikrokontrolera, dokładnie opisane. Pozwoli Ci to na stwierdzenie, czy i na ile są one dla Ciebie ważne, oraz podjęcie decyzji, czy dany mikrokontroler możesz wykorzystać czy nie.





Daty i inne pułapki

Internet ma to do siebie, że jak już coś dopadnie, to to coś żyje swoim życiem. Nie inaczej jest z datasheet-ami oraz erratami. Z jednej strony to dobrze, bo można znaleźć archiwalne wersje dokumentów, ale z drugiej może powodować problemy, gdy bezkrytycznie podejdzie się do daty dokumentu.

Krótki opis przypadku:

Początkiem lutego 2012 roku przeczytałem poradę kol. K.G., który udzielił jej w tym dniu na jednym z forów pewnemu początkującemu fanowi mikrokontrolerów:

K.G.
Z tego, co się orientuję ATmega8 ma cztery kanały 10bitowe i dwa 8 bitowe – chyba, że jest to ATmega8A.

Ponieważ porada była niedokładna zabrałem głos i po małej konwersacji okazało się, że kol. K.G podpowiadając na forum korzystał z dokumentu, który był nieaktualny od 8 lat (!). I bynajmniej nie była to błahostka. Porównaj jakie informacje zawierały dokumenty dotyczące tego samego mokrokontrolera w różnym czasie:


Jak widzisz różnica dotyczyła tego, że w datasheet z grudnia 2003 roku, ATmega8 zawierała ADC, gdzie część kanałów miała rozdzielczość 10 bitów, a dwa kanały tylko 8 bitów (tak też zapamiętał to kol. K.G.). Ale w datasheet z lutego 2011 roku wszystkie kanały mają 10 bitową rozdzielczość.

Jak to możliwe? Kiedy ta zmiana nastąpiła?

To właśnie przeklęte (albo zbawienne) erraty. W aktualnym datasheet znaleźć można bowiem wszystkie erraty od początku tego mikrokontrolera. Znajdujemy więc tam informacje, że we wrześniu 2004 roku, układ został dopracowany i od tego czasu ADC ma na wszystkich kanałach 10 bitową rozdzielczość:



Spis wersji datasheet ATmega8
Co więcej w spisie treści jest lista wszystkich wersji tego dokumentu, pokazująca kolejność zmian. W ten sposób można prześledzić wszystkie zmiany i poprawki, których producent mikrokontrolera dokonał.


Jaki z tego morał?
Zawsze zaglądaj do najnowszych dokumentów i szukaj ich na stronach producentów. Z tego samego powodu warto kupować najnowsze książki, by nie uczyć się wiedzy sprzed 8 lat.

K.G.
... Książka ta została napisana w roku 2004 i autor tych informacji nie wyssał z palca.

Oczywiście autor książki 8 lat wcześniej podał właściwe informacje, ale od tego czasu było 13 nowych datasheetów z erratami (stan na rok 2012) dla tego mikrokontrolera, a produkowane aktualnie mikrokontrolery znacznie się różnią od tych samych z 2004 roku :-)





Podsumowanie


Jak widzisz Erraty mogą dotyczyć, bardzo różnych problemów, które mogą Ciebie dotknąć, bądź nie. Powinieneś więc wyznawać zasadę:


Zawsze sprawdzaj erratę zanim wykorzystasz 
wybrany przez Ciebie mikrokontroler. 


Wykorzystuj datasheet i erraty 
tylko ze strony www ich producenta.


by później nie być zaskoczonym, i nie dostać podpowiedzi na forum:

albert2004
Otrzymywany przez Ciebie kod błędu został opisany w erracie do tego układu (rewizja A0/A1). Sprawdź to w dokumentacji ...


Na dokładkę ... erraty dotyczą nie tylko mikrokontrolerów :-)

1 komentarz: