Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Использование Watchdog в C8051F310
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Mechanical men
Если есть у кого примерчик, с использованием Watchdog для C8051F310 или похожего камня - скинте пжлста. В документации много слов всяких, но с примером разбираться проще. Заранее благодарен...
RedFroggy
Цитата(Mechanical men @ Oct 30 2006, 18:13) *
Если есть у кого примерчик, с использованием Watchdog для C8051F310 или похожего камня - скинте пжлста. В документации много слов всяких, но с примером разбираться проще. Заранее благодарен...


Для C8051F005

// В начале программы запрещаете
WDTCN = 0xde; // запрет
WDTCN = 0xad; // WatchDogTimer

// Делаете настройку регистров и т.д.
.................................

// В нужном месте разрешаете (перезагружаете)
WDTCN = 0xA5; // перезагрузить WatchDog
.................................
// Не забывать перезагружать в других местах
WDTCN = 0xA5; // перезагрузить WatchDog

Биты WDTCN.[2:0] управляют временем срабатывания (интервалом). Расчёт нужно проводить по формуле:
43+WDTCN[2:0] x TSYSCLK , (где TSYSCLK - the system clock period).
Например, для 2 МГц, WatchDog можно настроить в интервале 0.032msec - 524msec.
WDTCN.7 должен быть в 0, когда устанавливается этот интервал. WDTCN.[2:0] после сброса имеют значение 111b.
RedFroggy
Цитата(RedFroggy @ Nov 1 2006, 14:46) *
Цитата(Mechanical men @ Oct 30 2006, 18:13) *

Если есть у кого примерчик, с использованием Watchdog для C8051F310 или похожего камня - скинте пжлста. В документации много слов всяких, но с примером разбираться проще. Заранее благодарен...


Для C8051F005

// В начале программы запрещаете
WDTCN = 0xde; // запрет
WDTCN = 0xad; // WatchDogTimer

// Делаете настройку регистров и т.д.
.................................

// В нужном месте разрешаете (перезагружаете)
WDTCN = 0xA5; // перезагрузить WatchDog
.................................
// Не забывать перезагружать в других местах
WDTCN = 0xA5; // перезагрузить WatchDog

Биты WDTCN.[2:0] управляют временем срабатывания (интервалом). Расчёт нужно проводить по формуле:
43+WDTCN[2:0] x TSYSCLK , (где TSYSCLK - the system clock period).
Например, для 2 МГц, WatchDog можно настроить в интервале 0.032msec - 524msec.
WDTCN.7 должен быть в 0, когда устанавливается этот интервал. WDTCN.[2:0] после сброса имеют значение 111b.

Прошу прощения, при копировании смазалось
Вот правильная формула:
4^(3+WDTCN[2:0] ) x TSYSCLK
Mechanical men
Для C8051F005

// В начале программы запрещаете
WDTCN = 0xde; // запрет
WDTCN = 0xad; // WatchDogTimer

[/quote]
Нич не выходит... У проклятого F310 нет такого регистра... Вышел с праздника, ковыряюсь с переводом....
RedFroggy
[quote name='Mechanical men' date='Nov 7 2006, 13:22' post='172927']
Для C8051F005

// В начале программы запрещаете
WDTCN = 0xde; // запрет
WDTCN = 0xad; // WatchDogTimer

[/quote]
Нич не выходит... У проклятого F310 нет такого регистра... Вышел с праздника, ковыряюсь с переводом....
[/quote]

У 310 WatchDog доступен через четвёртый модуль PCA. Сам не использовал этот микроконтроллер, но сейчас посмотрел даташит - в описании вроде всё по шагам написано, как конфигурировать и использовать.
AndreyS
[quote name='Mechanical men' date='Nov 7 2006, 12:22' post='172927']
Для C8051F005

// В начале программы запрещаете
WDTCN = 0xde; // запрет
WDTCN = 0xad; // WatchDogTimer

[/quote]
Нич не выходит... У проклятого F310 нет такого регистра... Вышел с праздника, ковыряюсь с переводом....
[/quote]


Добрый день.
Узаю 330, но они схожи с 310. По крайней мери с PCA

Код
void PCA_Init()
{
    PCA0MD      &= ~0x40;
    PCA0MD      = 0x00;
}


Отключает WDT.

Взгляните в Конфиг Визард.

Удачи.
Mechanical men
Цитата
Добрый день.
Узаю 330, но они схожи с 310. По крайней мери с PCA

Код
void PCA_Init()
{
    PCA0MD      &= ~0x40;
    PCA0MD      = 0x00;
}


Отключает WDT.

Взгляните в Конфиг Визард.

Удачи.


Получилось странное...
написал такой код:
void PCA_Init()
{
PCA0MD &= ~0x40;
PCA0MD = 0x00;
PCA0CPL4 = 0xFE;
OSCICN = 0x83;
PCA0MD |= 0x40;
}
Плата работать отказалась, причем похоже все время перезагружается, т.к какая-то активность видна, но не та, которая требуется.
AndreyS
Цитата(Mechanical men @ Nov 8 2006, 13:58) *
Получилось странное...
написал такой код:
void PCA_Init()
{
PCA0MD &= ~0x40;
PCA0MD = 0x00;
PCA0CPL4 = 0xFE;
OSCICN = 0x83;
PCA0MD |= 0x40;
}
Плата работать отказалась, причем похоже все время перезагружается, т.к какая-то активность видна, но не та, которая требуется.



Так последней строкой вы опять включили WDT (PCA0MD |= 0x40;). Я не совсем понял, что вам нужно?? Вы хотите использовать WDT или нет???
Если нет, то сделайте как я вам написал. Иначе необходимо каждый раз сбрасывать WDT (или он вас сбросит wink.gif
Для сброса WDT (его перезапуска), вам необходимо периодически (не реже периода срабавтвания таймера) записывать значение (в доке написано любое смотри стр 202 докуменат ревизии 1.5) в PCA0CPH4. Это перезапустит таймер WDT и даст вам отсрочку.

Вы уверены что хотите использовать WDT?? Вы точно понимаете для чего он нужен????

Удачи.
Mechanical men
Цитата
Для сброса WDT (его перезапуска), вам необходимо периодически (не реже периода срабавтвания таймера) записывать значение (в доке написано любое смотри стр 202 докуменат ревизии 1.5) в PCA0CPH4. Это перезапустит таймер WDT и даст вам отсрочку.

Вы уверены что хотите использовать WDT?? Вы точно понимаете для чего он нужен????


ЙЙЙЙессс! Последний элемент мозаики! И менно куда писать сбрасывающее значение я и не догонял! Теперь все зажужжало как нада. Спсб!!

А WDT мне нужен, чтоб выходить из ступора после всяких суровых электромагнитных воздействий, помех по питанию и разрядов на корпус шкафа. Для системв пожарообнаружения/тушения девайс делаю.
AndreyS
Цитата(Mechanical men @ Nov 9 2006, 11:04) *
Для системв пожарообнаружения/тушения девайс делаю.


Добрый день.

Вопрос не по теме.

А какой тип огнетушителей?? Вернее марка. Случаем не СОТ-1????
Mechanical men
Цитата(AndreyS @ Nov 9 2006, 11:41) *
Цитата(Mechanical men @ Nov 9 2006, 11:04) *

Для системв пожарообнаружения/тушения девайс делаю.


Добрый день.

Вопрос не по теме.

А какой тип огнетушителей?? Вернее марка. Случаем не СОТ-1????


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