Witam.
Mam taki problem. Próbuję się bawić z UARTem. Program (tzw. echo) działa poprawnie - sprawdzam za pomocą Br@y terminala. Natomiast chciałem pójść dalej i wykorzystać przerwanie od odebrania. no i niestety mi niezbyt to działa (w sensie nie wchodzi w to przerwanie).
A oto kod:
Po odebraniu czegokolwiek co wysyłam (np za pomocą tego Br@y terminala) powinna mi się świecić dioda (zmieniać stan po każdym odebraniu)
co może być przyczyną nie zadziałania przerwania?
Mam taki problem. Próbuję się bawić z UARTem. Program (tzw. echo) działa poprawnie - sprawdzam za pomocą Br@y terminala. Natomiast chciałem pójść dalej i wykorzystać przerwanie od odebrania. no i niestety mi niezbyt to działa (w sensie nie wchodzi w to przerwanie).
A oto kod:
#include <avr/io.h>
#include <avr/iom162.h>
#include <avr/interrupt.h>
#define USART_BAUDRATE 9600
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
//deklaracja zmiennych globalnych
unsigned char byte;
//załączenie UARTA
void UART_Init(void)
{
//ustaw prędkość transmisji
/* Set baud rate */
UBRR0H = (BAUD_PRESCALE >> 8);
UBRR0L = BAUD_PRESCALE;
/* Enable receiver and transmitter */
UCSR0B = (1<<RXEN0)|(1<<TXEN0)|(1<<RXCIE0);
/* Set frame format: 8data, 1stop bit */
UCSR0C = (1<<URSEL0)|(3<<UCSZ00);
}
SIGNAL(USART0_RXC_vect) //Przerwanie od odebrania USART0
{
PORTB ^=_BV(0);
byte = UDR0;
}
int main (void)
{
UART_Init();
sei();
for (;;) // Loop forever
{
}
}
Po odebraniu czegokolwiek co wysyłam (np za pomocą tego Br@y terminala) powinna mi się świecić dioda (zmieniać stan po każdym odebraniu)
co może być przyczyną nie zadziałania przerwania?