'arduino'에 해당되는 글 2건

  1. 2010.11.10 아두이노에서 AVR 사용하기 2
  2. 2010.10.23 아두이노 리눅스에서 사용하기 7

아두이노에서 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

아두이노 리눅스에서 사용하기

내용과는 아무 상관없는 아두아노 IDE스샷... 그림이 있어야 좀 눈에 띄지 않겠어요? :D

사용자 삽입 이미지

1 장치를 켜고 USB에 연결, 다시한번 회로도에 맞게 되어있는지 확인


2 커널에서 다음을 모듈/커널에 장착해 넣는다 (어지간해선 일반유저는 이거 안건들여도 됨)

Device Drivers ---> [*]USB support --> [*/M] USB Modem (CDC ACM) support

Device Drivers ---> [*]USB support --> <*/M>USB Serial Coverter support --->

[*/M] USB FTDI Single Port Serial Driver

첫번째껀 아두아노에서  usb serial 통신을하기 위한 시리얼포드 설정이다

(윈도우의 COM PORT - 옛날에 모뎀쓸때 쓰던 포트)

보통 메뉴얼에 보면 /dev/ttyUSB*가 나온다고 하는데 다 그런건 아니다

/dev/ttyACM*이 나와도 정상이니깐 신경쓰지말고

뒤에 preferences.txt 파일 설정할때 조심만 하도록 하자

두번째껀 그냥 간단하게 아두이노 에서 사용하는 USB드라이버의 한 종류(FTDI) 라고 생각하면 된다

- 어쨋던 모듈에 신경쓰기 싫다고 하면 나처럼 다 커널안에 넣어버리는것도 한 방법이다.....

3. arduino 설치

- 보통 어지간한 배포판에는 거의다 포함 되어있기 때문에 별 걱정없이 걍 설치해주면 된다...

(적어도 아치, 우분투, 데비안엔 있는것은 확인했다)

아! 그리고 꼭 "32비트용 패키지 인지 64비트용 패키지인지" 확인하고 설치하도록 하자.

(이거때문에 내 황금같은 일요일을 날렸단 말이오!!! 겨우 이거가지고 ㅠㅠ)

이 비트는 지금 운영체제의 비트를 의미하는것이 아니다 - CPU임

32비트 CPU를 가진 컴퓨터라면, 32비트 패키지를 설치해주고,

64비트 CPU를 가진 컴퓨터라면 64비트를 설치하도록 하자

3. uucp그룹에 사용자를 추가히켜 준다.
gpasswd -a <YourID> uucp
4. ~/.arduino/preferences.txt에서

serial.port = /dev/ttyACM0 # 뭐 ttyUSB* 라면 그걸로 맞춰주면 된다

로 설정한다

5. arduino (스케치) 를 실행

Tools -> Board ->에 자신의 arduino모델을 선택

Tools -> Serial Port -> /dev/ttyACM0를 선택한다 (아마 선택되어 있을수도 있다)

- 이제 코드를 집어넣고 upload를 해보자. 스케치에서 작업하는 것은 여기까지

다시한번........Trubleshooting

1. 아두아노 스케치에서 Tool -> Serial Port가 회색인데?, 당근 /dev에 장치도 안올라오구 왜이럼?
- FTDI 모듈이 안잡혔거나, 커널에서 USB 시리얼 포트 설정이 안되서 그럼, 2번을 보셈

2. 컴파일은 잘되는데 업로드가 안되는?
- 다시한번 확인해보셈, 과연 패키지랑 님 시퓨랑 맞나.

ps; 참고로 내 모델은 Uno

이후에 외부 에디터(아마 Vim)에서 아두아노를 컴파일해서 업로드 하는 방법을 포스팅 할 예정
(솔까말 저기 아두이노 스케치로 에디팅하기 정말 불편하다...... 그래서......)


근데 그건 언제일까.......

'Hardware' 카테고리의 다른 글

아두이노에서 AVR 사용하기  (2) 2010.11.10
NEXT-510UHP USB허브 구입기  (10) 2010.09.13
모니터를 사자 #1  (6) 2010.08.01
prev 1 next