Witam.
Napisałem prosty program dla testu odbierania znaków z komputera przez RS232 do ukontrolera AT90S2313.. oto program:
W ogóle obsługa przerwania SIGNAL(SIG_UART_RECV) działa, widzę to po tym że zapalają się diody na płytce wg. ustawienia PORTB. Nie działa natomiast rzecz związana z przepisywaniem zawartości UDR do zmiennej znak, bo nie ma zmiany w PORTB w pętli for(;
.
Czy wiecie może co jest nie tak?
Napisałem prosty program dla testu odbierania znaków z komputera przez RS232 do ukontrolera AT90S2313.. oto program:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <stdlib.h>
#define VUART 2400
#define VUBRR F_CPU/(VUART*16)-1
char znak;
SIGNAL(SIG_UART_RECV)
{
PORTB=32;
znak = UDR;
}
int main(void){
DDRD = 126;
DDRB = 255;
PORTB = 0;
PORTD=2;
UBRR=VUBRR;
UCR = 1<<RXCIE | 1<<RXEN;
sei();
for(;;){
if(znak=='b')
PORTB=64;
}
}
W ogóle obsługa przerwania SIGNAL(SIG_UART_RECV) działa, widzę to po tym że zapalają się diody na płytce wg. ustawienia PORTB. Nie działa natomiast rzecz związana z przepisywaniem zawartości UDR do zmiennej znak, bo nie ma zmiany w PORTB w pętli for(;
Czy wiecie może co jest nie tak?