Strona Domowa

Dawida Urbanskiego

- Dział: arts -

< Go Back to List

elektronika/avr

Progamowanie mikrokontrolerów rodziny AVR

autor: Dawid napiano:2009-11-09

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)
    • 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ł
      • lutownicy
      • płytki uniwersalnej lub stykowej(tzw.testowej)
      • dioda LED x4 (3mm)
      • ATTiny2313
      • podstawka na 20 pin
      • opcjonalnie:
      • kieszeń na dwie baterie AA

      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. ;################################
      ;## 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
      ;-----------------------------------------

      Teraz musimy ten kod przerzucić na nasz mikrokontroler.

      • 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'

      Urządzenie

      Pora na zabawe lutowncą, (lub płytką stykową). wkładamy podłączamy zalinianie, dziła - super:)

      linki

Back to List


komentarze

  • gość
    Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/dawidurb2/domains/dawidurbanski.pl/public_html/engine/framework/smarty/libs/plugins/modifier.date_format.php on line 53
    Jul 6, 2013
    Tu podaj treść
  • gość
    Warning: strftime(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected the timezone 'UTC' for now, but please set date.timezone to select your timezone. in /home/dawidurb2/domains/dawidurbanski.pl/public_html/engine/framework/smarty/libs/plugins/modifier.date_format.php on line 53
    Nov 23, 2013
    Tu podaj treść

dodaj komntarz

tools

qrcode:
qrcode
-

code by: Dawid Urbanski

Copyright © by Dawid Urbanski 2010 - 2020