2. LED ±ô¹ÚÀ̱â
Àú¹ø
°Á¿¡¼´Â °³¹ßȯ°æÀ» ±¸ÃàÇß´Ù. ÀÌÁ¦ ±¸½½Àº ÁغñµÇ¾ú°í, ÀÌÁ¦ºÎÅÍ´Â ±¸½½À» Çϳª¾¿
²ç¾î º¸±â·Î ÇÏÀÚ. ¿À´Ã ´Ù·ê ÁÖÁ¦´Â 8°³ÀÇ LED¸¦ ¼øÂ÷ÀûÀ¸·Î ¹Ýº¹Çؼ ÄÑ´Â ½ÇÇèÀÌ´Ù.
¸ÕÀú Volker Oth°¡ ¹èÆ÷ÇÑ avrgcc ÆÐŰÁö¿¡ º¸¸é
gcctest°¡ Æ÷ÇԵǾî ÀÖ´Ù. À©µµ¿ì¿ë avr-gcc¸¦ ¼º°øÀûÀ¸·Î ¼³Ä¡ÇÑ »ç¶÷µéÀº ´Ù
°¡Áö°í ÀÖÀ» °ÍÀÌ´Ù. c:\avr-gcc¿¡ avr-gcc¸¦ ¼³Ä¡ÇÏ¿´´Ù¸é ÇÏÀ§ µð·ºÅ丮¿¡ gcctest¸¦ Ç®µµ·Ï ÇÑ´Ù. ±×·¯¸é
c:\avr-gcc\gcctest\gcctest1
µð·ºÅ丮 ¹Ø¿¡ ¿À´ÃÀÇ ÁÖÁ¦ ¼Ò½º ÆÄÀÏÀÌ ÀÖÀ» °ÍÀÌ´Ù. ¸ÕÀú gcctest1 µð·ºÅ丮¸¦
»ìÆìº¸¸é ´ÙÀ½°ú °°Àº ÆÄÀϵéÀÌ Á¸ÀçÇÑ´Ù.
gcctest1.c |
À̹ø¿¡ ´Ù·ê ¼Ò½º ÆÄÀÏÀÌ´Ù. |
makefile |
¼Ò½º ÆÄÀÏÀ» ÄÄÆÄÀÏÇϴµ¥ ÇÊ¿äÇÑ
±ÔÄ¢ÆÄÀÏ, ÀÚ¼¼ÇÑ ³»¿ëÀº avr-gcc ¼³Ä¡¹ýÀ» Âü°í |
±×¸®°í ½ÇÇè¿¡ ÀÌ¿ëµÉ
ȸ·Îµµ´Â ´ÙÀ½°ú °°´Ù.

¸ÕÀú
À§ÀÇ ±×¸²°ú °°ÀÌ PORTB¿¡ LED¸¦ 8°³ ºÎÂøÇÑ´Ù. ±×¸²Ã³·³ ±»ÀÌ 9V¸¦ ¿¬°áÇÒ ÇÊ¿ä´Â
¾ø´Ù. 5V ÆÄ¿ö ¼ÇöóÀ̰¡ ÀÖÀ¸¸é ¹Ù·Î ¿¬°áÇØ¼ ½áµµ ÁÁ´Ù. ±×¸®°í ±×¸² ¿ÞÆí¿¡¼
Voltage Dector´Â ¾ø´Ù°í »ý°¢Çصµ ÁÁÀ¸¸ç, PD2, PD3¿¡ ½ºÀ§Ä¡´Â ºÎÂøÇÏÁö ¾Ê¾Æµµ
ÁÁ´Ù.
±×¸²¿¡¼
LED°¡ PORTB¿¡ ºÎÂøµÇ¾î ÀÖÀ¸¸ç, LEDÀÇ Ä³¼Òµå°¡ Æ÷Æ®ÇÉ¿¡ ¹°·ÁÀÖ´Ù. µû¶ó¼ Æ÷Æ®
BÀÇ Ãâ·ÂÀÌ '0'À̸é LED°¡ ÄÑÁø´Ù. PORTB¿¡ '0'¸¦ Ãâ·ÂÇϱâ À§Çؼ´Â ´ÙÀ½°ú °°Àº
°úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. PORTB´Â ÀÔ·Â/Ãâ·ÂÇÉÀ¸·Î »ç¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ PORTB¸¦ Ãâ·ÂÀ¸·Î
¼³Á¤ÇÏ¿©¾ß ÇÑ´Ù. PORTBÀÇ ÀÔÃâ·ÂÀ» °áÁ¤ÇÏ´Â °ÍÀÌ DDRB ·¹Áö½ºÅÍ ÀÌ´Ù. 8515ÀÇ ¸Å´º¾óÀ»
º¸¸é DDRB¿¡ ´ëÇÏ¿© ´ÙÀ½°ú °°ÀÌ ±â¼úÇϰí ÀÖ´Ù. DDRB´Â 8ºñÆ® ·¹Áö½ºÅÍ·Î½á °¢ ºñÆ®´Â
PORTBÀÇ Çɰú °ü°è°¡ ÀÖ´Ù. Áï DDRBÀÇ 5¹øÂ° ºñÆ®¿¡ 1À» ¾²¸é PB5(PORTBÀÇ 5¹øÂ°
ÇÉ)À» Ãâ·ÂÀ¸·Î ¼³Á¤ÇÑ´Ù. ¿ì¸®´Â PB0~PB7À» ¸ðµÎ Ãâ·ÂÀ¸·Î »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. µû¶ó¼
DDRB¿¡ 0xFF¸¦ ½áÁÖ¸é µÈ´Ù. PORTB¿¡ ¿øÇÏ´Â °ªÀ» Ãâ·ÂÇÏ°í ½ÍÀ» ¶§´Â ¾î¶»°Ô ÇØ¾ß
ÇÒ±î? ´äÀº PORTB ·¹Áö½ºÅÍ¿¡ ¿øÇÏ´Â °ªÀ» ¾²´Â °ÍÀÌ´Ù. ¿¹¸¦ µé¾î PORTB¿¡ 0x02¸¦
¾²¸é PB1¿¡ '1'ÀÌ Ãâ·ÂµÇ°í ³ª¸ÓÁö Çɵ鿡´Â '0'ÀÌ Ãâ·ÂµÈ´Ù. µû¶ó¼ PB1¿¡ ¿¬°á±
LED¸¦ Á¦¿ÜÇÑ ¸ðµç LED°¡ ÄÑÁú °ÍÀÌ´Ù.

±×·³
ÀÌÁ¦ ¾Æ·¡ÀÇ ¼Ò½º ÆÄÀÏÀ» º¸ÀÚ.
/* Title: AVR-GCC
test program #1 for the STK200 eva board Author:
Volker Oth Date: 4/1999
Purpose: Flashes the LEDs on Port
B with a hard coded delay loop needed
Software: AVR-GCC needed
Hardware: ATS90S8515/8535/2313/mega on STK200/STK300
board Note: To
contact me, mail to volkeroth@gmx.de
You
might find more AVR related stuff at my homepage: http://members.xoom.com/volkeroth
*/
#include <io.h> /* ÀÔÃâ·Â ÇÔ¼ö°¡ Á¤ÀǵǾî ÀÖ´Ù. */
typedef unsigned char u08;
int main( void ) /* main() ÇÔ¼ö´Â ¸ðµç ÇÔ¼öÀÇ ½ÃÀÛ ÁöÁ¡ÀÌ´Ù.
*/ { u08
led, i, j, k; /* led : ledÀÇ »óŸ¦ ÀúÀå, i, j, j : ¾Æ·¡ÀÇ
for ·çÇÁ¸¦ ¼öÇàÇÏ´Â ÇÊ¿äÇÑ º¯¼ö */
outp(0xff,
DDRB); /* PORTBÀÇ ¹æÇâÀ» ¸ðµÎ Ãâ·ÂÀ¸·Î ¼±¾ð */
led = 1;
/* led¶ó´Â º¯¼ö¸¦ 1·Î ÃʱâÈ */
for (;;)
{ /* ¹«ÇÑ ·çÇÁ ½ÃÀÛ */ outp(~led,
PORTB); /*
led¶ó´Â º¯¼ö¸¦ ¹ÝÀü½ÃŲÈÄ PORTB¿¡ ±× °ªÀ» ¾´´Ù. */ led <<=
1; /* led¶ó´Â º¯¼ö³»ÀÇ °ªÀ» ¿ÞÂÊÀ¸·Î 1ºñÆ® ½¬ÇÁÆ®ÇÑ´Ù.
*/ if
(!led) /* led¶ó´Â º¯¼ö°¡ 8¹ø ½¬ÇÁÆ®µÇ¸é ´Ù½Ã 1À»
ÀÔ·ÂÇÑ´Ù. */ led
= 1;
for
(i=0; i<255; i++) /* ½Ã°£À»
Áö¿¬½Ã۱â À§ÇÑ ·çÇÁ */
for(j=0;
j<255;j++) k++;
/* Àǹ̾øÀÌ ½Ã°£ Áö¿¬À» À§ÇÑ µ¡¼À */
}
} |
ˤ˂
¼Ò½º ÆÄÀÏ¿¡¼ º¸¸é »ý¼ÒÇÑ °ÍµéÀÌ ¸î°¡Áö ³ª¿Â´Ù. ¸ÕÀú io.h ÆÄÀÏÀº ÀÔÃâ·Â¿¡ °ü°èµÈ ÇÔ¼öµé°ú ·¹Áö½ºÅÍÀÇ ¾îµå·¹½º°¡ ¼±¾ðµÈ ÆÄÀÏÀÌ´Ù.
¿ì¸®ÀÇ ¿¹Á¦¿¡¼´Â outp()¶ó´Â ÇÔ¼ö°¡ ³ª¿À´Âµ¥ ÀÌ ÇÔ¼ö°¡ io.h¿¡ ¼±¾ðµÇ¾î ÀÖ´Ù.
±×¸®°í outp() ÇÔ¼ö¸¦ ¼³¸íÇÏ¸é ´ÙÀ½°ú °°´Ù.
outp(value, register_address); |
value : ·¹Áö½ºÅÍ¿¡ ¾²°í ½ÍÀº °ªÀ» ÀǹÌÇÑ´Ù. register_address
: °ªÀ» ¹Ù²Ù°í ½ÍÀº ·¹Áö½ºÅÍÀÇ ¾îµå·¹½º¸¦ ÀǹÌÇÑ´Ù. |
µû¶ó¼, outp(0xff,
DDRB); ¶ó°í Çϸé DDRB ·¹Áö½ºÅÍ¿¡ 0xff¸¦ ¾´´Ù. ±×¸®°í led¶ó´Â º¯¼ö´Â LED¸¦ Äѱâ
À§ÇÑ °ªÀ» ÀúÀåÇϰí ÀÖ´Â º¯¼öÀÌ´Ù. óÀ½ºÎÅÍ µû¶ó°¡ º¸¸é óÀ½¿¡ led=1·Î ÃʱâȵȴÙ.
±×¸®°í for()·çÇÁ¿¡ µé¾î°¡¼ led°ªÀ» ¹ÝÀü½ÃŲÈÄ, Áï (1ÀÇ ¹ÝÀü=>0xFE)°¡ µÈ´Ù.
À̸¦ PORTB¿¡ ¾´´Ù. ±×·¯¸é PB0¿¡ ¹°¸° LED°¡ ÄÑÁø´Ù. ±×¸®°í ledº¯¼ö¸¦ ¿ÞÂÊÀ¸·Î
½¬ÇÁÆ® 1Çϸé led=1¿¡¼ led=2°¡ µÈ´Ù. Áï, ´ÙÀ½¹ø¿¡ ÄÑÁö´Â LED´Â PB1ÀÌ µÇ°í, ¶Ç
´Ù½Ã led°¡ ¿ÞÂÊÀ¸·Î ½¬ÇÁÆ® 1Çϸé PB2°¡ ÄÑÁø´Ù. ÀÌ·± ½ÄÀ¸·Î °è¼Ó for()·çÇÁ¸¦
¹Ýº¹ÇÏ¸é °á±¹ led=0x80ÀÌ µÇ°í ÀÌ »óÅ¿¡¼ ¿ÞÂÊÀ¸·Î ½¬ÇÁÆ® 1¸é led º¯¼ö°ªÀº 0°¡
µÈ´Ù. ±×·¯¸é if(!led)¶ó´Â Á¶°Ç¹®¿¡¼ °É·Á¼ led=1·Î ´Ù½Ã ÃʱâȵȴÙ. ¸¶Áö¸·¿¡
ÀÖ´Â for() ·çÇÁ µÎ °³´Â ½Ã°£ µô·¹À̸¦ ¾ò±â À§ÇÑ ºÎºÐÀÌ´Ù. ÀÌ·¸°Ô ÇÏ´Â ÀÌÀ¯´Â
AVRÀÇ ¸í·É¾î ¼öÇà ¼Óµµ°¡ ¸Å¿ì ºü¸£±â ¶§¹®¿¡ µô·¹À̸¦ ÁÖÁö ¾ÊÀ¸¸é LED°¡ 8°³ ¸ðµÎ
ÄÑÁø °Íó·³ º¸ÀÌ°Ô µÈ´Ù.
´ÙÀ½ gcctest1
µð·ºÅ丮¿¡¼ make¶ó°í
Ä¡°í ¿£Å͸¦ ´©¸£¸é ÄÄÆÄÀÏÀÌ µÉ °ÍÀÌ´Ù. ÄÄÆÄÀÏ ÈÄ¿¡ »ý¼ºµÇ´Â ÆÄÀÏÀº ´ÙÀ½°ú °°´Ù.
gcctest1.o
|
gcctest1.cÀ» ÄÄÆÄÀÏÇÏ¿© ¾ò¾îÁø
¿ÀºêÁ§Æ® ÆÄÀÏ. |
gcctest1.lst |
gcctest1.c°¡ ¾î¼Àºí¸® ¾ð¾î·Î
º¯È¯µÈ ÆÄÀÏ(¸®½ºÆ® ÆÄÀÏÀ̶ó°í ºÎ¸¥´Ù). |
gcctest1.obj |
AVR-Studio¿¡¼ »ç¿ëÇϱâ À§ÇÑ
¿ÀºêÁ§Æ® ÆÄÀÏ |
gcctest1.map |
·ÒÆÄÀÏÀÇ ±¸¼ºÀÌ ¾î¶»°Ô µÇ´ÂÁö¸¦
º¸ÀÌ´Â ¸ÊÆÄÀÏ |
gcctest1.rom |
ÄÄÆÄÀÏµÈ ±â°è¾î ÄÚµå, Áï ·ÒÆÄÀÏ |
gcctest1.eep |
8515³»ºÎÀÇ EEPROM µ¥ÀÌÅÍ ÄÚµå |
À§¿¡¼ *.eep ÆÄÀÏÀº
¾ÆÁ÷ Çʿ䰡 ¾øÀ¸¸ç, ÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§Çؼ´Â *.rom ÆÄÀÏÀ» ISP¸¦ ÀÌ¿ëÇÏ¿©
Ç÷¡½¬¿¡ ÇÁ·Î±×·¥ÇÏ¸é µÈ´Ù.
gcctest1.rom
ÆÄÀÏÀ» ÇÁ·Î±×·¥Çϱâ À§Çؼ´Â ¸ÕÀú ȨÆäÀÌÁö¿¡ ÀÖ´Â AVR_ISP¸¦ ¼³Ä¡ÇÏ¿©¾ß ÇÑ´Ù.
AVR_ISP¸¦ ¸ÕÀú ½ÇÇàÇϰí, ¸Þ´º¿¡¼ Project->New
Project...À» ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°Àº ÂüÀÌ ¶á´Ù. ±×·¯¸é µð¹ÙÀ̽º
¼±Åà âÀÌ ¶ß°í µ¶ÀÚÀÇ È¯°æ¿¡ ¸Â´Â µð¹ÙÀ̽º¸¦ ¼±ÅÃÇÑ´Ù.

±×·± ´ÙÀ½ Title¿¡ ´ÙÀ½°ú
°°ÀÌ gcctest1À̶ó°í ¾´´Ù.

±×·± ´ÙÀ½ ¼¼°¡Áö À©µµ¿ì(Data
EEPROM Memory À©µµ¿ì, Program Memory À©µµ¿ì, Project Manager À©µµ¿ì)¿¡¼ Program
Memory À©µµ¿ì¸¦ Ŭ¸¯ÇÑ´Ù. ±×·± ´ÙÀ½ ¸Þ´º¿¡¼ File->Load¸¦ ¼±ÅÂÇÑ ´ÙÀ½ gcctest1.romÀ» ¼±ÅÃÇÑ´Ù.

±×·¯¸é ´ÙÀ½°ú °°ÀÌ
ÆÄÀÏÀÌ ¼º°øÀûÀ¸·Î ÀÐÈù´Ù.

±×¸®°í ³ ÈÄ ¸Þ´º¿¡¼
Options->Change Printer Port¸¦ ¼±ÅÃÇÏ¸é ´ÙÀ½°ú °°ÀÌ ÇÁ·Î±×·¡¸Ó¸¦ °¨ÁöÇÑ´Ù. ÇÊÀÚÀÇ °æ¿ì´Â STK300À»
»ç¿ëÇϱ⠶§¹®¿¡ ¾Æ·¡¿Í °°ÀÌ Ãâ·ÂµÈ´Ù.

´ÙÀ½Àº F5¸¦ ´©¸£°Å³ª
¸Þ´º¿¡¼ Program->Auto-programÀ» ¼±ÅÃÇϸé ÇÁ·Î±×·¡¹ÖÀÌ µÈ´Ù. ¼Óµµ°¡ ´À¸± °æ¿ì´Â ´ÙÀ½°ú °°ÀÌ Çϸé
»¡¸® ÇÁ·Î±×·¡¹Ö ÇÒ ¼ö ÀÖ´Ù. Áï EEPROMÀº Writer¿Í Verify¸¦ ÇÒ Çʿ䰡 ¾øÀ¸¸ç,
Verify Deviceµµ »ý·«Çصµ µÈ´Ù.(´ëºÎºÐ Verify¿¡ ½Ã°£ÀÌ ¸¹ÀÌ ¼Ò¿äµÈ´Ù.)

¿©±â±îÁöÇϸé LED°¡
¼øÂ÷ÀûÀ¸·Î ±ô¹ÚÀÌ´Â °ÍÀ» º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ¸¶Áö¸·À¸·Î ÇÁ·ÎÁ§Æ®¸¦ ÀúÀåÇÑ´Ù.
Project->Save Project...¸¦
¼±ÅÃÇÑ ÈÄ ¿øÇÏ´Â ÆÄÀϸíÀ¸·Î ÇÁ·ÎÁ§Æ®¸¦ ÀúÀåÇÏ¸é µÈ´Ù. ÇÁ·ÎÁ§Æ®´Â *.avrÀ̶ó´Â
È®ÀåÀÚ·Î ÀúÀåµÈ´Ù.
5¸¦ ÀÌ¿ëÇÏ´Â ÆíÀÌ ³ºÀ» µí ½Í´Ù.
°¡°Ýµµ 6,000~7,000¿ø Á¤µµÇϰí 8051ÇÏ°í ¿ÜÇüÀÌ ºñ½ÁÇÏ´Ù(ÇÏÁö¸¸ ´õ °·ÂÇÏ´Ù).
±×¸®°í ISP ÇÁ·Î±×·¡¸Ó´Â "·Ò ¶óÀÌÅÍ ¸¸µé±â"
ÄÚ

|