Всем привет!
тема значить в следующем:
Имеется устройство на базе Atmega324PA. Оба уарта на выход выкидывают то что надо, но как только устанавливаю разрешение на прерывания по приёму - виснит.
Помимо этого, устройства(3 шт на руках), имеют свойство ломатся=(
первое перестало видится программатором, ещё два просто заглохли.
Перед тем как заглохнуть, показалось что идёт постоянный ресет.
схема значить следующая:
ch.pdf
инициализация юартов такова:
void InitUART0(void)
{
RX_U0DDR &= ~(1‹‹U_SEL0); //ногу RX0 на вход
RX_U0PORT |= 1 ‹‹ U_SEL0; //ногу RX0 подтяжку
U_SEL0DDR |= 1 ‹‹ U_SEL0; //ногу USEL0 на выход
UCSR0A = 0x00;
UCSR0B = (1‹‹RXCIE0)|(1‹‹TXEN0)|(1‹‹RXEN0);
UCSR0C = 0x06;
UBRR0H = (unsigned char)(UART_UBBR_VALUE ››
;
UBRR0L = (unsigned char)(UART_UBBR_VALUE);
}
void InitUART1(void)
{
RX_U1DDR &= ~(1‹‹U_SEL1); //ногу RX1 на вход
RX_U1PORT |= 1 ‹‹ U_SEL1; //ногу RX1 подтяжку
U_SEL1DDR |= 1 ‹‹ U_SEL1; //ногу USEL1 на выход
UCSR1A = 0x00;
UCSR1B = (1‹‹RXCIE1)|(1‹‹TXEN1)|(1‹‹RXEN1);
UCSR1C = 0x06;
UBRR1H = (unsigned char)(UART_UBBR_VALUE ››
;
UBRR1L = (unsigned char)(UART_UBBR_VALUE);
}
обработчик следующий:
ISR(USART0_RXC_vect)
{
PORTC |= 1 ‹‹ PC3;
}
ISR(USART1_RXC_vect)
{
PORTC |= 1 ‹‹ PC3;
}
(светодиод(PC3 на схеме его нет) пришпарил и проверил при
UCSR1B = (0‹‹RXCIE1)|(1‹‹TXEN1)|(1‹‹RXEN1);
UCSR0B = (0‹‹RXCIE0)|(1‹‹TXEN0)|(1‹‹RXEN0);
тобиш без прерывания работает и дёргается так как хочу
)
но стоит включить прерывания так сразу полная опа
подскажите, пожалуйста, в чём загвоздка?
спасибо...