Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: uart не передает 0x00
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Spb_Alex
LPC 213x Keil RV,

проблема, выставил прерывание на UART, пишу по RX, отсылаю по THRE

void Uart0_irq (void) __irq
{

if (!((U0IIR&IIR_THRE)))
{
if (U0LSR & LSR_RX)
{
AMI1.CApuLibAMI::Get2Buf();
}
}
else{
AMI1.Write_from_bufer();
}



VICVectAddr = NULL_REG; //Dummy write to signal end of interrupt


};



пишу в Uart -

U8 CApuLibUART0::putchar(U8 ch) // ïåðåäàòü ñèìâîë â ïåðåäàþùèé áóôåð
{

while (!(U0LSR & LSR_THRE));
return (U0THR = ch);
}


вопрос, почему putchar(0x00) - не работает

putchar(0x01) - работает на ура?

если убрать
else{
AMI1.Write_from_bufer();
}


да,
#define LSR_RX 0x01 // RX
#define LSR_THRE 0x20 // THRE

то 0x00 в порт пишутся, но пререывание - на запись не работает (((
Помогите новичку
alexander55
Цитата(Spb_Alex @ Nov 28 2007, 10:55) *

Что-то мне подсказывает , что 0x00 у Вас является признаком конца сообщения (строки).
Spb_Alex
Цитата(alexander55 @ Nov 28 2007, 11:08) *
Что-то мне подсказывает , что 0x00 у Вас является признаком конца сообщения (строки).


void CApuLibUART0::Write_from_bufer()
{
for (U32 w=0;w<15;w++)
{
if (tx_index_hi != tx_index_low)
{
putchar(tx_bufer[tx_index_low]);
if ((++tx_index_low)==BUF_UART_MAXX)
tx_index_low = BUF_UART_0;

}
else break;
}
};


да нет здесь никаких проверок на окончание строки
alexander55
Цитата(Spb_Alex @ Nov 28 2007, 11:27) *
да нет здесь никаких проверок на окончание строки

А как насчет приема.
Spb_Alex
Цитата(alexander55 @ Nov 28 2007, 11:34) *
А как насчет приема.



прием работет на ура,

лажа где-то в функции void Uart0_irq (void) __irq
Spb_Alex
void Uart0_irq (void) __irq // ôóíêöèÿ ïðåðûâàíèÿ ïî UART0
{

if (U0LSR & LSR_RX)
{
AMI1.CApuLibAMI::Get2Buf();
}

else{
AMI1.Write_from_bufer();
(U0IIR&IIR_THRE);
}


VICVectAddr = NULL_REG; //Dummy write to signal end of interrupt


};

Переписал так, вроде все заработало, но, как правильно - не знаю.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.