아두이노에서 AVR 사용하기

Arduino를 조금 써보니깐 왠지 직접 못건드리니 찝찝하다....

C로 직접 건들여보면 더 좋을것 같아서  "AVR 처럼 사용가능하게 하는 방법" 을

구글에서 찾으니깐 다음과 같은 글이 나왔다...
http://www.javiervalcarce.eu/wiki/Program_Arduino_with_AVR-GCC
http://symbolx.org/robotics/107-arduinoavr-command-line-dev-environment

2번쩨 링크를 보면....예제소스도 있고, Makefile도 있겠다 싶어서 바로

#make;make upload

해봤으나 실패...

다음과 같은 오류가 떠버리고 더이상 진행되지 않는다.

avrdude: stk500_recv(): programmer is not responding

에러를 또 구글에서 찾아보니깐 다름과 같이 하면 된다구 하네. (역시 구글신은 모르는게 없엉....)

http://www.neuraladvance.com/2010/04/08/using-avrdude-with-the-arduino-duemilanove/

응? 거의 비슷한데.... 하다가 좀더 자세히 보니 upload할때 -b 플래그가 빠져있는것을 확인했다..

man페이지 보니깐 baudrate라고 한다...  업로드 속도 관련된듯하다 (이것도 구글이 갈켜줌...ㅋ)

그래서 최종으로 만들어진 Makefile.... 첫번째 링크의  Makefile과 유사하다.

CC=avr-gcc
CFLAGS=-Wall -Os -DF_CPU=$(F_CPU) -mmcu=$(MCU)
MCU=atmega168
F_CPU=16000000UL

OBJCOPY=avr-objcopy
BIN_FORMAT=ihex

# 통신포트 는 개인마다 다를수 있으므로 수동으로 설정 (arduino 의 그 통신포트를 그대로 사용)
PORT=/dev/ttyACM0
BAUD=19200
PROTOCOL=stk500v1
PART=$(MCU)

# 당연히 avrdude 가 설치되어 있어야 한다.
AVRDUDE=avrdude -F -V

RM=rm -f

.PHONY: all
all: main.hex

main.hex: main.elf

main.elf: main.s

# 소스파일명이 다르다면 변경해 주도록 한다.
main.s: main.c

.PHONY: clean
clean:
        $(RM) main.elf main.hex main.s

.PHONY: upload
upload: main.hex
        $(AVRDUDE) -c $(PROTOCOL) -p $(PART) -P $(PORT) -U flash:w:$<

%.elf: %.s ; $(CC) $(CFLAGS) -s -o $@ $<

%.s: %.c ; $(CC) $(CFLAGS) -S -o $@ $<

%.hex: %.elf ; $(OBJCOPY) -O $(BIN_FORMAT) -R .eeprom $< $@

그리고 다음 소스를 복사해서...

(첫번째 링크에 있는 소스와 같은 소스, 왔다가따 하기 귀찮아서 그냥 따로 붙여 넣었다)
/*
* LED 껌벅 껌벅 소스
*/

#include <avr/io.h>
#include <util/delay.h>

int main (void)
{
/* set PORTB for output*/
DDRB = 0xFF;

while (1) {
/* set PORTB.6 high */
PORTB = 0x20;

_delay_ms(1000);

/* set PORTB.6 low */
PORTB = 0x04;

_delay_ms(1000);
}

return 1;
}

실행하면... 뭐라고 메세지가 쭉 나오고 Arduino 보드에 반응이 나타날것이다

제대로 확인하고 싶으면 딜레이 속도를 조절해서 LED의 깜박임 속도를 보면 된다~

아 그리구 Arduino랑 AVR랑 핀 배열에 조금 차이가 있으니깐 꼭 한번 보자.

Arduino 소스를 AVR로 만들어볼때 유용할듯... 해봐야지...ㅋ

사용자 삽입 이미지
http://www.arduino.cc/en/Hacking/PinMapping168
http://techblog.textcube.com/156

어... 근데 이거 적다보니깐 다 어디서 배껴온거네 ㅋㅋㅋㅋ 내가 만든건 뭐냑 ㅋㅋㅋ



ps1; Makefile로 하는거니깐.... vim에서 이제 편하게 코딩이 가능하다 -_-v 자바 안녕~ 스케치 안녕~

ps2; avrdude로 하니깐 부트로더 툴체인 어쩌고 신경 안써서 편한거 같다.

3학년 임베디드 시간에 툴체인 설정하는거 생각하면 이건 축복이나 다름없다 (뭐 다르긴하다만)

ps3; 위에 적힌대로 말고, 그냥 Arduino Code를 외부 에디터로 사용하려면

다음과 같은 방법을 사용 하면 된다.

http://www.arduino.cc/en/uploads/Hacking/Makefile

난 시도는 해봤는데 이상하게 컴파일은 안되서 때려치웠음 -_-.....

'Hardware' 카테고리의 다른 글

아두이노 리눅스에서 사용하기  (7) 2010.10.23
NEXT-510UHP USB허브 구입기  (10) 2010.09.13
모니터를 사자 #1  (6) 2010.08.01