Перейти к содержанию
    

Тема может быть избита. не понимаю как оргнизовать работу UART по прерывания(+)

обычную функцию проверки готовности и разрешения прерывания

Ага, спасибо!

Уже запустил с отдельным флагом, в принципе можно в качестве флага разрешение и использовать, но переделывать уже не буду:

 

Инициализация:

    OffFlag(tx_over);
    tx_head0=tx_tail0=0;
    IE1 |= URXIE0+UTXIE0;

 

Укладка в буфер (DI/EI обязательны!)

 

        __disable_interrupt();    
        PUT_TO_BUFFER(c);

#ifdef TX_INTERRUPT
        if (GetFlag(tx_over))
        {    IFG1 |= UTXIFG0;
            OffFlag(tx_over);
        }
#endif
        __enable_interrupt();

 

Ну и прерывание:

    if (tx_tail0!=tx_head0)
    {    d=tx_buf0[tx_tail0];
        tx_tail0++;
        if (tx_tail0==TxBufSize0)
            tx_tail0=0;
        TXBUF0 = d;
    }
#ifdef TX_INTERRUPT
    else
        OnFlag(tx_over);
#endif

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...