Witam.
Napisałem prosty program do wysyłania i odbierania danych przez USART. Jednak nic się nie dzieje.
UC - Atmega32
Q - 16000000
Proszę niech ktoś rzuci okiem i powie co jest nie tak
Napisałem prosty program do wysyłania i odbierania danych przez USART. Jednak nic się nie dzieje.
UC - Atmega32
Q - 16000000
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
#define SetBit(x,y) x |= (1<<y)
#define ClrBit(x,y) x &= ~(1<<y)
#define NegBit(x,y) x ^= (1<<y)
volatile unsigned char bufor_RXD=0;
volatile int a=0;
ISR (USART_RXC_vect)
{
while(bit_is_set(UCSRA, 7));
bufor_RXD = UDR;
PORTA=0b00000000;
}
int main(void)
{
//ustawienia portów I/O
DDRD = 0b00000000;
DDRA = 0b11111111;
//1 - oznacza wyjście 0 - wejście
PORTA = 0b00000000;
PORTA = 0b10011001; // diowy. 0 - zapalona
//**************************************
//ustawienie USART
//**************************************
UCSRB = 0b00011000;
UCSRC = 0b00000110;
UBRRL = 51; //prędkość transmisji 19200
SetBit(UCSRB,7); //włączenie przerwania od USART RX
sei();
while(1)
{
while (bit_is_set(UCSRA, 6)); //Czekamy na koniec wysyłania.
UDR=0x4F;
while (bit_is_set(UCSRA, 6));
UDR=0x4B;
while (bit_is_set(UCSRA, 6));
UDR=0x0D;
while (bit_is_set(UCSRA, 6));
UDR=0x0A;
while (bit_is_set(UCSRA, 6));
}
}
Proszę niech ktoś rzuci okiem i powie co jest nie tak