Zakupy
Okazało się, że aby zaprogramować mikrokontroler nie trzeba nic kupować poza tym co mam czyli:- płytka stykowa
- arduino uno r3
- trochę kabelków
Programowanie
Informacji o tym jak zaprogramować mikrokontroler zacząłem szukać na stronie http://majsterkowo.pl, a konkretnie od artykułu Programowanie ATmega8A oraz ATmega328P za pomocą Arduino. Wywnioskowałem z niego, że po pierwsze to muszę mieć bootloader, który później wgram. W artykule były linki do bootloaderów do dwóch innych kontrolerów, ale nie do atmega16 którego posiadałem. Zacząłem więc przeszukiwać internet w celu znalezienia odpowiedniego bootloadera i ... nie znalazłem.Poprosiłem więc o pomoc na forum Majsterkowa - patrz wątek. Już po niecałych 24h dostałęm odpowiedź od kolegi czaja000. Wskazał mi artykuł z rozwiązaniem mojego problemu. Artykuł był ... tuż obok poprzedniego. Pod latarnią najciemniej :)
Podłączenie kabelków
Zmontowałem układ wg schematu:Schemat połączeń |
posiłkując się przy tym artykułami Programowanie mikrokontolerów na przykładzie ATTINY2313 oraz Opis wyprowadzeń Atmega16/Atmega32.
Dodanie definicji kontrolera do arduino ide
Postąpiłem zgodnie z zaleceniami artykułu Programowanie ATmega bez bootloadera. Czyli na stronie http://www.engbedded.com/fusecalc wybrałem z combo atmega16, zmieniłem domyślne taktowanie wewnętrznego zegara z 1Mhz na 16 MHz i wpisałem do pliku hardware\arduino\boards.txt sekwencjęatmega16.name=ATmega16 (internal 8 MHz)
atmega16.bootloader.low_fuses=0xe4
atmega16.bootloader.high_fuses=0x99
atmega16.upload.maximum_size=16384
atmega16.build.mcu=atmega16
atmega16.build.f_cpu=8000000L
atmega16.build.core=arduino
atmega16.build.variant=standard
Wgranie bootloadera
Następnie po wybraniu z menu Narzędzia/Płytka "ATmega16 (internal 8 MHz)" oraz z menu Narzędzia/Programator "Arduino as ISP" spróbowałem wgrać bootloader. Niestety dostałem jakiś komunikat o błędzie. Okazało się, że IDE w wersji 1.5.2, którego używałem nie działa. IDE w wersji 1.0.4 zadziałało jednak bezbłednie i bootloader został wgrany.Wgranie programu
Jako program do przetestowania postanowiłem wgrać mój programik do testowania wyświetlacza LED (patrz wpis Podłączanie wyświetlacza LED). Pozmieniałem tylko w wyświetlaczu piny na 0, 1, 2 i wgrałem program, który wyświetla na LED po kolei cyfry od 0 do 9.Działanie widać na obrazkach poniżej.
Zdjęcie działającego układu |
Ostatnim krokiem było wgranie do arduino z powrotem programu do monitorowania temperatury i przekonanie się, że jestem w stanie oddzielne programy na obu kontrolerach uruchamiać. Zadziałało bez problemu :)
Przydatne linki
Oto lista linków z których korzystałem:- Artykuł jak programować kontrolery
- Artykuł jak wgrać bootloader do atmega16 - czyli jak zaprogramować kontroler bez bootloadera
- Strona do wyznaczania fuse bitów
- Opis wyprowadzeń atmega16/atmega32
Kolejny krok
Dowiedzieć się jak po rs232 się komunikować z komputerem i przenieść aplikację do monitorowania temperatury na atmega16.Wykonanie planu
uruchomić całość na Linuksie- wymienić CoolTerm.exe na coś innego
uruchomienie cu w celu odczytu danych- poradzić sobie z problemem ekstra danych wypisywanych przez cu
- zacząć odczytywać czas z zegara serwera
- zrobić stronę www i wystawić na zewnątrz
uruchomienie rrdtoolprzeniesienie, modyfikacja skryptówsprawdzenie czemu na wykresach brakuje danych- połączenie z cu
- automatyzacja
- wystawienie na serwerze
- zmontować układ, a aby to zrobić to trzeba:
wybrać docelowy mikro-kontroler - i zakupić godowiedzieć się jak się go programuje i zmontować programator - i zakupić co potrzebazaprogramować kontroler- dowiedzieć się jak najlepiej zmontować docelowy układ (skąd płytkę itp) i zmontować - a wcześniej zakupić co potrzeba
- dowiedzieć się czy i jakie peryferia są potrzebne (kwarc, zasilanie, komunikacja z komputerem po rs232) - zakupić potrzebne
- jakąś obudowę do tego dobrać - i znaleźć lub zakupić
Legenda
wykonane- do zrobienia
- nowe zadanie lub podzadanie
- aktualnie robione
Na pewno tu warto stawiać na takie rozwiązania
OdpowiedzUsuń