Czy zdarzyło Ci się kiedykolwiek, że Twój układ nie działał poprawnie pomimo tego, że wszystkie, zawarte w nim, układy scalone zastosowałeś zgodnie z dokumentacją (datasheet) i zaleceniami producenta? 🤔

Wyobraź sobie sytuację, w której projektujesz swoje urządzenie. Zaciekle poszukujesz w internecie tego jedynego układu scalonego, lub mikrokontrolera, który idealnie będzie pasował do Twojego urządzenia, rozwiązując tym samym większość problemów projektowych. Znajdujesz go! Otwierasz dokumentację znajdując w niej wszystkie niezbędne informacje odnośnie jego zasilania, stosowania odpowiednich kondensatorów oraz innych niezbędnych elementów zewnętrznych. Dodajesz odpowiedni element do Twojego programu EDA, wrysowujesz go w płytkę PCB, a następnie zlecasz produkcję prototypu. Lutujesz prototyp, wgrywasz odpowiedni program (jeśli urządzenie tego wymaga) i podłączasz zasilanie do urządzenia.

Na końcu tej historii okazuje się, że prototyp nie działa 😠 (Następne kroki wykonujesz w losowej, chaotycznej kolejności). Wykonujesz kilka pomiarów napięć zasilających na pracującej płytce – są poprawne. Zaczynasz więc poszukiwania błędu gdzieś głębiej. Sprawdzasz jeszcze raz schemat oraz dokumentacje użytych układów scalonych. Wszystko wydaje się być prawidłowo narysowane i obliczone. Dla pewności sprawdzasz czy nie popełniłeś jakiegoś błędu na samej płytce PCB – tu również wydaje się być poprawnie. Sprawdzasz więc napisany przez siebie program (jeśli w ogóle był tu potrzebny) – również jest w pełni poprawny, napisany w zgodzie z dokumentacją producenta.

I co dalej? Wszystko wydaje się być zrobione poprawnie, ale urządzenie nie działa? 😕 Zaczynasz wątpić w powodzenie całego projektu oraz w swoje możliwości. Nie jesteś w stanie wykryć błędu… Czy jest coś co mógłbyś zrobić?

W przypadku kiedy sprawdziłeś już wszystko powyższe i problem nie został rozwiązany, zdecydowanie powinieneś poszukać na stronie producenta dokumentu, który nazywany jest erratą.

Czym jest errata?

W kontekście układów scalonych, errata jest to spis błędów jakie występują w produkcie (układzie), które zostały wykryte po jego wyprodukowaniu i rozprowadzeniu na rynku.

Byłeś do tej pory przekonany, że każdy układ scalony jest perfekcyjny w momencie, w którym pojawia się na rynku? Żyłeś w błędzie. Układ scalony jest projektowany przez inżynierów, którzy również popełniają błędy – i to częściej niż myślisz!

Erraty mogą występować dla każdego z układów, które używasz, lecz najczęściej spotkasz je w dokumentacji mikrokontrolerów – ponieważ w ich wnętrzu kryje się skomplikowana siatka połączeń między elementami składowymi.

Gdzie szukać erraty?

Errata, dla projektanta elektroniki, jest dokumentem tak samo ważnym jak datasheet (dokumentacja/opis techniczny) – i z tego powodu znajdziesz ją zazwyczaj tam gdzie umieszczony jest datasheet.

Dla przykładu posłużę się dość popularnym układem ATmega328. Przechodząc na stronę produktu, w zakładce Documents znajdziesz dokument o nazwie ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet, który jest dokumentacją techniczną, do której z pewnością nie raz zaglądałeś, projektując swoje urządzenie. Bezpośrednio pod nim znajduje się errata – czyli dokument o nazwie ATmega48A/PA/88A/PA/168A/PA/328/P Silicon Errata and Data Sheet Clarification. To właśnie w nim znajduje się opis wszystkich znalezionych błędów, które mogą dotyczyć wszystkiego.

Gdzie znajduje się Errata
Rys. 1. Errata znajduje się bezpośrednio pod dokumentacją techniczną.

Co znajduje się w erracie?

Errata dla układu ATmega328 ma 11 stron – i jest stosunkowo krótka. Bez większego problemu znajdziesz układ, którego errata będzie miała kilkadziesiąt stron, a nawet więcej. Im bardziej skomplikowany układ, tym większa szansa na dłuższą erratę.

Na rysunku 2 widnieje wycinek z erraty, na którym możesz zauważyć wszystkie najistotniejsze elementy. W tym przypadku jest to opis błędu znalezionego w komparatorze analogowym. Jest to sprzętowy błąd, powodujący, że bit ADCSRB jest zawsze ustawiony na “1”, podczas gdy bit MUX3 w rejestrze ADMUX jest ustawiony na “1”. Jest to coś co wprost nie wynika z dokumentacji technicznej, a nawet jej przeczy, i może powodować “dziwne” i niewytłumaczalne problemy podczas programowania urządzenia.

W tym przypadku inżynierowie a Atmel’a (teraz już Microchip’a) zaproponowali możliwe “obejście” problemu (Work around w erracie) – wystarczy wyzerować bit MUX3 przed ustawieniem komparatora (ACME). Jest to błąd, który może, ale nie musi powodować problemów w Twoim urządzeniu – w zależności od tego w jaki sposób wykorzystujesz mikrokontroler. Musisz również pamiętać, że w erracie znajdziesz czasami błędy bez sugerowanego rozwiązania – wtedy musisz radzić sobie sam.

errata - przykład 2
Rys. 2. Wycinek erraty układu ATmega328.

Czy każdy układ zawiera błędy?

Nie każdy z układów, które kupisz w sklepie jest obarczony, opisanymi w erracie, błędami. Błędy te dotyczą konkretnych rewizji układu. Po wypuszczeniu układu na rynek, błędy są naprawiane i w następnej serii produkcyjnej zostają usunięte – układ taki oznaczony jest konkretną rewizją. W erracie przedstawione jest to w poniższy sposób.

errata - konkretne urządzenia
Rys. 3. Rewizje układu obarczone błędami produkcyjnymi.

Podsumowanie

Errata jest bardzo ważnym dokumentem, który w wielu sytuacjach może uratować Twój niedziałający projekt. Warto więc do niej zaglądać! Mam nadzieję, że ten wpis uświadomi Ci, że układy scalone nie są idealne i należy sprawdzać czy ich zastosowanie nie przyniesie Ci jakichś problemów.