Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

Programowanie

Bootloader AVR109,
czyli jeszcze raz
Kurs C oraz AVT-3505
Początek wakacji okazał się czasem inten- AVR109 – co to jest i skąd to wziąć? nej wygody proponuję utworzyć z jego pozio-
sywnych pytań na mojej skrzynce mailowej, AVR109 to nota aplikacyjna firmy Atmel opisują- mu nowy projekt. Jak to zrobić, przypomina
związanych z zestawem AVT-3505. Okazuje ca przykładowy bootloader dla procesorów AVR. rysunek 1. Do projektu dodajemy wszystkie
się, że wielu Czytelników wybrało ten okres Mimo tego, że w sieci można znaleźć sporo pro- potrzebne pliki źródłowe, są to:
na zamówienie urządzenia. Jest dla mnie jektów z bootloaderami pracującymi przez chyba Makefile, defines.h, flash.h, main.c, serial.
miłym zaskoczeniem, że projekt przeżywa każdy możliwy interfejs, siłą wspomnianej noty h, serial.c.
aktualnie drugą młodość. Postanowiłem też jest to, że tworzy pewien standard, obsługiwany Plik link.xcl to pozostałość po wersji IAR
sprawdzić, jak mogę jeszcze uprzyjemnić nie tylko przez oprogramowanie producenta. – GCC z niego nie korzysta.
korzystanie z płytki. Notę tę, w postaci opisu w pliku PDF oraz Narzędzia pracy mamy już ustawione.
W swoich listach Czytelnicy skarżą się kodów źródłowych dla kompilatora C firmy Możemy przejść do konfiguracji.
na utrudnienia związane z programowa- IAR oraz kompilatora GCC, można pobrać
niem przy pomocy komputera niewyposa- ze strony www.atmel.com. W dziale AVR Konfiguracja
żonego w porty LPT ani COM, przy czym 8-Bit RISC wybieramy Application Notes. W katalogu znajdziesz jeszcze dwa interesujące
okazuje się także, że przejściówki z portu Po odnalezieniu AVR109: Self Programming pliki: preprocesor.sh oraz preprocesor.xls. Każdy
USB nie umożliwiają stosowania prostych pobieramy pliki programu (ikona płyty CD). z nich ułatwia skonfigurowanie programu do
programatorów. Problemowi temu da się Mimo że nie jest to konieczne do zrozumienia wybranego typu procesora. Plik preprcesor.sh
zaradzić w prosty sposób. W tym artyku- dalszej części opisu, warto zainteresować się może być wywołany z linii komend w środowisku
le pokażę zaimplementować bootloader z dostępną na stronie, solidnie przygotowaną, uniksowym (w tym z poziomu naszego Makefile)
noty aplikacyjnej AVR109. Jego ogromną dokumentacją w pliku PDF. i przeprowadza całą konfigurację automatycznie.
zaletą jest wsparcie ze strony AVRStudio. Plik preprocesor.xls ma dokładnie takie samo
Dla wielbicieli innych programów infor- Co mamy? przeznaczenie, ale konfiguracja odbywa się za
macja także jest dobra – wspiera go także Ze strony firmy ATMEL powinniśmy pobrać pomocą rodzaju programu napisanego w formie
AVRdude oraz AVROSP. plik AVR109.zip. Proponuję teraz rozpakować arkusza kalkulacyjnego. Mimo natywnego for-
Jeśli zechcesz, po prostu skorzystać z go w dowolne miejsce. W jego wnętrzu znaj- matu Exela, sprawdziłem, że arkusz działa zna-
wygody, jaką daje bootloader, nie wgłębiając duje się katalog Source Code. Głębiej mamy komicie także w OpenOffice. Dalszy opis będzie
się na razie w jego konfigurację oraz kompi- podział na podkatalogi IAR oraz GCC – wybie- dotyczył konfiguracji za pomocą tego pliku.
lację, będziesz mógł pobrać gotowe pliki ze ramy ten drugi. Uruchom go teraz w używanym programie i
strony Elportalu. Wszystkich zapraszam do Ponieważ w ramach kursu C uczyliśmy się przejdź do pierwszej zakładki – Documentation.
lektury artykułu. korzystać z Pogrammers Notepada, dla włas- W tym miejscu znajduje się wyjaśnienie, krok
Rys. 1 Zakładanie nowego projektu i dodawanie do niego istniejących plików

24 PaŸdziernik 2008 E l e k t r o n i k a d l a Ws z y s t k i c h
Programowanie
Kod Obsugiwany ukad pewien problem. Aktualnie
0x10 AT90S1200rev.A AVRProg wymaga, aby
0x11 AT90S1200rev.B prędkość, z jaką układ poro-
0x12 AT90S1200rev.C zumiewa się z programem
0x13 AT90S1200
wynosiła 115,2kbps. Nie da
0x20 AT90S2313
0x28 AT90S4414
się niestety z wystarczającą
0x30 AT90S4433 dokładnością uzyskać takiej
0x34 AT90S2333 prędkości na wewnętrznym
0x38 AT90S8515 generatorze RC. Konieczne
0x3A ATmega8515 będzie zastosowanie kwarcu
0x3B ATmega8515 BOOT o jednej z podanych wartości:
0x41 ATmega103 1,8432MHz; 3,6864MHz;
0x42 ATmega603
7,3728MHz; 11,0592MHz;
0x43 ATmega128
14,7456MHz; 18,4320MHz.
0x44 ATmega128 BOOT
0x45 ATmega64 W czasie prac prototypo-
0x46 ATmega64 BOOT wych wybrałem wartość
0x48 AT90S2323 11,0592MHz i program dla
0x4C AT90S2343 tej wartości został przeze
0x50 ATtiny11 mnie sprawdzony.
0x51 ATtiny10 Jeśli nie chcesz korzy-
0x55 ATtiny12 stać z AVRProga, a jedynie
Rys. 2 Konfiguracja dla AVT3505 0x56 ATtiny15
z AVRdude, sytuacja jest o
0x58 ATtiny19
Listing 1 Zmiany w Makefile 0x5C ATtiny28
tyle komfortowa, że można
po kroku, jak przeprowadzić konfigurację. 0x5E ATtiny26 skonfigurować program do
Poniżej przedstawiam, jakie kroki powin- MCU = atmega162 0x60 ATmega161 pracy z prędkością 38,4kbps.
FORMAT = ihex
niśmy wykonać w przypadku korzystania TARGET = bootloader 0x61 ATmega161 BOOT Prędkość taka jest możliwa
z kompilatora GCC: SRC = main.c serial.c 0x64 ATmega163 do uzyskania z wystarczającą
1. Przechodzimy na zakładkę o nazwie ASRC = 0x65 ATmega83 dokładnością na wewnętrz-
OPT = s 0x66 ATmega163 BOOT
defines_h. Komórki, które powinniśmy BASEADDR = 0x3800 nym generatorze RC 8MHz.
ręcznie zmienić, są wyróżnione przez 0x67 ATmega83 BOOT Kosztem zmniejszenia szyb-
0x68 AT90S8535
czerwony tekst na żółtym tle. pojawiającą się liczbę szes- kości transmisji programu
0x69 ATmega8535
2. W wierszu 7 zmieniamy tekst nastkową za słowem CODE, 0x6C AT90S4434
unikamy konieczności stoso-
_ATMEGAXXX na odpowiadający naszemu czyli w naszym przypadku 0x70 AT90C8534 wania zewnętrznego oscyla-
procesorowi (_ATMEGA162). 3800, wykorzystamy do pliku 0x71 AT90C8544 tora.
3. W wierszu 8 zmieniamy tekst _Bxxxx na Makefile. Otwórz teraz ten 0x72 ATmega32
wielkość odpowiadającą rozmiarowi, w sło- plik. Liczbę tę przypiszemy 0x73 ATmega32 BOOT Udajemy ATmega169
wach, naszej sekcji bootloadera (_B1024). do BASEADDR, w pobliżu 0x74 ATmega16 Zakładka Part_definitions
4. W wierszach 17–19 znajduje się definicja 14 linii. Jeśli jesteśmy już 0x75 ATmega16 BOOT w pliku preprocessor.xls
0x76 ATmega8
wyprowadzenia odpowiadającego za wejście w tym pliku, od razu usta- zawiera dane poszczegól-
0x77 ATmega8 BOOT
w tryb bootloadera. Wyprowadzenie to będzie wiamy odpowiedni procesor. nych typów procesorów. Z
0x78 ATmega169
sprawdzane podczas startu. Jeśli będzie ono Po tych zabiegach, począ- 0x79 ATmega169 BOOT niej kopiowane są odpowied-
zwarte do masy, wystartuje bootloader. Jeśli tek pliku Makefile, będzie nie dane do zakładki defi-
chcemy aby uruchamiało go przytrzymanie w wyglądał jak na listingu 1. Tab. 1 Lista układów nes_h. Znajdziesz tutaj w
obsługiwanych przez
chwili startu przycisku S1, wpisujemy kolejno Zauważ teraz, że w wier- AVRProg 1.40 kolumnie F nagłówek Part
PORTE, PINE, PE0. szu 4 na 2 mamy napis: code (AVRProg). Tutaj nasz
5. Dwa ostatnie wiersze do ustawienia „Utwórz plik (defines.h) zawierający co następu- ATmega162 posiada kod 0x63. Okazuje się
mają numery 22 i 23. Wpisujemy tutaj warto- je:”. Zaznaczamy więc wiersze od 5, do końca jednak, że aktualna wersja (1.40) nie obsługu-
ści odpowiadające częstotliwości taktowania arkusza. Kopiujemy i wklejamy do pliku defines. je tego kodu. Pełną listę obsługiwanych przez
procesora oraz używanej prędkości transmi- h. Nie zważamy na to, co w tym pliku już jest. Po ten program kodów, znalezioną na forum stro-
sji. W związku z tymi parametrami wynika prostu kasujemy całość i wklejamy nasze dane. ny www.avrfreaks.net, zebrałem w tabeli 1.
pewien problem, związany z prędkością trans- Konfiguracja została praktycznie skoń- Mimo tego, że ATmega162 zastępuje
misji wymaganą przez AVRProga. Sprawę tą czona. Jednak czekają tutaj pewne drobne wycofany już ATmega161, pojawiają się tutaj
wyjaśnimy sobie za chwilę. pułapki... znaczne różnice w bitach ustawień (fusach).
Uwaga. Nie zmieniamy tutaj nic poza oznaczo- O ile procesor ATmega169 pod względem funk-
nymi polami. Reszta pól zostanie wyliczona auto- Po skończonej konfiguracji może okazać cjonalnym różni się dość znacznie od ATmega162,
matycznie. Fragment prawidłowo wypełnionego się, że jeśli teraz skompilujesz program, to od strony wielkości posiadanych pamięci są
pliku, dla płytki AVT3505, pokazuje rysunek 2. nasza płytka nie będzie prawidłowo widzia- identyczne. Ponadto, „fusy” ATmega169 róż-
na przez AVRProg i nie da się zaprogramo- nią się tylko tym, że w bajcie rozszerzonym
Co zrobić z wypełnionym plikiem prepro- wać. Zwróć baczną uwagę na dwa kolejne (Extended Fuse Byte) brak bitu kompatybilności
cessor.xls podtytuły. z ATmega161. Tak naprawdę AVR109 nie wspiera
Na czym polega idea utworzonej konfiguracji? możliwości programowania fusów. Umożliwia
Sprawa jest bardzo prosta. Z otrzymanego pliku Wymagana prędkość transmisji i związane jedynie ustawianie bitów zabezpieczeń, więc jeśli
skopiujemy potrzebne dane do dwóch innych pli- z tym problemy wybierzemy kod BOOT procesora ATmega169,
ków. Pierwsze, na co zwracamy uwagę, to wiersz Jeśli koniecznie chcesz korzystać z AVRProga możemy bezpiecznie przeprowadzić programo-
2. Spójrz ponownie na rysunek 2. Pierwszą, wbudowanego w AVRStudio, natkniesz się na wanie naszego ATmega162.

E l e k t r o n i k a d l a Ws z y s t k i c h PaŸdziernik 2008 25
Programowanie
Zdecydowałem się procesora przyciskiem RESET na
więc, dla AVRProga płytce głównej. Po takim zabie-
przedstawić układ jako gu przycisk S1 można zwolnić.
ATmega169. W całej Procesor teraz wykonuje program
„sztuczce” chodzi o bootloadera i czeka na polecenia z
to, aby przestawić się portu szeregowego.
odpowiednio tylko dla
programu AVRProg. Korzystanie z bootloadera –
Reszta ustawień bootlo- Rys. 4 Brak wykrycia bootloadera AVRProg
adera powinna pozostać przez AVRProg Jeśli nasz procesor jest zaprogra-
bez zmian. Zrobimy to mowany programem bootloadera,
przez zmianę jednej linii Programowanie procesora który porozumiewa się z prędkością 115,2kbps
bezpośrednio w pliku skompilowanym kodem oraz udaje procesor ATmega169, możemy
defines.h. Odnajdź sek- W tej chwili konieczne jest posłużyć się wygodnym programatorem wbu-
cję oznaczoną komen- jeszcze posiadanie stan- dowanym w środowisko AVRStudio.
tarzem /* definitions dardowego programatora. Po uruchomieniu bootloadera przechodzi-
for device recognition Pocieszające jest jednak to, my do komputera. Uruchamiamy AVRStudio.
*/. Na samym począt- że jeśli teraz uda nam się Nie musimy otwierać żadnego projektu. Z
ku pojawia się defi- zaprogramować procesor, menu głównego wybieramy: Tools->AVR
nicja PARTCODE. Rys. 3 Okno główne pracującego w przyszłości będzie można Prog. Jeśli wszystko przebiegło prawidło-
Zmieniamy przypisaną programu AVRProg na nim wykonać masę eks- wo, zobaczysz okno widoczne na rysunku
tutaj liczbę na 0x79 – perymentów bez koniecz- 3. Możesz teraz wybrać plik do zapisania
kod dla procesora ATmega169. Natomiast bajty ności wpinania się do złącza ISP. i zaprogramować procesor. Po naciśnięciu
sygnatury pozostawimy bez zmian. Pokazuje Na stronie Elportalu znajdą się wygodne przycisku Advanced ujrzymy okienko pokazu-
to listing 2. pliki dla PonyProga, które automatycznie prze- jące aktualną konfigurację bitów ustawień (nie
Zmiany w kodzie dla prawidłowej pracy prowadzą cały proces wraz z odpowiednim można jednak ich zmieniać) oraz uzyskamy
także z AVRdude ustawieniem bitów konfiguracyjnych. W innym możliwość konfiguracji bitów zabezpieczeń.
Wygląda na to, że w oryginalnym kodzie przypadku konieczne jest ręczne ustawienie Jeśli program się nie uruchomi, tylko
AVR109 powstał błąd, który uniemożliwia rozmiaru sekcji bootloadera na 1024 słowa, wyświetli komunikat widoczny na rysunku 4,
sprawną współpracę w AVRdude. Informacja włączenie skoku do sekcji bootloadera po zero- oznacza to albo złe połączenie, albo nieprawid-
na ten temat została przeze mnie przesłana do waniu oraz, zależnie od wybranej wersji, odpo- łowe ustawienie prędkości transmisji w pro-
odpowiedniego działu firmy ATMEL, jednak wiednie wybranie źródła taktowania procesora. cesorze – pamiętaj o konieczności stosowana
trudno powiedzieć, czy zostanie ona uwzględ- zewnętrznego kwarcu. Może oznaczać także,
niona. Problem polega na tym, że bootloader Uruchomienie bootloadera że program bootloadera nie działa – spróbuj
w czasie czyszczenia pamięci Flash odpowiada Jeśli program bootloadera został skonfiguro- ponownie uruchomić płytkę, trzymając S1.
sygnałem gotowości już w trakcie czyszczenia wany zgodnie z opisem, jego uruchomienie Zwróć uwagę, że w polu Device, na 3,
ostatniego bloku pamięci. AVRdude zaczy- następuje przez przytrzymanie przycisku S1 znajduje się nazwa wybranego procesora
na natychmiast wypełniać bufor tymczasowy w chwili startu procesora. W praktyce ozna- (ATmega169 BOOT). Jeśli jej nie ma, ozna-
pamięci Flash, ale ponieważ pamięć ta jest cza to albo trzymanie przycisku w chwili cza to, że procesor nie został prawidłowo
zajęta, pierwsze wpisane do niej bajty zostają włączania zasilania płytki, albo przytrzymanie rozpoznany i jego programowanie okaże
uszkodzone (mają wartość 0xff). A problem przycisku S1 w czasie i chwilę po zerowaniu się niemożliwe. W takim przypadku świad-
można rozwiązać naprawdę bardzo łatwo. czy to o nieprawidłowym ustawieniu stałej
Otwórz plik main.c bootloadera w edy- /* definitions for device recognition */ PARTCODE w pliku defines.h. Zajrzyj do
torze. W okolicy 105 linii zaczyna się frag- #define PARTCODE 0x79 części o udawaniu ATmega169.
#define SIGNATURE_BYTE_1 0x1E
ment odpowiedzialny za kasowanie pamięci #define SIGNATURE_BYTE_2 0x94
FLASH. Możesz znaleźć go, szukając słów #define SIGNATURE_BYTE_3 0x04 Bootloader z poziomu AVRdude
„Chip erase”. Zmieniamy go tak, aby wyglą- Część osób zauważa zapewne, że im dłużej
dał jak na listingu 3. Dodany fragment został Listing 2 Udawanie ATmega169 przed AVRProg pracuje się na komputerze, tym bardziej lubi się
specjalnie oznaczony. Teraz wszystko programy konsolowe. Po prostu często łatwiej i
będzie działało prawidłowo. Listing 3 Naprawa kasowania w AVR109 szybciej jest wpisać z konsoli kilka komend niż
// Chip erase. sięgać po myszkę i wybierać odpowiednie opcje z
Kompilacja else if(val==’e’) menu. Inną sprawą jest możliwość łatwego pisa-
Po opisanej konfiguracji, kompila- { nia skryptów. Wtedy, po wybraniu odpowiednie-
cję przeprowadzamy standardowo, for(address = 0; address < APP_END; go pliku wsadowego, cały proces programowania
jak do tej pory. Jeśli posiadasz address += PAGESIZE) zostanie przeprowadzony automatycznie. Jest to
{
Programmers Notepada skonfi- _WAIT_FOR_SPM(); istotny powód, dla którego coraz bardziej prze-
gurowanego zgodnie z kursem, #ifdef __ICCAVR__ konuję się do AVRdude.
kompilacja powinna zadziałać #pragma diag_suppress=Pe1053 AVRdude jest programem o otwartym
po wybraniu F7. Przy domyśl- #endif kodzie, więc nie ma co się obawiać, że
nych ustawieniach WinAVR jest _PAGE_ERASE( address ); pewnego dnia straci wsparcie producenta.
#ifdef __ICCAVR__
ona także możliwa przez wydanie #pragma diag_default=Pe1053 W moim odczuciu ma on większe możli-
polecenia Tools->(WinAVR) make #endif wości niż promowany przez firmę ATMEL
albo przez wpisanie komendy } podobny program, także z otwartym kodem
make z konsoli z poziomu katalo- _WAIT_FOR_SPM(); – AVROSP (AVR Open Source Programmer).
gu projektu. sendchar(‘\r’); // Send OK back. Ponadto, obsługa AVRdude jest domyślnie
}

26 PaŸdziernik 2008 E l e k t r o n i k a d l a Ws z y s t k i c h
Programowanie
wbudowana w plik Makefile z WinAVR... do Programmers Notepada. Przypominam ostrzeżeń o możliwych problemach. Jednak w
znacznie ułatwia to pierwsze eksperymenty. skrótowo, jak to zrobić: Z menu głównego nowych komputerach na przykład port COM4
Aby nie przedłużać sprawy, skonfiguru- wybierz opcję Tools->Options. Dalej postępuj nie istnieje, można więc bezpiecznie zignorować
jemy Makefile jednego z programów kursu zgodnie z rysunkiem 5. pojawiające się okienka i kontynuować zmiany.
C w taki sposób, aby można było swo- Warto korzystać z AVRdude z poziomu Po zmianie nazwy portu emulowanego przez
bodnie korzystać z bootloadera AVR109. Makefile. Został on napisany w taki sposób, przejściówkę na jedną z zakresu COM1...COM4
Wybrałem program LCD_dynamic z części że jeśli w programie dokonaliśmy zmian i AVRProg zacznie wykrywać naszą płytkę.
9. Identycznie jednak można postąpić z każ- jeśli bez wybierania opcji kompilacji wybie- Należy zdawać sobie sprawę, że przejściówka
dym udostępnionym na Elportalu programem rzemy opcję programowania, narzędzie make USB->RS232 ma złącze takie, jakby podłączyć
– patrz też przypis na końcu artykułu. wykryje, że istnieją kody źródłowe o dacie się do komputera kablem 1:1. Konieczny jest
Otwieramy do edycji plik Makefile. W pliku nowszej niż plik wynikowy i automatycznie więc jeszcze przewód Null Modem albo prosta
tym, przed linią 200, znajduje się sekcja ozna- wywoła kompilację – nie będzie więc przy- przejściówka krosująca odpowiednie sygnały.
czona Programming Options (avrdude). Listing padku, że zapomnimy coś skompilować i
4 pokazuje konieczne zmiany. Odpowiednio załadujemy do procesora kod bez poprawek. Podsumowanie
ustawiamy typ programatora. Nazwę portu Dlatego też dobrze jest, zgodnie z rysunkiem Po wgraniu booloadera na płytkę komfort pracy
ustawiamy na port, do którego rzeczywiście 5, zaznaczyć w opcjach naszego narzędzia znacznie wzrasta. Niezależnie od posiadanej
podłączyliśmy naszą płytkę. Dodana została programowania opcję zapisu zmienionych wersji, znikają wszelkie problemy wynikające
także stała określająca prędkość transmisji. plików przed jego wywołaniem. ze współdzielenia linii interfejsu wyświetlacza
Tuż przed końcem sekcji ustawień programa- alfanumerycznego z liniami SPI. Program
tora znajdziemy ustawianie odpowiednich flag. Praca na przejściówce USB->RS232 ten znakomicie działa z przejściówką USB-
Skorzystamy tutaj z dodanej stałej AVRDUDE_ Oba programy zostały sprawdzone przy współ- >RS232, co ucieszy na pewno posiadaczy
BOUD zgodnie z listingiem 5. pracy z przejściówką USB->RS232. Radzą sobie nowoczesnych komputerów pozbawionych
Teraz jeszcze jedno: jeśli zainstalowałeś znakomicie. Jedynie wbudowany w AVRStudio portów COM oraz LPT. Zauważyłem także
WinAVR bez dodawania jego ścieżki do syste- AVRProg sprawia drobny problem. Okazuje się, wzrost szybkości programowania w stosunku
mowego PATH-a, konieczne jest też utworze- że program ten po uruchomieniu automatycznie do programatora STK200.
nie odpowiedniego pliku wsadowego. Plik, przeszukuje porty w poszukiwaniu obsługiwa- Osobiście, po przyzwyczajeniu się do tego
którego zawartość pokazuje listing 6, należy nego urządzenia. Jednak poszukiwania prowadzi programu, niechętnie wracam do poczci-
wywołać z poziomu katalogu projektu. U sie- jedynie na portach COM1...COM4. W moim wego STK200 podczas eksperymentów z
bie plik ten nazwałem program.bat i umieści- przypadku przejściówka zainstalowała się jako AVT3505.
łem w katalogu instalacyjnym WinAVR. port COM8, co uniemożliwiło prawidłową współ- Radosław Koppel
Możesz wywołać go z linii poleceń, pracę z tym programem. W systemie Windows radoslaw.koppel@elportal.pl
możesz także dodać odpowiednie narzędzie XP możemy przypisać dowolny numer portu
AVRDUDE_PROGRAMMER = avr109 takiej przejściówce. Można to zrobić z pozio- Uwaga: Podany program nie jest prawidłowo
mu menadżera urządzeń, wybierając we właści- kompilowany przez GCC w wersji 4.3. Jedną
# com1 = serial port. Use lpt1 wościach przejściówki w zakładce Ustawienia z głównych przyczyn takiego stanu rzeczy jest
# to connect to parallel port. portu przycisk Zaawansowane... Ponieważ porty fakt, że GCC w wersji 4.3 inaczej obsługuje
AVRDUDE_PORT = com4
COM1...COM4 są domyślnie przypisane do niestatyczne funkcje typu inline. Występują
AVRDUDE_BOUD = 115200 fizycznej przestrzeni adresowej urządzeń wej- jednak także inne problemy, w sprawie których
ścia--wyjścia procesora, może pojawić się kilka pozostaję w kontakcie z twórcami WinAVR.
Listing 4 Ustawienia AVRdude w Makefile Kody programów z kursu najlepiej kompilo-
Listing 5 Modyfikacja flag AVRdude w celu wybrania prędkości transmisji
wać w WinAVR w wersji 20071221.
AVRDUDE_FLAGS = -p $(MCU) -P $(AVRDUDE_PORT) -c $(AVRDUDE_PROGRAMMER) -b $(AVRDUDE_BOUD)

Rys. 5 Dodawanie narzędzia programowania do Programmers Notepad’a

E l e k t r o n i k a d l a Ws z y s t k i c h PaŸdziernik 2008 27

You might also like