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

Watchdog BF561 в режиме обычного прерывания.

Понадобилось запустить UART  с возможностью отработки таймаута по приему. В самом UART такой вариант отсутсвует. Пробовал с помощью обычного таймера. Но в нем счетчик без возможности записи со стороны процессора. Корректно перезапускать не получилось.

Более менее получилось с Watchdog. 

Вот так описал прерывание

#define WDTPERIOD 10000

EX_INTERRUPT_HANDLER (Watchdog_ISR)
{
 *pWDOGB_CNT = WDTPERIOD;
 *pFIO0_FLAG_T = DBG_PIN;    // toggle
 asm("ssync;");
}

Вот так настраиваю сам Watchdog:

void WDOGinit (void)
{
   // Запрет сторожевого таймера:
   *pWDOGB_CTL = WDDIS;
   ssync();
   // Инициализация счетчика:
   *pWDOGB_CNT  = WDTPERIOD;
   ssync();
   
   register_handler(ik_ivg13, Watchdog_ISR);    
     

/* Note that if the general-purpose interrupt option
is selected, the System Interrupt Mask register (SIC_IMASK) should be
appropriately configured to unmask that interrupt.
*/   
    // Table 4-7. Peripheral Interrupt Source Reset State 
    //Watchdog Timer interrupt - 59 - IVG13  - SIC_IMASK1 == 27
    // разрешение логической 1
    
       *pSICB_IMASK1 |= SIC_MASK(27);\


    // Разрешение сторожевого таймера, генерировать обычное прерывание
   // при срабатывании сторожевого таймера:
   *pWDOGB_CTL = WDEN | WDEV_GPI;        // 0x0FF0 | 0x0004
      
   ssync();
   
   *pWDOGB_STAT = 0;
}

Реально удалось загрузить на лету и прошить работающую версию с WDTPERIOD = 1000. На выходе видно частоту чуть больше 2МГц. Как только поменяю значение на другое - или нет сигнала на выходе или остается "старый" или отваливается эмулятор.

В сети нашел примеры для BF-60x :

    adi_int_InstallHandler(INTR_WDOG1_EXP, wdtISR, NULL, true);

    _wdtDisable();
    _wdtSetTimeout(wdtPeriod);
    _wdtEnable();

Но таких функций в примерах в моем VDSP нет. "INTR_WDOG1_EXP" - ни одной ссылки в Интернете.

Понятно, что с порядком обращения к регистрам проблема, но как найти?

 

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


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

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

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

Гость
Ответить в этой теме...

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

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

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

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

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

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