реклама на сайте
подробности

 
 
> MSP430F135. Осциллятор с цифровым управлением (DCO), Затактировать таймер от 200Гц
jjjjjjein
сообщение Jan 25 2012, 05:32
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 31-10-11
Пользователь №: 68 059



Нужно затактировать Таймер А от 200Гц. SMCLK тактируется от DCO, не знаю как нужную частоту получить (200Гц).
Код
void InitializationTimersMSP430 (void)                                          // Функция инициализации внутренних аппаратных таймеров микроконтроллера MSP430F135
     {
       // Общая инициализвция модуля тактирования микроконтроллера
    
       BCSCTL1 = 0x00;                                                          // Обнуление управляющего регистра BCSCTL1
       BCSCTL2 = 0x00;                                                          // Обнуление управляющего регистра BCSCTL2
       BCSCTL1 = RSEL0;                                                        // Сопротивление внутреннего резистора -> минимальное    
       BCSCTL2 = SELM_0 |                                                     // Источник тактирования MCLK -> DCO
                 DIVM_3 |                                                            // Делитель MCLK -> 8
                 SELS_0   |                                                           // Источник тактирования SMCLK -> DCO
                 DIVS_3;                                                            // Делитель SMCLK -> 8  
       DCOCTL = DCO0 |                                                        // Частота генератора ->  (??? Гц)
                MOD0 | MOD1 | MOD2 | MOD3 | MOD4;                 // Модулятор тактовой частоты DCO -> МАКСИМУМ
      LPM4;                                                                           // Низкое энергопотребление
    

       // Инициализация таймера А
       TACTL = TASSEL_2 |                                                       // Источник тактирования таймера -> сигнал SMCLK (???МГц)
               ID_3 |                                                                   // Предделитель таймера -> 8  
                MC_1;                                                                  // Режим работы таймера -> счёт вверх до значения TACCR0
            
       TACCR0 = 10000;                                                          // Счёт до значения -> 10000      
       TACCTL0 = CCIE;                                                          // Разрешение прерывания по захвату/сравнению, разрешение запроса прерывания от флага CCIFG
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jjjjjjein
сообщение Jan 25 2012, 09:27
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 31-10-11
Пользователь №: 68 059



У меня в библиотеке значение LPM4 немного изменено просто, так что всё впорядке)
а мой вопрос немного изменился. мне надо создать ШИМ с частотой 200Гц, что бы можно было менять его скважность. Какой регистр отвечает за скважность ШИМа, я не совсем понимаю работу Таймера при выводе ШИМ сигналов.
Код
BCSCTL1 = 0x00;                                                          // Обнуление управляющего регистра BCSCTL1
       IFG1 &= ~XT2OFF;                                                         // XT2 = HF XTAL
         int y;                                                                 // Включение XT2
         do
           {
             IFG1 &= ~OFIFG;                                                    // Очистка флага OFIFG
            for (y = 0xFF; y > 0; y--);                                         // Задержка
           }
         while (IFG1 & OFIFG);                                                  // проверка
      
       BCSCTL2 = 0x00;                                                          // Обнуление управляющего регистра BCSCTL2
       DCOCTL = DCO0 | DCO1 | DCO2 |                                            // Частота генератора -> МАКСИМУМ (8000000 Гц)
                MOD0 | MOD1 | MOD2 | MOD3 | MOD4;                               // Модулятор тактовой частоты DCO -> МАКСИМУМ
       BCSCTL1 = RSEL0 | RSEL1 | RSEL2;                                         // Сопротивление внутреннего резистора -> МАКСИМУМ    
       BCSCTL2 = SELM_2 |                                                       // Источник тактирования MCLK -> XT2CLK
                 DIVM_0 |                                                       // Делитель MCLK -> 1
                 SELS   |                                                       // Источник тактирования SMCLK -> XT2CLK
                 DIVS_0;                                                       // Делитель SMCLK -> 1  
       LPM4;                                                                    // Генераторы DCO и LFXT1 отключены

       // Инициализация таймера А
       TACTL = TASSEL_2 |                                                       // Источник тактирования таймера -> сигнал SMCLK (8МГц)
               ID_0 |                                                           // Предделитель таймера -> 1  
                MC_1;                                                           // Режим работы таймера -> счёт вверх до значения TACCR0
            
       TACCR0 = 40000;                                                          // Счёт до значения -> 40000      
       TACCTL0 = CCIE;                                                          // Разрешение прерывания по захвату/сравнению, разрешение запроса прерывания от флага CCIFG
}
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 13th August 2025 - 16:52
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016