[an error occurred while processing this directive]
Проблема с WDT MSP430FE423. Помогите, пожалуйста, кто чем может.(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

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

Отправлено Вяч 27 декабря 2005 г. 09:39

Инструмент - IAR V3.30A.

Маркировка на корпусе контроллера:
1 строка - 46F4K5T;
2 строка - M430FE423;
3 строка - REV E.

Описание эффекта.
WDT тактируется от ACLK (32768 Гц). Устанавливаю период WDT 250 мс. Сбрасывается WDT по прерыванию базового таймера. Период базового таймера - 15,625 мс. Одновременно контролирую время по таймеру А.
Проверяю в отладчике управляющий регистр WDT. Записывается 0x05, тоже правильно. И эта зараза WDT срабатывает через 12,57 мс вместо 250 мс.
ставлю период 1000 мс. Срабатывает через 30,67 мс.
Текст программы ниже.
В чём дело? Может мне достался инженерный корпус, поскольку контроллер из бесплатных сэмплов?

void __low_level_init(void) {
WDTCTL=WDTPW+WDTHOLD; //Stop WDT

SCFQCTL=SCFQ_64K; //MCLK=SMCLK=2*ACLK. Modulation enable
SCFI0=FLLD0+FN_2; //fDCOCLK=1.4-12MHz, DCO divider=2
FLL_CTL0=DCOPLUS+XCAP18PF; //MCLK=SMCLK=2*ACLK/2=32768Hz.

SVSCTL=0x40+PORON; //SVS level = 2,3V. Reset on/

BTCTL=BTDIV+BT_fLCD_DIV256; //Basic timer. Flcd=ACLK/256, Tick=15,625mS
IE2|=BTIE; //Basic timer interrupt enable

SD16CTL=SD16REFON+SD16VMIDON; //Reference voltage 1,2V on & out

LCDCTL=LCDON+LCDSTATIC+LCDSG0_3; //LCD on, static mode,S0-S23

TACTL=0x0124;

WDTCTL=WDT_ARST_250; //Reset WDT for 250 mS interval
}

#pragma vector=BASICTIMER_VECTOR
__interrupt void basic_timer(void) {
WDTCTL=WDT_ARST_250; //Reset WDT for 250 mS interval
}

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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 
NoIX ключ Запомнить

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Rambler's Top100 Рейтинг@Mail.ru
Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание

E-mail: info@telesys.ru