Szukaj na tym blogu

czwartek, 4 kwietnia 2013

Pierwsza produkcyjna implementacja - programowanie mikrokontrolera

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
No to do dzieła

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:

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 rrdtool
      • przeniesienie, modyfikacja skryptów
      • sprawdzenie 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ć go
    • dowiedzieć się jak się go programuje i zmontować programator - i zakupić co potrzeba
    • zaprogramować 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

1 komentarz: