Я пытаюсь передать данные с моего Atmega168A-PU на мой компьютер с помощью USART.Для этого я написал следующий код:
#include <avr/io.h>
#include <stdlib.h>
#define F_CPU 8000000UL
#define USART_BAUD 9600
#define UBRR_VALUE (F_CPU/16/USART_BAUD - 1)
void
usart_init(void)
{
UBRR0H = (unsigned char)(UBRR_VALUE >> 8);
UBRR0L = (unsigned char)UBRR_VALUE;
UCSR0B = _BV(TXEN0) | _BV(UDRIE0);
UCSR0C = _BV(USBS0) | _BV(UCSZ00) | _BV(UCSZ01);
//UCSR0C = _BV(UCSZ00) | _BV(UCSZ01);
}
ISR(USART0_UDRE_vect)
{
UDR0 = '0';
UCSR0A |= _BV(TXC0);
}
int main(void)
{
usart_init();
while(!(UCSR0A & _BV(UDRE0)));
UDR0 = '0';
while(1);
return 0;
}
Я подключил конвертер Arduino USB2SERIAL для чтения значений на моем компьютере, однако конвертер сообщает, что он не получает данные, а мой компьютер не получаетdata либо.
Примечание: у меня lfuse 0xe2 (CLKDIV8 отключен), поэтому у меня 8 МГц F_CPU.
Примечание: я тоже пробовал без UCSR0A |= _BV(TXC0);
.
Примечание: у меня есть конденсатормежду AVcc и AGnd.
Примечание: предохранители: (E: F9, H: DF, L: E2)