logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[ATmega644][C] Problem z odbiorem przez USART

ePeter1234 07 Lis 2009 19:19 1113 1
REKLAMA
  • #1 7228469
    ePeter1234
    Poziom 18  
    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:

    
    #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.
  • REKLAMA
  • #2 7232304
    ePeter1234
    Poziom 18  
    Zamykam temat. Problem rozwiązany. Ten kod działa. Nie wiem co było nie tak:)
REKLAMA