티스토리 뷰
/*
2016-03-09
11:10
*/
makefile이 있는 디렉토리에 main.c를 만들자
makefile은 WINAVR 설치후 WINAVR 항목에서 찾을수 있다.
이것을 복사해서 사용할 디렉토리에 넣어준다.
(main문만 넣어보자)
디렉토리에 main.c와 Makefile이 존재한다.
cmd를 실행시켜서 make 라는 명령어를 사용하면 아래와 같이 출력된다.
오류가 난다면 아래에 있는 압축파일을 압축 해제하고 문제를 해결한다.
.dll 파일을 복사해서 winavr이 설치된 디렉토리에 복사 붙여 넣기 한다.
붙여넣기한후 다시 cmd창에서 make를 사용하면 아래와 같이 출력된다.
이후에 cmd창에 make clean을 넣어본다.
이후에 메모장에 Make file을 넣어보자
여기서 #이 붙어있는것은 주석이다.
아래로 조금 내려서 Mcu = atmega128을 2560으로 바꿔준다.
8을 16으로 바꿔주고 저장
아래로 더 내려보면 TARGET이라는게 있다.
make file
C:\WinAVR-20100110\bin 경로의 bin은 binary의 약자로 실행파일들이 모여있는곳이다.
이게 avr컴파일러
C:\WinAVR-20100110\utils
컴파일러와 관계없는 파일
make.exe가 우리가 사용한것
make를 cmd에서 make.exe를 사용해서 빈공간을 채워줌(우리가 쳐야할 글자를 다 채워줌)
이름을 다시 atmega128로 바꾸고 cmd에서 make를 실행해보면
Device : atmega128로 바뀐것을 볼수 있다.
다시 make clean을 하게 되면 지워진다.
다시 2560으로 돌려놓고 밑에 보면 warning이 있다.
일단 위에서 했듯이 main.c에 이런 내용이 들어있어야 한다.
int main()
{
return 0;
} |
warning의 이유는 main함수가 약간 다르다는것을 알려주는것
컴파일러는 gcc라는 컴파일러인데 디테일하게 체크함
메인함수에 인자가 없다는 것을 찾은건데 main(void)를 써야함
다시 main.c 메모장으로 돌아가서 아래 소스를 저장하고 cmd에서 make clean --> make 를 실행해보면
int main(void)
{
return 0;
} |
아래의 출력 결과를 볼수 있다.
make를 하게되면 디렉토리에 hex가 생성된다.
이것이 프로그래머를 통해 atmega에 전송되면 펌웨어가 된다.
이것을 atmega에 넣어보자
4 pin molex(구멍이 네개 - 암놈)
주의 사항: 전원 스위치를 내려놓고 어댑터를 연결하자!
오후
#define DDRA (*((volatile unsigned char *)0x21))//21번지를 따라가면 1바이트 DDRA라는 기능이 있다.
#define PINA (*((volatile unsigned char *)0x20))
#define PORTA (*((volatile unsigned char *)0x22))
int main(void)
{
volatile unsigned int uiCnt;
DDRA = 0xFF; //모두 High로 사용-5V
while(1) //무한 반복 펌웨어는 종료하면 안되기때문에
{
for(uiCnt = 0; 30000>uiCnt; ++uiCnt);
PORTA = 0xFF;
for(uiCnt = 0; 30000>uiCnt; ++uiCnt);
PORTA = 0x00;
}
return 0; //항상 return 0; 위에 while(1)을 넣는다.
} |
pdf파일을 참고해서
DDRA, PINA, PORTA를 찾고 주소를 써줘야한다.
volatile unsigned int 를 해줌으로서
딜레이를 넣어준다.
DDRA는 PORT의 모든 핀을 사용
PORTA는 해당 포트의 모든 핀들을 on으로 해주는것
for문에의해 30000만큼 딜레이를 가지며 while문에 의해 계속 깜빡거리게 된다. |
주의: ATmega에선 항상 return 0; 위에 while(1)을 넣어줘야 반복 동작을 수행할수 있다.