ATmega168로 LED 켜기
기본적인 세팅을 확인합니다.
일단 칩프로그래머만 USB로 컴퓨터에 연결합니다.
장치관리자에 들어가서 Jungo라고 적힌 메뉴 트리를 여시면
AVRISP mk2와 WinDriver가 있어야 합니다.
그럼 이제 AVR studio를 엽니다. (버젼은 4.15 였죠?)
New Project를 누르시면 뭔가 설정하는 부분이 보이실 텐데
왼쪽 탭에서 AVR simulator2을 선택하고 오른쪽 탭에는 각자의 칩
(168 or 328)에 해당하는 것을 선택하고 프로젝트 이름을 정합니다.
여기가 중요합니다!!!!!
Project > Configuration Options 로 들어갑니다.
Device: 이 부분에 자신의 칩이 제대로 들어가 있는지 확인합니다.
Frequency: Arduino에 칩의 옆 부분에 길다란 트랙 모양의 은빛 부품이 있을 꺼에요. 여기에 자세히 보면 16MHz라고 적혀 있을 껍니다.
그러면 여기에 16,000,000(Hz)을 입력하시면 됩니다.
다음은 칩 프로그래머와 Arduino를 연결합니다.
IDC 커넥터 방향
상세한 연결은 후에~ (아무라도 먼저 올려주시면 감사하겠습니다.)
// code start
#include <avr/io.h>
#include <util/delay.h>
int main(void) {
DDRB=0b00100000;
while (1) {
PORTB = 0b00100000;
_delay_ms(100);
PORTB = 0b00000000;
_delay_ms(100);
}
}
-----
Configuration Option을 모두 조정하신 후에 위의 Code를 붙여 넣고
Build를 하세요.
Compile이 모두 완료되면 칩 위에 'Con'이라고 적힌 아이콘을 누르시면 탭이 무수히 많은 윈도우가 뜹니다. 여기에서 Fuse라고 적힌 탭으로 들어갑니다.
경고문의 메시지 창이 뜨면 하드웨어 적으로 연결이 잘못된 경우가 대부분일 겁니다. 혹은 전원이 들어가 있지 않은 경우일 수도 있어요.(이 때, 아뒤노에 전원이 들어가 있어야 한다는 의미입니다.)
Fuse의 아래쪽 탭에 세 개의 줄이 있습니다. 여기에 각각 다음과 같은 데이터가 연결되어 있어야 합니다.
168:
0XF8
0XDD
0XFF
328:
여기서 0x라고 적힌 것은 이 data가 16진법으로 이루어져 있다는 것을 의미합니다.
//Code 분석
#include <avr/io.h>
#include <util/delay.h>
int main(void) {
DDRB=0b00100000;
while (1) {
// while( ){ }의 ( )안에 true혹은 1에 해당하는 조건이 오면
// { } 안이 계속 반복하여 실행합니다.
PORTB = 0b00100000; // PortB의 6번째 즉, PB5(pin13)에 5V를~
// 참고로, 00000001은 PB0을 의미합니다.
_delay_ms(100);
PORTB = 0b00000000;
_delay_ms(100);
}
}
datasheet의 p.86을 참조하시면 Register에 관한 너무 자세한? 정보가 담겨 있습니다. 00100000을 datasheet의 p.86, 11.4.2의 PortB의 그림과 매핑시켜보면 1이 가리키는 부분이 PB5임을 알 수 있습니다.
p.72 11.2.3
switching between I & O 참조
* SFR (Speical Function Register)
-----
Error) 'make file' 이란 구문이 섞인 메시지가 뜨는 경우는 경로에 한글이
섞여있는지 확인해주시면 됩니다.