9 월에 시작되는 수석 프로젝트에 Arduino 라이브러리를 사용할 수 없기 때문에 AVR 코드로 Arduino Uno를 프로그래밍하려고합니다. 데이터 시트를 발견하고, 디지털 핀을 작동시키고, USB 직렬 연결을 통해 내 컴퓨터와 대화하려고했습니다. 나는이 설명서 (1)의 19 장을 완전히 여러 번 읽었으며, 나는 여전히 길을 잃었다. 라이브러리 문서 자체와 데이터 시트에서 코드를 복사하여 붙여 넣었습니다. 아직 상황이 해결되지 않았거나 찾을 수 없다고합니다. 어떤 도움을 주셔서 감사합니다.Atmega328p 데이터 시트 해석하기
코드 :
#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
#include <util/setbaud.h>
#define analog1 PC0
#define LED PB5
#define BAUD 9600
//#define F_CPU 16000000
void init_io(){
DDRB |= (1<<LED);
DDRC |= (0<<analog1);
}
static void
uart_9600(void)
{
UBRRH = UBRRH_VALUE;
UBRRL = UBRRL_VALUE;
#if USE_2X
UCSRA |= (1 << U2X);
#else
UCSRA &= ~(1 << U2X);
#endif
}
void USART_Transmit(unsigned char data)
{
/* Wait for empty transmit buffer */
while (!(UCSRnA & (1<<UDREn)))
;
/* Put data into buffer, sends the data */
UDRn= data;
}
int main(){
int analog_value = 1000;
while(1){
//analog_value = PINC;
if(analog_value > 500){
PORTB |= (1<<LED);
_delay_ms(500);
PORTB &= ~(1<<LED);
_delay_ms(500);
putchar(analog_value);
}
}
}
고마워요!
당신이 이해하지 못하거나 효과가없는 것에 대해 더 자세하게 설명하십시오. –
일반적으로 'n'은 포트 번호를 나타냅니다. 그래서'USART0'를 사용한다면'UCSR0A','UDRE0','UDR0 = data'를 사용하십시오. 아직도, 당신은 당신이 도움이 필요한 것을 분명히하지 않았습니다. 문제를 자세히 설명해 주시겠습니까? – nonsensickle
마찬가지로, 당신은 실제로'main' 함수에서 아무것도 전송하지 않습니다 ... 전송이 인터럽트에서 일어나고 있습니까? – nonsensickle