Przykłady w książce "Mikrokontrolery dla Początkujących" wykonane zostały z zastosowaniem mikrokontrolera AT90S2313 lecz niestety jakiś czas temu procesor ten został wycofany z produkcji a Firma Atmel w zamian udostępniła udoskonaloną jego wersję ATtiny2313. Procesory różnią się tylko nieznacznie i dla początkującego programisty różnica będzie niezauważalna pod warunkiem prawidłowej konfiguracji.
Zaczynając moją przygodę z mikrokontrolerami oczywiście zakupiłem płytkę uruchomieniową z procesorem AT90S2313 i po pewnym czasie gdy zacząłem pisać bardziej zaawansowane programy podłączając do niej urządzenia wyjściowe przez głupi błąd udało mi się uszkodzić procesor. Chciałem kupić identyczny ale okazało się, że AT90S2313 ze względu na to że już go nie produkują kosztuje 35 PLN, podczas gdy jego następca ATtiny zaledwie 4,99 PLN.
Cóż, nie było rady trzeba było zakupić ATtiny ale niestety po podłączeniu nic nie mogłem z nim zrobić i zacząłem szukać informacji jak go skonfigurować tak by działał jak AT90S2313.
Informacje oczywiście znalazłem, jest ich kilka i dlatego by inni nie mieli już takich problemów jak ja wszystko dokładnie opiszę:
1. Oprogramowanie.
Sprawa pierwsza to odpowiednia wersja programu Bascom AVR. Pan Piotr Górecki do przedstawionych w książce ćwiczeń zaleca starszą wersję programu, niestety jeśli dysponujecie procesorem attiny konieczna jest wersja nowsza. Ja stosuję wersję 1.11.8.3, którą można pobrać ze strony MCS Elektronics.
2. Konfiguracja programu.
Po uruchomieniu nowej wersji programu i wybraniu z paska narzędziowego okna Opcje oraz dalej zakładki Compiler/Chip powinniśmy na rozwijanej liście znaleźć nasz procesor i oczywiście go wybrać.
3. Bity konfiguracyjne procesora (fuse bit)
Kolejna kwestia to konfiguracja samego procesora, nasz bohater ma kilka tzw. bitów konfiguracyjnych (fuse bits), do których zapisanie zera albo jedynki powoduje włączenie lub wyłączenie odpowiednich jego funkcji. Zmienić będziemy musieli tylko dwa bity: jeden wyłączy wewnętrzny oscylator RC pracujący z częstością 8 MHz, a drugi sprzętowy dzielnik częstotliwości, który dokonuje podziału przez 8.
Jak tego dokonać ? najpierw musimy odczytać z procesora konfigurację jego fuse bitów. Po pierwsze sprawdzamy czy w opcjach, w zakładce Programmer mamy odznaczone okienko Auto Flash tak jak poniżej.
Teraz podłączamy mikrokontroler i uruchamiamy do edycji jakiś prosty programik, kompilujemy (F7) i próbujemy załadować do mikroprocesora (F4). Na ekranie powinno pojawić się okno jak poniżej (po przejściu do zakładki Lock and fuse bits):
Widzimy bieżącą konfigurację bitów procesora, jeśli po przejściu do tej zakładki nie widzimy konfiguracji naciskamy po prawej stronie button Refresh.
W części Fusebits klikamy na linię Fusebit C i z rozwijanej listy obok wybieramy 1: Divide clock by 8 disabled - wyłączamy sprzętowy dzielnik, oraz Fusebit A987 i znów z listy wybieramy przedostatnią pozycję 1110:1110 external XTAL - wyłączamy sprzętowy oscylator RC i informujemy procesor, że sygnał zegarowy musi pobierać z zewnętrznego kwarcu. Okno powinno wyglądać jak poniżej:
Teraz naciskamy przycisk Write FS po prawej. Jeśli zewnętrzny kwarc jest odpowiedni i prawidłowo podłączony (w zestawie AVT 3500 napewno tak jest) to ponowna identyfikacja powinna odbyć się bez problemu - naciskamy Refresh.
Musimy pamiętać by nie zmieniać żadnych innych bitów - możemy całkowicie stracić możliwość jakiejkolwiek komunikacji z procesorem - będzie można odblokować go dopiero specjalistycznym programatorem.
4. Kod w programie.
Ostatnia sprawa to delikatna modyfikacja każdego kompilowanego w środowisku Bascom programu. Wystarczy w dwóch pierwszych linijkach dopisać dwie deklaracje: częstotliwość pracy zewnętrznego oscylatora oraz dane procesora.
Po wykonaniu tych czynności procesor powinien działaś jak 90S2313, przynajmniej w aplikacjach, które wykonywałem. Jeśli się okaże, że są jeszcze jakieś różnice na pewno o nich napiszę.