Jeśli programator nie wykrywa Ci nowego mikrokontrolera to może to być spowodowane jego fabryczną, niską prędkością.
Mikrokontroler ma w sobie pamięć pewnych ustawień. Sam program najczęściej nie może na nie wpływać i żeby je zmienić musimy programatorem zmienić je dokonując zapisu nowych ustawień.
Całkiem nowy mikrokontroler ze sklepu ma pewne ustawienia które możesz chcieć zmienić bo nieco ograniczają Ci pole manewrów.
Takimi ustawieniami mogą być:
CKDIV8 - powoduje podział prędkości zegara przez osiem i nawet jeśli masz wybrane 8MHz to procesor pracuje na 1MHz. Trzeba go wyłączyć jeśli chce się pracować z pełną prędkością.
JTAGEN - włącza interfejs JTAG i nie pozwala w pełni korzystać z portu na którym jest. Na przykład w Atmega32 na porcie C piny oznaczone TDI, TDO, TMS, TCK. Trzeba go wyłączyć jeśli chce się pracować na całym porcie C w Atmega32 i kolejnych wyposażonych w JTAG.
M103C - Nazwa może być niejasna na pierwszy rzut oka. W Atmega128 oznacza włączenie trybu zgodności ze starą Atmega103 (stąd nazwa Mega103Compatibility -M103C). Powoduje wiele zmian. Niedostępne są w pełni wszystkie porty i nie zgadzają się adresy rejestrów więc programy napisane na Atmege128 nie działają właściwie.
Atmega8 ze sklepu przychodzi z ustawioną prędkością 1MHz
Nie każdy ma MkAVRcalculator, i o tym za chwilę, ale dla Atmega8 i Attiny2313 możemy go śmiało użyć w wersji FREE.
Po ściągnięciu uruchamiamy go i przechodzimy najpierw na kartę "Ustawienia". Na dole klikamy "dyskietkę Instaluj" i w nowym oknie dialogowym wybieramy "Utwórz nowy folder" i tworzymy go na dysku C pod nazwą AVRDUDE (bez żadnych spacji ani polskich ogonków).
Dla przykładu użyję ATmega328P często potrzebna ARDUINO`wcom :P
Możemy użyć darmowego programu BURN-o-mat.
Po instalacji trzeba mu na karcie ustawień pokazać gdzie mamy zainstalowany Avrdude. Dobrze jest mieć Avrdude w folderze bezpośrednio na dysku C. Folder w nazwie nie powinien mieć polskich znaków ani spacji. Po co sobie utrudniać. Nazwij folder AVRDUDE. W ustawieniach trzeba wskazać dwa pliki avrdude.exe i avrdude.conf, wybrać swój programator i dla najbardziej popularnego USBasp dopisać parametr spowalniający transmisję
Po wpisaniu parametru "-B 8" (minus B osiem) klikamy Apply i po wyjściu w ustawień wybieramy nasz mikrokontroler ATmega328P po czym klikamy "Fuses"
Zauważ że na dole w linii komend powinien już być dopisany parametr -B 8
Teraz bardzo ważne jest, żeby najpierw odczytać konfigurację z mikrokontrolera.
Nie zmienia się niczego dopóki nie uda się poprawnie odczytać konfiguracji. Częściowo można to rozpoznać po zahaczonych jub odhaczonych ptaszkach w polach wyboru. Nie może być tak że wszystkie są zaznaczone lub wszystkie są odznaczone. Powinny być zróżnicowane.
Jeśli tak jest to szukamy pola wyboru CKDIV8 i odznaczamy je.
Nie zmieniamy żadnego pola wyboru oznaczonego czerwonym kolorem. Jeśli mamy odznaczony ptaszek to możemy nacisnąć "Write Fuses". Po odłaczeniu mikrokontrolera na moment od zasilania powinien już uruchomić się z wybrana przez nas większą prędkością
Wyjaśnię krótko o co z nim chodzi.
Prędkość połączenia programatora nie powinna być szybsza niż jedna czwarta prędkości mikrokontrolera.
Jeśli więc pracuje on z fabryczną 1MHz to prędkość sygnału SCK dla programowania nie może być szybsza niż 250kHz.
1MHz = 1 000 000, 1000000 / 4 = 250 000, 250 tyś to 250 kHz
Parametr -B8 wybiera więc takie spowolnienie by prędkość nie przekroczyła 250kHz.
To samo tyczy się BASCOM`a. Poniższy obrazek pokazuje że nowy mikrokontroler nie został poprawnie wykryty.
Tutaj, po wybraniu wolniejszej prędkości bezproblemowo program wykrył podłączony mikrokontroler.