AVR LED 켜기 (Bare-metal C)
#define F_CPU 16000000UL // 클럭 16MHz
#include <avr/io.h>
#include <util/delay.h>
int main(void)
{
// PB5를 출력으로 설정
DDRB |= (1 << PB5);
while (1)
{
// LED ON
PORTB |= (1 << PB5);
_delay_ms(1000);
// LED OFF
PORTB &= ~(1 << PB5);
_delay_ms(1000);
}
}
👉 이 코드는 1초 켜졌다가 1초 꺼지는 깜빡이기 예제입니다.
3️⃣ 핵심 포인트 설명
🔹 DDRB (Data Direction Register)
DDRB |= (1 << PB5);
PB5를 출력(Output) 으로 설정
🔹 PORTB
PORTB |= (1 << PB5); // HIGH → LED ON
PORTB &= ~(1 << PB5); // LOW → LED OFF
출력 핀에 HIGH / LOW 전압 출력
🔹 _delay_ms()
_delay_ms(1000);
소프트웨어 딜레이
F_CPU 반드시 정의해야 정확함
4️⃣ LED를 항상 켜기만 하고 싶다면
#include <avr/io.h>
int main(void)
{
DDRB |= (1 << PB5); // 출력 설정
PORTB |= (1 << PB5); // LED ON
while (1);
}
5️⃣ 컴파일 예시 (avr-gcc)
avr-gcc -mmcu=atmega328p -Os led.c -o led.elf
avr-objcopy -O ihex led.elf led.hex
avrdude -c usbasp -p m328p -U flash:w:led.hex
6️⃣ 만약 다른 칩이면?
예를 들면:
ATmega128
ATtiny13 / 85
외부 크리스탈 / 내부 클럭
👉 말해주시면 해당 MCU 기준으로 정확한 포트/핀 코드 다시 짜드릴게요.
원하시면 다음 단계로
타이머로 LED 깜빡이기
인터럽트
버튼으로 LED 제어
레지스터 직접 제어 vs 아두이노 비교
어디까지 가볼까요? 😄
카페 게시글
마이크로프로세서
AVR에서 LED 켜는 C 언어 소스....
땡초도사
추천 0
조회 64
26.02.05 17:31
댓글 0
다음검색