
Atmega fusebit doctor, jak sama nazwa mówi, to urządzenie do naprawienia nieumiejętnie przestawionych fusebitów w mikrokontrolerach z rodziny AVR. Największymi problemami jest ustawienie nieprawidłowego źródła zegarowego (fusebity CKSEL), wyłączenie programowania SPI (fusebit SPIEN), lub ustawienie pinu reset w tryb I/O (fusebit RSTDISBL). To proste urządzenie w ułamek sekundy naprawi mikrokontroler nadając mu ustawienia fabryczne.
O ile w pierwszym wypadku można poratować się generatorem zegarowym lub generatorem RC/kwarcowym, to w drugim i trzecim przywrócenie mikrokontrolera do życia nie jest możliwe przy pomocy programatora szeregowego SPI. Mało osób decyduje się na budowę programatora równoległego, a to dla tego że jest niewygodny w użyciu, a to dla tego że taniej kupić nowy mikrokontroler niż się bawić w jakieś naprawy.
Przedstawiane urządzenie wykorzystuje możliwość programowania równoległego (oraz szeregowego od wersji 2.03) wysokonapięciowego. Urządzenie jest niezwykle proste i tanie w budowie, wystarczy tylko ATmega8 w roli doktora, dwie diody LED, zworka, stabilizator, tranzystory. W pamięci zapisano sygnatury 96 mikrokontrolerów AVR oraz ich fabryczne fusebity, wystarczy włożyć w podstawkę "uwalony" uC i wcisnąć przycisk START a układ wykona żądaną operację i nasz pacjent zostanie przywrócony do życia. Cały zabieg trwa ułamek sekundy.
Na płytce głównej znajdują się trzy gniazda, dla procesorów zgodnych pinowo z atmega8, atmega16, i attiny2313 czyli takich najpopularniejszych. Dodatkowo na płytce znajduje się złącze goldpin żeńskie z wyprowadzonymi wszystkimi potrzebnymi sygnałami, do podłączania adapterów:
“#1 HVPP adapter” jako rozszerzenie HVPP dla procesorów kompatybilnych z 20pin Attiny26 oraz 40pin Atmega8515
“HVSP adapter” dla procesorów HVSP 8pin oraz 14 pin attiny, których nie można programować równolegle z powodu zbyt małej ilości pinów.
Istnieje możliwość wykonania własnych dodatkowych adapterów pod inne rodzaje procesorów w obudowach DIP czy też SMD. Nie trzeba jednak wykonywać adaptera aby naprawić jeden procek, można to zrobić przy pomocy płytki stykowej łącząc sygnały z odpowiednimi pinami. Jak? Zajrzyj do noty katalogowej twojego AVRa, przejdź do "memory programming" a następnie "parallel programming" - nazwy sygnałów i pinów jak na tacy. Wszystkie piny są podpisane pod podstawką DIP40, a w załączniku znajduje się też projekt "pustego" adaptera.
Płytka jednostronna, o wymiarach 55mm x 92mm. Na wierzchniej części należy wlutować kilka zworek, lub, płytkę można wykonać także jako dwustronną. Zasilanie 12V stabilizowane. Rezystory R7 do R23 moga mieć wartości od 100 ohm do 1K, proponuję raczej 330ohm. Należy pamiętać że trzy piny bitów z linii danych są także wykorzystywane przez programator ISP do aktualizacji programu - urządzenie nie będzie prawidłowo działało jeśli np podlutujemy się do nich z programatorem. Na płytce dodatkowo znajduje się złącze opisane jako RS232, jest to wyjście UARTa, podłączając się pod nie (38000bps), dowiemy się wszystkiego o przebiegu operacji naprawy - przykładowy zrzut poniżej. Oczywiście terminal nie jest konieczny, wszystkiego dowiemy się z samych diodek


UWAGA! Podczas montażu podstawki DIP40 należy usunąć z niej metalowe złącza od 29 do 37 pinu! Ścieżki przechodzące w tych miejscach nie mogą zostać elektrycznie połączone z pinami włożonego procesora, a biegną tamtędy aby uprościć samą płytkę. Na obrazku poniżej zaznaczyłem które to piny:

Oznaczenia diod:
świeci zielona - fusebity naprawione i zweryfikowane, układ naprawiony. Jeśli jest ustawione zabezpieczenie lockbit, to tylko sprawdza czy fuski odpowiadają fabrycznym, i jeśli tak to także zapali tę diodę.
świeci czerwona - problem z odczytaniem sygnatury, brak układu, lub brak sygnatury w bazie.
migająca zielona - sygnatura odczytana, fusebity się nie zgadzają z fabrycznymi, ale ustawione są lockbity i trzeba zezwolić na wymazanie pamięci aby je naprawić (czytaj dalej).
migająca czerwona - sygnatura odczytana, lockbity wyłączone, ale nie można z jakichś powodów zapisać nowych fusebitów.
Zworka ALLOW ERASE zezwala na wymazanie całej pamięci w przypadku ustawionych Lockbitów (bez ich wykasowania nie jest możliwe przestawienie Fusebitów). Po podłączeniu układu i wciśnięciu przycisku START program inicjuje tryb programowania równoległego, lub jeśli użyto adaptera HVSP - inicjuje tryb programowania szeregowego. Pacjent odpowiada stanem wysokim na pinie RDY/BSY. Pierwszą rzeczą jaką robi doktor to wymazanie całej pamięci jeśli użytkownik na to zezwolił. Po tym odczytuje sygnaturę podłączonego mikrokontrolera i sprawdza czy jest w stanie go obsłużyć. Następnie sprawdzane są lockbity, i jeśli nie blokują dostępu, doktor odczytuje fusebity i porównuje je z fabrycznymi zapisanymi w bazie. Jeśli się różnią, zapisuje te fabryczne, uwzględniając czy dany model pacjenta posiada extended fusebits, czy nie. Są także procesory z tylko jednym bajtem fusebitów i to też jest uwzględnione. Program na końcu weryfikuje ich poprawność i zapala odpowiednią diodę. Informacje przez rs232 są wysyłane na bieżąco.
Program został napisany na podstawie opisu programowania równoległego (oraz szeregowego) zawartego w większości not katalogowych mikrokontrolerów AVR, (memory programming – parallel/serial programming).
Projekt rozpoczęty jeszcze w 2008 roku, ale z braku czasu porzucony, teraz wykonany na nowo.
Fusebity: Wewnętrzny zegar 8MHz, oraz włączony bit EESAVE.
Jako że jest to 2w1 (HVPP i HVSP), 8kB pamięć Atmegi8 okazała się niewystarczająca i nie weszły wszystkie wodotryski…
1.Nie wszystkim procesorom wyświetlają się nazwy po rs232, ale tym najpopularniejszym. Nie ma to jednak żadnego wpływu na pracę układu.
2.Trochę tekstu wysyłanego przez rs232 zostało umieszczone w pamięci EEPROM. Nawet jeśli nie masz zamiaru korzystać z tego wyjścia, MUSISZ zaprogramować eeprom plikiem EEP.BIN lub EEP.HEX! Używanie układu z nie zaprogramowanym lub źle zaprogramowanym eepromem narobi więcej szkód niż pożytku!
Jeśli zapaliła się zielona dioda to możesz mieć 100% pewność że fusebity zostały zresetowane. Jeśli układ nadal nie odpowiada dla zwykłego programatora ISP, to znaczy że ma uszkodzony sprzętowy SPI, posiada inne uszkodzenie, lub xle wgrałeś eeprom. Jeśli zapala się dioda czerwona, jedyną rzeczą jaką możesz zrobić to sprawdzenie co doctor wysyła przez rs232 – wtedy mogę pomóc rozwiązać problem.
Liczba obsługiwanych procesorów: 96
Liczba obsługiwanych w podstawkach: 53
Reszta to obudowy SMD, nie ma dla nich jeszcze adapterów.
Pełna lista obsługiwanych procesorów:
(testowane oznaczone na zielono)
1kB:
AT90s1200, Attiny11, Attiny12, Attiny13, Attiny15
2kB:
Attiny2313, Attiny26, Attiny261, Attiny28, AT90s2333, Attiny22, Attiny25, AT90s2323, AT90s2343
4kB:
Atmega48, Atmega48P, Attiny461, Attiny43U, Attiny4313, Attiny48, AT90s4433, AT90s4414, AT90s4434, Attiny45
8kB:
Atmega8515, Atmega8535, Atmega8, Atmega88, Atmega88P, AT90pwm1, AT90pwm2, AT90pwm2B, AT90pwm3, AT90pwm3B, AT90pwm81, AT90usb82, Attiny861, Attiny88, Attiny85
16kB:
Atmega16, Atmega16U4, Atmega16M1, Atmega161, Atmega162, Atmega163, Atmega164, Atmega164P, Atmega165, Atmega168, Atmega168P, Atmega169, AT90pwm216, AT90pwm316, AT90usb162
32kB:
Atmega32, Atmega32U4, Atmega32M1, Atmega324, Atmega324P, Atmega325, Atmega3250, Atmega325P, Atmega3250P, Atmega328, Atmega328P, Atmega329, Atmega3290, AT90can32
64kB:
Atmega64, Atmega64M1, Atmega649, Atmega6490, Atmega640, Atmega644, Atmega644P, Atmega645, Atmega6450, AT90usb646, AT90usb647, AT90can64
128kB:
Atmega103, Atmega128, Atmega1280, Atmega1281, Atmega1284, Atmega1284P, AT90usb1286, AT90usb1287, AT90can128
256kB:
Atmega2560, Atmega2561
Galeria:





Render Eagle 3D:

Prototyp - Atmega8 czyta sygnaturę i fuski Atmegi32 z uszkodzonym SPI, i wyświetla info na LCD:

Adaptery:




Kompatybilność z podstawkami - czyli co gdzie umieszczamy:







W załączniku wszystkie pliki:
Projekt płytki oraz adapterów (eagle 5.4.0) wersja 2.0d: BRD, SCH, oraz wersje do druku PDF
Kod wynikowy (bascom 1.11.9.0) wersja 2.03: HEX oraz BIN
Obraz eepromu wersja 2.03: HEX oraz BIN
Krótkie objaśnienie dla nie będących w temacie:
HVPP = high voltage parallel programming = wysokonapięciowe programowanie równoległe.
HVSP = high voltage serial programming = wysokonapięciowe programowanie szeregowe.
Czyli metody programowania pozwalające dobrać się do procesora pomimo wyłączonego resetu czy isp, czyli takiego naszego umarlaka. Z programowania szeregowego korzystają procesory z niewielką ilością nóżek, bo ten rodzaj wymaga tylko kilku linii. Z programowania równoległego korzystają procesory które posiadają przynajmniej 20 nóżek, czyli wszystko powyżej tiny2313 włącznie.
Powyższy opis i załącznik zawierają wszystkie aktualizacje, natomiast pełny opis i wszystkie załączniki z różnymi wersjami hardware i software - dla dociekliwych - są dostępne na stronie projektu:
http://diy.elektroda.eu/atmega-fusebit-doctor-hvpp/
Znajduje się tam także spora ilość komentarzy, polecam poczytać w razie problemów, ale tutaj równie chętnie odpowiem o ile znajdę czas. Układ wykonało sporo osób, więc jest przetestowany i działa prawidłowo.
_______________________________
UWAGA AKTUALIZACJA #11 - TUTAJ -
-145 obsługiwanych układów
-wsady dla Atmega88, Atmega88P, Atmega168, Atmega168P, Atmega328, Atmega328P.
-dwustronna komunikacja przez UART, można m.in. wysyłać własne fuski
-duuużo duuużo poprawionych błędów, również na płytce
Skrócona lista zmian i ulepszeń znajduje się w changelogu, ale polecam przeczytać cały temat (raptem 5 stron).
FAQ - najczęściej zadawane pytania i odpowiedzi na nie.
_______________________________
Cool? Ranking DIY