Programator AVR » SP9XUH - Polska Radiostacja Amatorska >

<-- MENU dla stron PAGU74B -->
 QTH Loc:  JN99WX    ITU: 28    DXZone: 15    Powiat: (M)KR    Gmina: KR11      
   
 
Antena Inverted V na 40 m
Balun prądowy 1:1
Miernik częstotliwości 100 MHz
Wzmacniacz 4 x GU50
Moduł pomiarowy MP-2010 

Informacje o zawartości strony

Wpisz znak

Księga gości

Moje GG

Programator mikrokontrolerów AVR

programator mikrokontrolerów AVR - artykuł

 
   Moja przygoda z mikrokontrolerami firmy ATMEL zaczęła się w 1999 roku od układu AT89C2051. Minęło parę lat, pojawiły się nowe procesory których mój stary programator nie obsługuje. Na początek postanowiłem zbudować prosty programator dla stosowanych w moich konstrukcjach układów Atmega8, 32, 64. Jest to zmodyfikowana wersja bardzo popularnego wśród elektroników urządzenia STK 200 firmy Kanda.

Programator, pomimo prostej konstrukcji, umożliwia wykonanie wszystkich potrzebnych operacji na dołączonym mikrokontrolerze. Możemy odczytywać, zapisywać, kasować, weryfikować pamięć programu i danych a także ustawiać bity konfiguracyjne. Pozwala nam zaprogramować każdy procesor AVR i niektóre układy z rodziny ’51 (np. AT89S8252). Komunikacja odbywa się poprzez port LPT, już trochę zapomniany, ale całkiem nieźle nadający się do tych celów.
Procesory np. ATmega 8, ATmega64 możemy zaprogramować wkładając je do podstawek (28 i 40 nózkowe) zainstalowanych w płytce. Wykorzystując złącze ISP, możemy połączyć programator z układem w którym procesor pracuje i tam go programować.

Schemat ideowy programatora

     schemat

Podstawową część programatora stanowi układ 74HCT244 (U2, 8-krotny bufor 3-stanowy) będący buforem zabezpieczającym z jednej strony port naszego komputera przed przypadkowym uszkodzeniem, z drugiej strony pozwalający mikrokontrolerowi na normalną pracę po zaprogramowaniu bez konieczności odłączania urządzenia od komputera. Rezystor R2 i R3 (100k) wymusza stan wysoki na wejściu bufora, co w przypadku odłączenia programatora od mikrokontrolera, zapobiega stanom nieustalonym. Sygnały MOSI, MISO, SCK, RST poprzez rezystory zabezpieczające R4 – R7 wyprowadzone są na podstawki DIP28 i DIP40, a z rezystorów R8 – R11 do gniazda ISP (G3).Rezonator kwarcowy X1 (16MHz – taką częstotliwość stosuję najczęściej w swoich układach) z kondensatorami C5 i C6 podpięty jest do 12 i 13 nóżki podstawki DIP40 – wejście zegarowe mikrokontrolera.
Układ może być zasilany ze stabilizatora znajdującego się na płytce lub z układu w którym pracuje procesor. W pierwszym przypadku do gniazda G1 podpinamy źródło napięcia stałego lub zmiennego (prostowanego na D1) o wartości ok. 9V. Kondensatory C1 – C4 filtrują napięcie zasilania. Stabilizator to 5 woltowy LM7805. Pobór prądu przez układ jest tak mały, że można w jego miejsce włożyć mniejszą, 100 mA wersję LM78L05. W drugim przypadku, napięcie +5V podawane jest z gniazda G3(2) poprzez diodę D3.

Płytka drukowana programatora

     
  płytka - dół
odbicie lustrzane
  płytka - góra
odbicie lustrzane
   elementy

Płytka zaprojektowana jest jako dwustronna. Ja zrezygnowałem z drugiej warstwy i parę połączeń które znajdują się na górnej warstwie (elementów) wykonałem cienkim drutem w izolacji. Pod układ U1 zamontowałem podstawkę. W podstawkach pod programowane procesory, obcinamy nóżki pod którymi przebiegają ścieżki. G2 to 36-pinowe, kątowe gniazdo drukarkowe DB36.
Uruchamiane układu to praktycznie tylko sprawdzenie czy nie popełniliśmy błędu przy montażu (zwarcia) oraz wartości napięcia zasilania +5V. Po włożeniu układu U2 w podstawkę programator jest gotowy do pracy.


Opis wyprowadzeń złacza ISP

W tabeli przedstawiłem opis wyprowadzeń gniazda ISP Rozkład sygnałów magistrali SPI jest kompatybilny ze standardem firmy ATMEL. Układ w którym znajduje się programowany procesor powinien posiadać złącze w tym samym standardzie. Połączenie programatora z układem wykonujemy za pomocą taśmy 1:1 zakończonej złączami żeńskimi IDC10.

  PIN I/O Nazwa Opis
1  I/O  MOSI   dane odbierane; podłączamy do linii MOSI mikrokontrolera
2  PWR  VTG   napięcie zasilania;  +5V podawane kiedy zasilamy programator z układu
3  NC NC   NC nie podpięte
4  PWR  GND   masa układu
5  I/O  RST   reset;  podłączamy do linii RESET mikrokontrolera
6  PWR  GND   masa układu
7  I/O  SCK   sygnał zegara; podłączamy do linii SCK mikrokontrolera
8  PWR  GND   masa układu
9  I/O  MISO   dane nadawane; podłączamy do linii MISO mikrokontrolera
10  PWR  PWR   masa układu


Programowanie

  Oprogramowania, które obsługuje tego typu programator jest sporo. Najczęściej używam modułu programowania zawartego w środowisku BASCOM AVR. Wykorzystuję także PonyProg i ISP Programmer, które tak samo jak i BASCOM bardzo dobrze współpracują z programatorem. Poniżej przedstawiam parę zrzutów ekranowych z konfiguracji i programowania przy użyciu tych programów. W internecie można znaleźć wiele informacji na ich temat i nie będę wdawał się w ich szczegółowe opisywanie.

BASCOM-AVR

  Wyboru programatora dokonujemy w okienku BASCOM AVR Options. Wchodzimy do niego wybierając z paska menu Options a następnie Programmer, W pozycji Programmer ustawiamy STK200/STK300 Programmer, a w LPT address numer portu do którego jest podłączony programator. W przypadku wystąpienia błędów w programowaniu, możemy wpisując wartości w polu Port delay,  zmieniać opóźnienie na porcie LPT..


Jeżeli program był pisany i kompilowany w tym programie, pozostaje nam tylko wgranie go do procesora. Klikamy na Program w pasku menu, a następnie Send to chip -> Program. Otwiera się okno z trzema zakładkami FlashROM – pamięć programu, EEPROM – pamięć danych i Lock and Fuse Bits – bity konfiguracyjne. Teraz przy pomocy menu Chip lub klikając odpowiednia ikonę wybieramy operację jaka będzie wykonywana na procesorze.
Chcąc wgrać kod utworzony w innym programie musimy go załadować używając polecenia Load from file z menu Buffer. Pamiętać należy o wybraniu procesora jaki będziemy programować – rozwijana lista Chip.

Zakładka z kodem - program


Zakładka z kodem - dane


Zakładka - bity konfiguracyjne


Zwracam uwagę na ostrożne zmienianie bitów konfiguracyjnych, np. odpowiadających za  źródło oscylatora czy pozwalającego na programowanie szeregowe bitu SPEN – Serial programming enabled. Błędne ustawienie tego bitu spowoduje, że program przestanie „widzieć” mikrokontroler i potrzebny będzie programator równoległy.


PonyProg

  W pierwszej kolejności wykonujemy kalibrację programu, wywołując Calibration z menu Setup, Następnie z tego samego menu wybieramy Interface Setup. Pojawia się okienko I/O port setup w którym zaznaczamy Paraller, port do którego podpięty jest programator, a z rozwijanej listy wybieramy Avr ISP I/O.


Okno główne programu


Okno ustawiania bitów konfiguracyjnych.



ISP Programmer

  W głównym oknie programu klikamy na Setup. W okienku ISP Programmer setup,z listy wybieramy STK200/STK300 Evaulation Board, ustawiamy numer portu i klikamy OK. Po naciśnięciu Read signature obok napisu Device signature powinien pojawić się typ podpiętego procesora.


Okno główne programu.


Okno ustawiania bitów konfiguracyjnych.



Pliki do pobrania
avr_prog_sch.pdf schemat ideowy
avr_prog_met_bottom_pcb.pdf płytka drukowana - spód
avr_prog_met_top_pcb.pdf płytka drukowana - elementy
avr_prog_met_termo_bottom_pcb.pdf odbicie lustrzane - spód
avr_prog_met_termo_top_pcb.pdf odbicie lustrzane - elementy
avr_prog_elementy.pdf rozmieszczenie elementów
ispprog_2007_setup.zip program ISP Prog 2007
ponyprog_v207c_setup.zip program PonyProg v 2.07c
avr_prog_artykuł.pdf opis w formacie Acrobat Reader
avr_programator.zip wszystkie pliki