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.
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.
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.
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.