Ang Blinking LED ay ang unang hakbang na nais mong gawin upang makapagsimula sa electronics. Sa tutorial na ito ikokonekta namin ang isang LED sa ATmega32, na isang AVR series microcontroller. Susulyapin namin ang LED sa kalahating segundo na rate.
Kinakailangan ang Mga Bahagi
Hardware:
ATmega32A Microcontroller
Suplay ng kuryente (5v)
Programmer ng AVR-ISP
100uF Capacitor
LED
220Ω Resistor
Software
Atmel studio 6.1
Progisp o flash magic
Circuit at Paggawa ng Paliwanag
Tulad ng ipinakita sa diagram ng circuit sa itaas para sa interfacing LED sa AVR microcontroller, hindi na kailangang ikonekta ang isang panlabas na kristal dito. Dahil gumagana ang ATMEGA sa panloob na 1MHz Resistor-Capacitor oscillator bilang default. Kapag kinakailangan lamang ang kawastuhan ng orasan, bilang aplikasyon ng pagbibilang ng mataas na katumpakan, nakakabit ang panlabas na kristal. Kapag ang Controller ay unang binili, ito ay fuse upang gumana sa panloob na kristal bilang default.
Ang risistor ay konektado dito upang limitahan ang kasalukuyang pagguhit mula sa LED. Tandaan, ang controller ay hindi maaaring magbigay ng higit sa 30mA sa mga terminal.
Paliwanag sa Programming
Ang programa para sa ATmega32 microcontroller upang magpikit ng isang LED ay ipinapakita sa ibaba. Ipinapaliwanag ng mga komento sa code ang layunin ng indibidwal na linya ng code.
#include // header upang paganahin ang kontrol ng daloy ng data sa mga pin
# tukuyin ang F_CPU 1000000 // nagsasabi sa dalas ng kristal ng controller
# isama
int main (walang bisa)
{
DDRD = 0xFF; // (o 0b1111 1111) Sa AVRSTUDIO para sa pagsasabi sa pagkontrol na gumamit ng isang tiyak na bahagi ng isang port bilang input na ginagamit namin ang "ZERO", para sa pagsasabi sa ito na gumamit ng isang tiyak na bit bilang output ginagamit namin ang "ONE". Dahil inilagay namin ang walong "ONE's", ang lahat ng mga pin ng PORTD ay pinagana bilang output. Kung naglalagay kami ng isang zero bilang "0b1111 0111", ngayon ang lahat ng mga pin na 0,1,2,4,5,6,7 ay pinagana bilang mga input at PIN 3 ay Pinagana bilang input.
habang ang (1) // loop ay magpapatuloy magpakailanman at ang LED ay magpikit magpakailanman
{
PORTD = 0xFF; // lahat ng mga pin ng PORTD ay sinasabing magbigay ng 5v output o sinabi na humugot ng mataas (LED ON)
_delay_ms (220); // pagkaantala ng 200ms
_delay_ms (220);); // pagkaantala ng 200ms
PORTD = 0x00; // lahat ng mga pin ng PORTD ay sinasabing magbigay ng ground sa output o pull down
_delay_ms (220);); // pagkaantala ng 200ms
_delay_ms (220);); // pagkaantala ng 200ms
}
}