Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » WDT PIC16F688 (Не работает WDT)
WDT PIC16F688
mikhail09p Дата: Вс, 04.08.2019, 00:39  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 524
Репутация: 13   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Здравствуйте.
Столкнулся с непонятным. Не работает WDT... Контроллер не выходит из SLEEP.
Или я неправильно конфигурирую...

Код
Device 16F688
Declare  Reminders = OFF    
Declare  Warnings = OFF   
Declare Xtal 4
''Config CPD_OFF,CP_OFF,MCLRE_OFF,PWRTE_ON,WDT_ON,INTRC_OSC_NOCLKOUT
''Config FCMEN_OFF, IESO_OFF, CPD_OFF, CP_OFF, MCLRE_OFF, PWRTE_ON, WDT_ON, INTRC_OSC_NOCLKOUT, BOREN_OFF, WDT_ON

'@CONFIG_REQ
'@__CONFIG  FCMEN_OFF & IESO_OFF & BOREN_OFF & CPD_OFF & CP_OFF & MCLRE_OFF & PWRTE_ON & WDT_ON & INTRC_OSC_NOCLKOUT

    Declare Reminders Off
    @ CONFIG_REQ = 0 ; Override Compiler's configuration settings
    Asm-
    __Config  0x30DD  
    Endasm-
    Declare Reminders On


Там уже всякие варианты... Да, проверяю в Протеусе.
Подскажите, как правильно и, может, в этом контроллере есть какие особенности с WDT.

Вроде работает, но период без предделителя - 9 секунд... Непонятно...
Эврика! Может, кому поможет - 
Код
Новый прескалер был добавлен к пути между
INTRC и мультиплексоры, используемые для выбора пути
для WDT. Этот прескалер составляет 16 бит и может быть
запрограммированы делить INTRC на 32 до 65536,
давая WDT номинальный диапазон от 1 мс до 268 с.


Регистр называется WDTCON. Его нужно конфигурировать.
Прикрепления: 16F688_UPS.rar(71.6 Kb)

Сообщение отредактировал mikhail09p - Вс, 04.08.2019, 14:29
ЯНДЕКС Дата: 04.08.2019
ivan_fd Дата: Вс, 04.08.2019, 15:57  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1085
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Цитата mikhail09p ()
Эврика!


Почему эврика, в даташите ведь о нем все четко написано.
По умолчанию стоит делитель 1:512, что равно периоду 16мс.
Да и почему Вы поставили в Протеусе WatchDog Timer Period 18ms?
Тут должен быть 32мкс. Потому что тактирование собаки идет от 31кГц (LFINTOSC) 

Еще одно, у Вас конфиг прописан как: __Config  0x30DD
Оно не сходится с строчкой - 
Код
@__CONFIG  FCMEN_OFF & IESO_OFF & BOREN_OFF & CPD_OFF & CP_OFF & MCLRE_OFF & PWRTE_ON & WDT_ON & INTRC_OSC_NOCLKOUT

Ваш конфиг - это clock function on RA4, PWRTE = OFF.


Меня все время преследуют умные мысли...но я быстрее!!!
mikhail09p Дата: Вс, 04.08.2019, 17:54  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 524
Репутация: 13   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

У 628 такого регистра нет... Я по привычке...
И по умолчанию получалось 9 секунд. Предделитель 65536. Это когда регистр не прописан в программе. Наверное, в Протоне так.

Цитата
Да и почему Вы поставили в Протеусе WatchDog Timer Period 18ms?
А это где?
А конфиг я пробовал по разному... Нужный и уже работающий

Код
@__CONFIG  FCMEN_OFF & IESO_OFF & BOREN_OFF & CPD_OFF & CP_OFF &
MCLRE_OFF & PWRTE_ON & WDT_ON & INTRC_OSC_NOCLKOUT
ivan_fd Дата: Вс, 04.08.2019, 20:25  |                                                                                                                Сообщение # 4
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1085
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Цитата mikhail09p ()
И по умолчанию получалось 9 секунд. Предделитель 65536. Это когда регистр не прописан в программе. Наверное, в Протоне так.


Предделитель в регистре WDTCON по умолчанию, после сброса,  1:512. Протон здесь не при чем, так сделано Микрочипом.
Цитата mikhail09p ()
А это где?




У Вас стояло 18мс.

Цитата mikhail09p ()
А конфиг я пробовал по разному... Нужный и уже работающий


Да, но у Вас прописано  
Код
Declare Reminders Off
    @ CONFIG_REQ = 0 ; Override Compiler's configuration settings
    Asm-
    __Config  0x30DD  
    Endasm-
    Declare Reminders On
 

А это немного не то как в строчке выше.
Прикрепления: 8657376.png(53.7 Kb)


Меня все время преследуют умные мысли...но я быстрее!!!
mikhail09p Дата: Пн, 05.08.2019, 14:52  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 524
Репутация: 13   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Цитата ivan_fd ()
Да и почему Вы поставили в Протеусе WatchDog Timer Period 18ms?

Никогда тут не изменял... Буду знать, где лежит. Спасибо.
mikhail09p Дата: Сб, 24.08.2019, 13:14  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 524
Репутация: 13   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Здравствуйте.
Опять не работает 688 пик...
Нету сигналов на пинах PORTC 2, 4, 5. PORTC.3 работает...
Что я не так делаю, ума не приложу...
Аналоговый нужен только PORTА.0.

TRISA = %00011001
TRISC = %00000000
OPTION_REG = %10001000
WDTCON = %00000000      '
INTCON = %10000000
CMCON0 = %00000111         '
VRCON = %00000000
ADCON0 = %10000001
ADCON1 = %01010000
ANSEL = %00000001 ''''
PORTC = %00111000

Есть:
OPTION_REG = %10001000 - очень маленькое время, WDT срабатывал...  Или как... Заколебал он. В железе другое время, не так, как в Протеусе.
Работает только OPTION_REG = %10001111. Не очень понятно...
Прикрепления: 16F688_UPS.7z(1.2 Kb)

Сообщение отредактировал mikhail09p - Сб, 24.08.2019, 17:30
ivan_fd Дата: Вс, 25.08.2019, 12:09  |                                                                                                                Сообщение # 7
Группа: Модераторы
Ранг:  Специалист
Сообщений: 1085
Репутация: 83   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

Цитата mikhail09p ()
Нету сигналов на пинах PORTC 2, 4, 5. PORTC.3 работает...


Есть сигналы. Все нормально настроено. У меня работает.
У вас в протеусе вывод под индикатор с ОК, а в схеме стоит ОА!!!

Цитата mikhail09p ()
OPTION_REG = %10001000 - очень маленькое время, WDT срабатывал...  Или как... Заколебал он. В железе другое время, не так, как в Протеусе.Работает только OPTION_REG = %10001111. Не очень понятно...


Я думал, что уже разобрались с WDT?
При такой настройке:

Код
OPTION_REG = %10001000
WDTCON = %00000000


Сторожевой таймер будет срабатывать каждые ~1 мс!!!! Потому, что - Предделитель в Option_reg = 1:1.
А WDTCON = 1:32. Частота сторожевого 31 кГц. Считаем. 1/31000 = 32.25мкс. WDT = 32.25 * 32 = 1032 мск = ~1мс.


Меня все время преследуют умные мысли...но я быстрее!!!
Форум Picbasic.ru » Программирование МК » Proton PicBasic » WDT PIC16F688 (Не работает WDT)
  • Страница 1 из 1
  • 1
Поиск: