делаю примерно так ...
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Kuka 04 октября 2005 г. 13:32
В ответ на: Скорость передачи 115200 отправлено <font color=gray>Lexandro</font> 04 октября 2005 г. 12:28

// это касается самого контроллера - не знаю точно как у MSP430 - это и не важно
// BUFF - регистр UART
// TXEMPTY - флаг, что сдвиговый регистр пуст или программный флаг, если у контроллера такового нет
// TXREADY - флаг, что буферный регистр пуст

char txbuffer[TXBUFFERSIZE];
int txcounter;
char* txbuffptr = &txbuffer[0];

// interrupt - по флагу TXREADY !!!

if(txcounter == 0) return; // буфер пуст и передавать нечего
BUFF = *txbuffptr++;
if(txbuffptr == &txbuffer[TXBUFFERSIZE]) txbuffptr = &txbuffer[0];
txcounter--;

//function
char put_char_to_buffer(char ch)
{
if(txcounter == TXBUFFERSIZE) return BUFFER_FULL;
if(TXEMPTY) {BUFF = ch; return;} // пишем прямо в регистр !!!
*txbuffptr++ = ch; // или в буфер
if(txbuffptr == &txbuffer[TXBUFFERSIZE]) txbuffptr = &txbuffer[0];
txcounter++;
}
// в принципе и все
// плюс отследить одинаковое количество стоп-битов (лучше поставить сразу 2)

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru