[an error occurred while processing this directive] [an error occurred while processing this directive]
Помогите в написании программы для MSP430 F1121 на IAR-ском C ! (+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено Нужна помощь 18 февраля 2002 г. 16:00

Вот начинаю работать с MSP430 F1121 (сегодня - первый день). Решил написать программку для подсчета задержек.
Кварц у меня 32 768 Герц. Использую IAR-ский компилятор и эмулятор - Socket Adapter (JTAG).
Использую Timer_A в режиме подсчета до "Up to CCR0".
Вот текст программы :

#include "msp430x11x1.h"

int counter ;
void main( void) {
WDTCTL = WDT_ADLY_250; //Watchdog не сбрасывает а считает интервалы

CCR0 = 0 ; // на всякий случай сброшу в 0 перед использованием
CCR0 = 32768 ; // таймер будет считать от 0 до 32768

TACTL = TACLR | TASSEL1 ; // останавливаю таймер, сбрасываю флаг
// переполнения
// System clock = SMCLK
TACTL |= MC0 ; //перевожу таймер в режим - up to CCR0-от 0 до 32768
counter = 0 ;
do {
unsigned char k ;
for( k = 0 ; k < 20 ; k ++) {
do ; while( !(TACTL & TAIFG) ) ; // ожидаем флаг переполнения
TACTL &= ~TAIFG ; // сбрасываем флаг переполнения
}
counter ++ ; // здесь ставлю точку останова !!!!!!!!!
} while( 1) ;
}

И вот на точку останова я попадаю раз в секунду! Хотя если у меня кварц 32 768 Герц, то он делает 32 768 тактов в секунду и флаг должен выставляться раз в секунду, а 20 таких циклов - за 20 секунд. А он на самом деле выставляется гораздо чаще.
В чем причина ?
Вот прочитал, что у него 125ns Instruction Cycle Time. Так что, оно не зависит от частоты внешнего кварца ?
Подскажите, пожалуйста !!!

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

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru