아두노 IDE 없이 열심히 아두노.
12922 단어 #Arduino
아두노 IDE는 없고 아두노 개발은
왜 그렇게 번거로운 일을 합니까?빈둥거리는 것 외에 다른 이유가 없다.
필요한 물건
이 문장과 같은 일을 하려면 다음과 같은 것이 필요하다.
* Arduino UNO Rev.3(Atmega 328P 탑재)
아마존에서 살 수 있어요.
탑재된 MCU가 Atmega328P가 아니라면 이 기사에 소개된 코드를 편집해야 한다.
일반적으로 같은 방법이 통용된다고 생각하지만, 윈도와 맥은 환경 구축에 매우 힘들다.ubuntu라면 포장 관리자로부터 한꺼번에 받을 수 있습니다.
쓰기에 사용됩니다.
Ubuntu20.04LTE 환경을 전제로 대화를 나눈다.
우선 다음 개발에 필요한 도구를 준비하세요.
avr의 교차 컴파일러입니다.
AVR의 C 라이브러리입니다.
는 AVR의 Intel Hex 파일에 대한 쓰기 응용 프로그램입니다.
sudo apt install gcc-avr avr-libc avrdude
빌드 디렉토리 생성하기다음과 같이 구성 디렉토리를 생성합니다.
Makefile 쓰기
빌드 단계에서는 다음 단계를 수행합니다.
이 구축 절차를make 파일로 수정할 때 다음과 같습니다.
#!/usr/bin/make -f
# setting output file
OUT = build/Program.ihex
# compiler setting
CC = avr-gcc
CFILES = $(wildcard src/*.c)
CPU_FREQ = 16000000
CFLAGS = -c -std=gnu99 -Os -Wall -ffunction-sections -fdata-sections -mmcu=atmega328p
# linker setting
LD = avr-gcc
OBJFILES = $(addprefix build/, $(notdir $(CFILES:.c=.o)))
LDFLAGS = -Os -mmcu=atmega328p -ffunction-sections -fdata-sections -Wl,--gc-sections
# objcopy setting
OBJCOPY = avr-objcopy
OBJFLAGS = -O ihex -R .eeprom
# avrdude setting
AVRDUDE = avrdude
PORT = /dev/ttyACM0
AVRDUDECONF = ./conf/avrdude.conf
AVRDUDEFLAGS = -C $(AVRDUDECONF) -v -V -p atmega328p -carduino -b 115200 -P $(PORT) -D
# Build Step Setting
all : $(OUT)
$(OUT) : $(OUT:.ihex=.elf)
$(OBJCOPY) $(OBJFLAGS) $^ $@
$(OUT:.ihex=.elf) : $(OBJFILES)
$(LD) $(LDFLAGS) $^ -o $@
build/%.o : src/%.c
$(CC) $(CFLAGS) -DF_CPU=$(CPU_FREQ) $^ -o $@
upload : $(OUT)
$(AVRDUDE) $(AVRDUDEFLAGS) -U flash:w:$^:i
clean :
rm -rf build/*.o
rm -rf build/*.ihex
rm -rf build/*.elf
.PHONY : all upload clean
이makefile은 src/디렉터리 이하의 * 입니다.c 파일을 추출하여 구축합니다.구축 결과물은build/디렉터리에 있습니다.
구축하려면 다음 명령을 실행하십시오.
make all
makefile의 다음 변수 값을 고쳐서 구축할 때의 설정을 설정할 수 있습니다.변수 이름
컨텐트 설정
CPU_FREQ
CPU 작업 빈도(기본값은 16MHz)
PORT
Arduino의 포트 연결
구축된 파일을 Arduino에 쓰고 싶을 때
make upload
집행하다.빌드 결과물을 삭제하려는 경우
make clean
build/디렉터리의 구축 결과물을 삭제합니다.avrdude 설정
avrdude의 설정은 conf/avrdude입니다.conf 파일에 씁니다.
avrdude.conf의 학습은 매우 번거롭기 때문에 Arduino IDE의 설정을 참고해야 합니다.
Arduino IDE의 avrdude 설정은 Hardware/tools/avr/etc에 있습니다.
같은 물건도 Giithub에 있습니다.
쓰기를 수행하려면 Serial 포트에 대한 액세스 제한을 변경해야 합니다.
쓰기 전에 다음 명령을 실행하십시오.
sudo chmod a+rw /dev/ttyACM0
환경에 따라 ttyACM0은 때로는 ttyACM1, 때로는 ttyACM2입니다.코드를 쓰다
src/Main.c에 코드를 쓰세요.
우리 삽입식 엔지니어에게 익숙한 요새를 만들자.
우선 아두노의 회로도를 보고 어떤 트랙터가 보드에 연결된 LED에 연결되었는지 조사한다.
다음 링크에서 Arduino의 회로도를 볼 수 있습니다.
PIN13이 보드의 LED에 연결되어 있음을 알 수 있습니다.13PIN을 하이라이트로 설정하면 LED가 빛을 낸다.13PIN을 거슬러 올라가서 어디에 연결하면...
PB5바늘인 거 알아요.
다음은 Atmega238p의 수첩을 찾아보겠습니다.
The DDxn bit in the DDRx Register selects the direction of this pin. If DDxn is written logic one, Pxn is configured as an output pin. If DDxn is written logic zero, Pxn is configured as an input pin.
그 밖에
If PORTxn is written logic one when the pin is configured as an output pin, the port pin is driven high (one). If PORTxn is written logic zero when the pin is configured as an output pin, the port pin is driven low (zero).
이런 견해가 있다.
그래서 src/Main.c에 다음 코드를 쓰십시오.
#include <avr/io.h>
#include <util/delay.h>
#define MS_DELAY 500
void setup(void);
void loop(void);
int main(void)
{
setup();
while (1)
{
loop();
}
}
void setup(void)
{
/* configure PB5 pin as an output pin */
DDRB |= _BV(DDB5);
}
void loop(void)
{
/* set PB5 pin high */
PORTB |= _BV(PORTB5);
/*Wait 500 ms */
_delay_ms(MS_DELAY);
/* set PB5 pin low */
PORTB &= ~_BV(PORTB5);
/*Wait 500 ms */
_delay_ms(MS_DELAY);
/* set PB5 pin high */
PORTB |= _BV(PORTB5);
/*Wait 500 ms */
_delay_ms(MS_DELAY);
/* set PB5 pin low */
PORTB &= ~_BV(PORTB5);
/*Wait 500 ms */
_delay_ms(MS_DELAY);
/* set PB5 pin high */
PORTB |= _BV(PORTB5);
/*Wait 2000 ms */
_delay_ms(MS_DELAY);
_delay_ms(MS_DELAY);
_delay_ms(MS_DELAY);
_delay_ms(MS_DELAY);
/* set PB5 pin low */
PORTB &= ~_BV(PORTB5);
/*Wait 500 ms */
_delay_ms(MS_DELAY);
}
한 다스make all
Arduino를 컴퓨터에 연결make upload
만들다이렇게 하면 아래와 같은 LED가 깜박거린다.
Giithub 창고
다음 창고에서 본문에 사용된 코드를 얻을 수 있습니다.
참고 문헌
Reference
이 문제에 관하여(아두노 IDE 없이 열심히 아두노.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MoriokaReimen/items/f5be80d9c3e89616c661텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)