Всем привет. Написал программу, код не работает.
Начал сокращать код, чтоб найти откуда не работает и пришел к выводу, что не срабатывает прерывание по приему символа.
Код:
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include "usart.h"
//прием символа по usart`у в буфер
ISR(USART_RX_vect)
{
volatile uint8_t uByte = 0;// принятый байт
uByte=UDR;// Читаем текущий принятый байт
PORTA = 0xFF; // Порт А = 1
}
int main( void )
{
DDRA = 0xff; /* Порт А как выход */
UBRRH=0;
UBRRL=51; //скорость обмена 9600 бод
UCSRB=(1<<RXCIE)|(1<<RXEN)|(0<<TXEN); //разр. прерыв при приеме, разр приема, запр передачи.
UCSRC=(0<<UMSEL)|(1<<UCSZ1)|(1<<UCSZ0); //размер слова 8 разрядов
sei();
while(1)
{
}
return 0;
}
Моделирую в протеусе, у виртуального терминала так же настроено, 9600, паритет - NONE, 8 бит.
Помогите найти причину, пожалуйста.