Witam!!!
Mam problem z odbiorem danych przez procka z PC. Napisałem procedury do obsługi USART. Inicjalizacja i wysyłanie danych do PC działa bez błędnie. Nie mogę jednak nic odebrać z komputera. Nie wiem gdzie mam błąd w programie. Zamieszczam listing kodu:
usart.c:
fragment main.c:
rx ustawione jako volatile char.
Mam problem z odbiorem danych przez procka z PC. Napisałem procedury do obsługi USART. Inicjalizacja i wysyłanie danych do PC działa bez błędnie. Nie mogę jednak nic odebrać z komputera. Nie wiem gdzie mam błąd w programie. Zamieszczam listing kodu:
usart.c:
#include "usart.h"
void usart_init(void)
{
UBRR0H = 0x00;
UBRR0L = 0x68;
UCSR0A = 0x02;
UCSR0B = 0x18; //włączenie RX i TX
UCSR0C = 0x06; //transmisja asynchroniczna, 1bit stopu, brak parzystości, dane 8bit
}
void usart_send(unsigned char rx_data)
{
while (!( UCSR0A & (1<<UDRE0))); //czekaj na opróżnienie bufora transmisji
UDR0 = rx_data; //załaduj dane do UDR0 i wyślij
}
void usart_send_string(const char *s)
{
while(*s)
{
usart_send(*s++);
}
}
unsigned char usart_recive(void)
{
while (!(UCSR0A & (1<<RXC0))); //Czekaj na ukończenie transmisji
return UDR0; //Zwróć dane z UDR0
}
fragment main.c:
rx = usart_recive();
if(rx == 0x6C)
{
usart_send(0x23);
}
rx ustawione jako volatile char.