- Dział: arts -
elektronika/avr
Progamowanie mikrokontrolerów rodziny AVR
opis
Temat: | Progamowanie mikrokontrolerów rodziny AVR |
Opis: | Przedstawie tu swoje doświadczenia związane z programowaniem mikrokontrolerów rodziny AVR |
wymagane elementy
-
sprzęt:
- progarmator ISP avr (najlepiej USB) programy:
- AVR Studio(jako kompilator)
- eXtreme Burner - AVR (najleprzy program do wysyłania programu na mikro kontroler) mikrokontroler:
- attiny2313 (mój ulubiony)
- lutownicy
- płytki uniwersalnej lub stykowej(tzw.testowej)
- dioda LED x4 (3mm)
- ATTiny2313
- podstawka na 20 pin opcjonalnie:
- kieszeń na dwie baterie AA
- Otwieramy AVR Studio tworzymy nowy projetk w języku asembler.
- Wklejamy powyższy kod. kompikujemy F7.
- Uruchamiamy eXtreme Burner - AVR
- otwieramy 'twoja_nazwa_projektu.hex'
- Wgrywamy na mikrokontroler klikając na guzik 'write all'
- AVR Studio
- eXtreme Burner - AVR przydatne:
- dokumentacja ATtiny2313 (PDF) w temacie:
- avrfreaks
- atmel
oraz cierpliwość!
Przygotowanie
zaczyna się prosto, kupujemy progarmator koszt od 20 za programator na por com, 40zł za programator na USB i od 400 do 3000zł za jakieś profesjonalne.
Ja kupilem swój programator ISB (USB) na alegro i ten model sprawdza mi się świetnie.

Potem trzeba kupić miro kontroler. To wydatek rzędu 6zł za sztukę. Przygode zacząłem z ATtiny 2313, prosty tani i sporo da się na nim zrobić. Dostaniesz go w LEPSZYCH zklepach elektronicznych w Twoim mieście albo możesz dokonać zakupu przez internet to będzie bardzo łatwe.

Teraz trzeba umieć coś napiać, program mamy trzy główne języki do wyboru: C, BASCOM-AVR oraz asembler. Ze względu na to że C już troszkę znam, wybrałem ASM. Najpotężniejszy ze znanych mi języków programowania,oraz jeden z najtrudniejszych.
Pozostaje teraz tylko pobrać AVR Studio stąd oraz eXtreme Burner - AVR stąd.
JESTEŚ GOTOWY
Pierwszy projekt

Zawsze najwięcej problemu jest z pierwszy układem. Nie przejmuj się tym!
Musisz podłączyć wszystkie kabelki, uruchomić programy, poklikać, popisać..i ustalić dlaczego nic nie działa.
na zdjęciu powyrzej widzisz moje pierwsze dzieło z tej dziedziny. Pod względem technicznym jest wysoce niestaranne ale działa oraz sprawiło mi wiele satyswakcji.
Jest to chyba najprostsze rozwiązanie jakie znam:
-
będziesz potrzebował
Jak podłączyć mikrokontroler do programatora
Jeśli masz profesjonalny programator..wkładasz w mikrokontroler w jego podstawkę wycięciem do góry i to wystarczy.
Wiem że tak łatwo nie będzie.
Zakładam że Twój programator posiada złącze typu KANADA. Jego opis przedstawia zdjęcie poniżej.

A oto schemat ATTiny2313. Zwróc uwagę na kolorowe ramki na obu obrazkach. Podpowiedzą ci one które elementy należy połączyć razem.

Jeżeli Twój programator ma zdolność do samodzielnego zasilania układu, to bardzo dobrze, wystarczy że połaczysz elementy zaznaczone kolorowymi ramkami i już możesz programować.
UWAGA!:nie podłączaj kabli bezpośrednio do mikrokontrolera. Użyj podstawki.
Pierwszy projekt (źródło)
Kod napisany w asemblerze.
;################################
Teraz musimy ten kod przerzucić na nasz mikrokontroler.
;## 10.9.2009 ##
;################################
;## Dawid Urbańki ##
;################################
;## opis:
;##Zapala i gasi piny portu D
;PORTD_0 - led1
;PORTD_1 - led2
;PORTD_2 - led3
;PORTD_3 - led4
;##############################
.nolist
.include "tn2313def.inc"
.list
.listmac
.def acc = r16
.equ del_s = 4 ;del_s = 4 -> 1s
.cseg
.org 0
;inicjacja
cli ;
ldi r16,LOW(RAMEND) ;inicjacja stosu...
out SPL,r16 ;...progamowego
ldi r16,0xFF ;
out DDRD,r16 ; PORTD - wyjscie w stanie wysokim
;##############################
;## pętla gówna programu
Main:
;wyłącz portD
rcall PORTD_OFF
;wł LED1 na 1s
rcall PORTD_0_ON
;czekaj
ldi r19,4
rcall Delay
rcall PORTD_0_OFF
;wł lED4 na 1s
rcall PORTD_3_ON
;czekaj
ldi r19,4
rcall Delay
rcall PORTD_3_OFF
;------------------------------
;wł LED2 na 2s
rcall PORTD_1_ON
;czekaj
ldi r19,8
rcall Delay
rcall PORTD_1_OFF
;wł LED 3 na 2s
rcall PORTD_2_ON
;czekaj
ldi r19,8
rcall Delay
rcall PORTD_2_OFF
;wł LED 2,3 na 1s
rcall PORTD_2_ON
rcall PORTD_3_ON
;czekaj
ldi r19,4
rcall Delay
rcall PORTD_2_OFF
rcall PORTD_3_OFF
;------------------------------
rjmp Main ; powrot do petli
;##############################
;##############################
;## PORTD led swieci
PORTD_ON:
ldi r16,0xFF
out PORTD,r16 ; PORTD - wyjscie w stanie wysokim
ret
PORTD_0_ON:
sbi PORTD,0
ret
PORTD_1_ON:
sbi PORTD,1
ret
PORTD_2_ON:
sbi PORTD,2
ret
PORTd_3_ON:
sbi PORTD,3
ret
PORTD_4_ON:
sbi PORTD,4
ret
PORTD_5_ON:
sbi PORTD,5
ret
;#############################
;## PORTD led NIE swieci
PORTD_OFF:
ldi r16,0x00
out PORTD,r16 ; PORTD - wyjscie w stanie wysokim
ret
PORTD_0_OFF:
cbi PORTD,0
ret
PORTD_1_OFF:
cbi PORTD,1
ret
PORTD_2_OFF:
cbi PORTD,2
ret
PORTd_3_OFF:
cbi PORTD,3
ret
PORTD_4_OFF:
cbi PORTD,4
ret
PORTD_5_OFF:
cbi PORTD,5
ret
;########################################
;## opóźnienie
;## ustawiamy rejestrem 19 'r19'
Delay:
ldi r19,del_s
clr r1
clr r2
delay_loop:
dec r1
brne delay_loop
dec r2
brne delay_loop
dec r19
brne delay_loop
ret
.exit
;-----------------------------------------
Urządzenie
Pora na zabawe lutowncą, (lub płytką stykową).
wkładamy podłączamy zalinianie, dziła - super:)
linki
-
programy: