В последнее время я рву на себе волосы, пытаясь заставить ATmega162 на моем STK200 общаться с моим компьютером через RS232. Я проверил и убедился, что STK200 содержит микросхему MAX202CPE.
Я настроил чип на использование внутренней тактовой частоты 8 МГц и разделил ее на 8.
Я пытался скопировать код из таблицы данных (и внес изменения там, где компилятор жаловался), но безрезультатно.
Мой код ниже, может ли кто-нибудь помочь мне решить проблемы, которые у меня возникают?
Я подтвердил, что мой последовательный порт работает на других устройствах и исправен.
Спасибо!
#include <avr/io.h>
#include <avr/iom162.h>
#define BAUDRATE 4800
void USART_Init(unsigned int baud)
{
UBRR0H = (unsigned char)(baud >> 8);
UBRR0L = (unsigned char)baud;
UCSR0B = (1 << RXEN0) | (1 << TXEN0);
UCSR0C = (1 << URSEL0) | (1 << USBS0) | (3 << UCSZ00);
}
void USART_Transmit(unsigned char data)
{
while(!(UCSR0A & (1 << UDRE0)));
UDR0 = data;
}
unsigned char USART_Receive()
{
while(!(UCSR0A & (1 << RXC0)));
return UDR0;
}
int main()
{
USART_Init(BAUDRATE);
unsigned char data;
// all are 1, all as output
DDRB = 0xFF;
while(1)
{
data = USART_Receive();
PORTB = data;
USART_Transmit(data);
}
}