Atmel.com

Atmel 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

jAVRBoot 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 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)

MAGICZNY BANER darmowy system wymiany banerów