Atmel.com
Strona internetowa Atmel.com jest stroną producenta mikrokontrolerów AVR. Firma Atmel została założona w 1984r. przez George'a Perlegosa i obecnie zatrudnia ponad 7500 pracowników. Na stronie znajdziemy dokładne informacje o produkowanych układach AVR, ich specyfikacje techniczne, noty aplikacyjne i inne dokumenty. To samo dotyczy mikrokontrolerów AVR32. Poza tym producent udostępnia narzędzia rozwojowe (AVR Studio, AVR32 Studio) i inne przydatne oprogramowanie.Jednak firma Atmel nie zajmuje się wyłącznie mikrokontrolerami serii AVR. W ich ofercie znajdziemy także mikrokontrolery oparte o architekturę legendarnych 8051, mikrokontrolery z rdzeniem ARM (od ARM7 poprzez Cortex M3, aż do ARM11), układy CPLD, FPGA oraz inne specjalizowane układy programowalne. W ofercie firmy znajdziemy także układy stosowane w aplikacjach identyfikacji bezprzewodowej, układy pamięci nieulotnej, układy stosowane w komunikacji bezprzewodowej, w GPS itp. Wybór jest naprawdę spory i warto się zapoznać z propozycjami Atmel'a.
Firma od niedawna udostępnia także możliwość zamówienia próbek układów, podobnie jak inne przedsiębiorstwa produkujące układy scalone.
Każdy użytkownik układów AVR powinien dobrze znać tą stronę, gdyż zawarte na niej informacje przydają się w codziennej pracy z mikrokontrolerami.
Komentarze (0) dodane przez admin October 4, 2008 (9:29AM)
WÅ‚asny bootloader do AVR - krok po kroku
Mikrokontolery serii ATMega wyposażone zostały w instrukcje pozwalające programować pamięć Flash z poziomu aplikacji. Dzięki temu istnieje możliwość zmiany oprogramowania w mikrokontrolerze poprzez dowolny, wybrany interfejs.Poniżej przedstawiony zostanie sposób implementacji prostego bootloadera sterowanego poprzez interfejs RS232.
Wstęp
Pamięć programu w mikrokontrolerach ATMega podzielona została na dwa obszary. Pierwszy z nich to tzw. obszar aplikacji, natomiast drugi to obszar programu ładującego (BLS). Program umieszczony w obszarze BLS może przeprogramować obszar aplikacji. Nasz bootloader musi być więc umieszczony w obszarze BLS.
Program
Program został napisany dla mikrokontrolera ATMega88, jednak dostosowanie do innych układów jest bardzo proste.
Zapis programu:
boot_write: rcall RS232_send_char rcall RS232_receive_char cpi acc,'f' brne boot_write_ee rcall RS232_send_char rcall RS232_receive_char mov yh,acc rcall RS232_receive_char mov yl,acc clr zl clr zh boot_write_flash_loop_1: mov xl,zl mov xh,zh ldi temp2,PAGESIZE boot_write_flash_loop_2: rcall RS232_receive_char rcall RS232_send_char mov r0,acc rcall RS232_receive_char rcall RS232_send_char mov r1,acc ldi spm_cmd,(1 << SELFPRGEN) rcall spm_do adiw z,2 cp zh,yh brlo boot_write_flash_no_end cp zl,yl brsh boot_write_flash_end boot_write_flash_no_end: dec temp2 brne boot_write_flash_loop_2 boot_write_flash_end: push zl push zh mov zl,xl mov zh,xh ldi spm_cmd,(1 << PGWRT | 1 << SELFPRGEN) rcall spm_do pop zh pop zl cp zh,yh brlo boot_write_flash_loop_1 cp zl,yl brlo boot_write_flash_loop_1 ldi spm_cmd,(1 << RWWSRE | 1 << SELFPRGEN) rcall spm_do ldi acc,'d' rcall RS232_send_char boot_loop_go: rjmp boot_loop
Zapis programu odbywa się w przedziale pamięci od 0 do yh:yl. Parametry określające górną granicę przekazywane są poprzez interfejs RS232 przez użytkownika.
Dane zapisywane są słowami, dlatego pobierane są dwa bajty i umieszczane w rejestrach r0 oraz r1. Następnie wywoływana jest funkcja smp_do, która dokonuje właściwego zapisu do pamięci Flash mikrokontrolera.
Funkcja spm_d0 wygląda następująco:
spm_do: in spm_wait,SPMCSR sbrc spm_wait,SELFPRGEN rjmp spm_do spm_do_wait_ee: sbic EECR,EEPE rjmp spm_do_wait_ee out SPMCSR,spm_cmd spm ret
Oczyt danych:
boot_read: rcall RS232_send_char rcall RS232_receive_char cpi acc,'f' brne boot_read_ee rcall RS232_send_char clr zl clr zh boot_read_loop: lpm acc,z+ rcall RS232_send_char cpi zh,high((RWW_STOP_ADDR + 1) << 1) brne boot_read_loop cpi zl,low((RWW_STOP_ADDR + 1) << 1) brne boot_read_loop rjmp boot_loop
Kasowanie zawartości pamięci:
boot_erase_chip: rcall RS232_send_char clr zl clr zh clr acc clr temp ldi temp2,PAGE_SIZE boot_erase_chip_loop: ldi spm_cmd,(1 << PGERS | 1 << SELFPRGEN) rcall spm_do add zl,temp2 adc zh,temp inc acc cpi acc,RWW_PAGES brne boot_erase_chip_loop ldi spm_cmd,(1 << RWWSRE | 1 << SELFPRGEN) rcall spm_do ldi acc,'d' rcall RS232_send_char rjmp boot_loop
Pliki
Cały program oraz aplikacja na PC sterująca bootloaderem dostępne są poniżej: bootloader.asm
jAVRBoot.zip
Podsumowanie
Bootloader działa na mikrokontrolerze ATMega88 z zegarem 12MHz, dla innego zegara i mikrokontrolera należy dokonać odpowiednich zmian. Programując mikrokontroler należy także pamiętać o ustawieniu Fuse Bitów tzn. uaktywnienie bootloadera i wskazanie jego adresu w pamięci (dla proponowanego rozwiązania adres to: 0x0C00).
Mikrokontroler po włączeniu czeka chwilę na komendę uaktywniającą bootloader, jeśli ta się nie pojawi rozpoczyna się wykonywanie właściwego programu.
Komentarze (0) dodane przez admin August 27, 2008 (10:59AM)
Craft - pokaz możliwości mikrokontrolerów AVR
Craft jest demonstracją multimedialną stworzoną na minimalistycznej platformie sprzętowej opartej o mikrokontroler ATMega88.Mikrokontroler generuje obraz VGA wyświetlany na monitorze oraz dźwięk z częstotliwością próbkowania 31496kHz.
Schematy, dokładny opis sposobu generowania obrazu oraz dźwięku znajdują się na stronie projektu.
Poniższy film przedstawia Craft'a w akcji. Efekty jakie zostały osiągnięte są naprawdę imponujące, co ukazuje jaka moc drzemie w mikrokontrolerach AVR.
Strona projektu: http://www.linusakesson.net/scene/craft/index.php
Komentarze (0) dodane przez admin August 24, 2008 (7:15PM)