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

 
 
> MSP430g2553 TA.1.2
A_lex_sander
сообщение Jun 13 2014, 11:37
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 27-01-14
Пользователь №: 80 202



Нужно таймером померять частоту( временные интервалы ) на " лапке " кто знает как это сделать подскажите
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
A_lex_sander
сообщение Jun 18 2014, 06:41
Сообщение #2





Группа: Участник
Сообщений: 13
Регистрация: 27-01-14
Пользователь №: 80 202



Цитата(thrush007 @ Jun 17 2014, 20:36) *
Посмотрел твой проект, решил создать новый sm.gif Надо отлаживать новую периферию по частям, а не пытаться завести проект с АЦП, таймером, UART, режимами сна и т.д. Привожу рабочий код из CCSv5, по фронту на P2.5 значение таймера-счетчика записывается в TA1CCR2 и меняется состояние светодиода на P1.0.


#include "msp430g2553.h"

void main(void)
{

WDTCTL = WDTPW + WDTHOLD; // Отключение сторожевого таймера

// Тактирование микроконтроллера от встроенного
// генератора с калибровкой на 16 МГц
// основной тактовый сигнал MCLK от DCOCLK

BCSCTL1 = CALBC1_16MHZ; // basic clock system
BCSCTL2 = DIVS0; // тактирование MCLK без предделителя, тактирование SMCLK = 16/2 MHz
DCOCTL = CALDCO_16MHZ; // digital controlled oscillator

P1OUT = 0x00;
P2OUT = 0x00; // не сбрасываются после перезапуска
P3OUT = 0x00;

P1SEL = 0x00; // Все выводы портов 1,2 настроить как линии портов ввода-вывода
P1SEL2 = 0x00;
P2SEL = 0x00;
P2SEL2 = 0x00;

P2SEL2 |= BIT5; // вывод P2.5 использовать как вывод основного периферийного модуля

P1DIR = 0xFF; // All P1.x outputs
P1REN = 0x00; // отключение внутренних подтягивающих резисторов от всех выводов порта 1
P1OUT = 0x00; // All P1.x reset

P2DIR = 0xFF; // Все выводы порта 2 настроить как выходы
P2REN = 0x00; // отключение внутренних подтягивающих резисторов от всех выводов порта 2
P2OUT = 0x00; // All P2.x reset

TA1CCTL2 = CM_1 + CCIS_1 + SCS + SCCI + CAP + CCIE;
// CM_1 (1*0x4000u) Capture mode: 1 - pos. edge
// CCIS_1 (1*0x1000u) Capture input select: 1 - CCIxB

TA1CTL = TASSEL_2 | ID_3 | TACLR; // настройка таймера 1
// TASSEL_2 - тактирование таймера-счетчика от SMCLK (8 МГц)
// ID_3 - коэффициент предделителя для тактового сигнала таймера-счетчика равен 8

TA1CTL |= MC_2; // запуск, счет вверх до переполнения
__enable_interrupt(); // общее разрешение прерываний

while (1);

}

#pragma vector = PORT1_VECTOR

__interrupt void PORT1_ISR(void)
{
return;
}

#pragma vector = PORT2_VECTOR
__interrupt void P2_ISR (void)

{
return;
}

#pragma vector = TIMER1_A0_VECTOR
__interrupt void T1_CCR0_ISR(void)
{

// Код обработки прерывания от таймера-счетчика 1 при равенстве TA1R = TA1CCR0

return;
}

#pragma vector = TIMER1_A1_VECTOR
__interrupt void T1_CCR1_ISR(void) // общее прерывание для регистров захвата/сравнения TA1CCR1 и TA1CCR2.
{

TA1IV = 0x00;
P1OUT ^= BIT0;
return;

}

#pragma vector = TIMER0_A0_VECTOR
__interrupt void T0_CCR0_ISR(void)
{
return;
}

#pragma vector = TIMER0_A1_VECTOR
__interrupt void T0_CCR1_ISR(void)
{
return;
}


// Обработчики неиспользуемых прерываний

#pragma vector = ADC10_VECTOR

__interrupt void ADC_ISR(void)
{
return;
}

#pragma vector = COMPARATORA_VECTOR

__interrupt void COMPARATORA_ISR(void)
{
return;
}

// Echo back RXed character, confirm TX buffer is ready first
#pragma vector = USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
IFG2 = 0x00; // обнуление регистра флагов прерываний окончания приема или передачи UART
return;
}

#pragma vector = USCIAB0TX_VECTOR
__interrupt void USCI0TX_ISR(void)
{
IFG2 = 0x00;
return;
}


#pragma vector=WDT_VECTOR // прерывание от сторожевого таймера
__interrupt void watchdog_timer (void)
{
return;
}

#pragma vector=NMI_VECTOR // вектор немаскируемого прерывания по активному фронту на выводе ~RST
__interrupt void nmi_ (void)
{
return;
}


все хорошо кроме одного частота на Р.1.0 есть всегда sad.gif что это за частота такая ?
почему то стабильно держит частоту 27 кГц а должен 22 к видеть и частота 27 не меняется от частоты 22 .

Сообщение отредактировал A_lex_sander - Jun 18 2014, 07:10
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- A_lex_sander   MSP430g2553 TA.1.2   Jun 13 2014, 11:37
- - adnega   Цитата(A_lex_sander @ Jun 13 2014, 19:47)...   Jun 13 2014, 11:57
- - A_lex_sander   надо таймером отличать частоты 20 и 22 килогерца   Jun 13 2014, 12:04
- - thrush007   Настраиваете тактирование таймера-счетчика и выбир...   Jun 13 2014, 20:55
|- - A_lex_sander   Цитата(thrush007 @ Jun 13 2014, 23:55) На...   Jun 16 2014, 13:18
|- - thrush007   Цитата(A_lex_sander @ Jun 16 2014, 17:18)...   Jun 16 2014, 14:13
- - A_lex_sander   поставил CAP теперь в прерывание не заходит   Jun 16 2014, 14:29
|- - thrush007   Цитата(A_lex_sander @ Jun 16 2014, 18:29)...   Jun 16 2014, 14:43
- - A_lex_sander   void main(void) { unsigned int a=0; WDTCTL = WDTP...   Jun 16 2014, 14:46
|- - thrush007   Цитата(A_lex_sander @ Jun 16 2014, 18:46)...   Jun 16 2014, 14:55
- - A_lex_sander   Р.2.5   Jun 16 2014, 14:55
|- - thrush007   Цитата(A_lex_sander @ Jun 16 2014, 18:55)...   Jun 16 2014, 15:12
- - A_lex_sander   Цитата(thrush007 @ Jun 16 2014, 18:12) На...   Jun 17 2014, 07:38
|- - thrush007   Цитата(A_lex_sander @ Jun 17 2014, 11:38)...   Jun 17 2014, 12:52
- - A_lex_sander   Цитата(thrush007 @ Jun 17 2014, 15:52) Мо...   Jun 17 2014, 14:43
|- - thrush007   Цитата(A_lex_sander @ Jun 17 2014, 18:43)...   Jun 17 2014, 14:48
- - A_lex_sander   Прикрепил весь проект спс за помощ   Jun 17 2014, 15:11
|- - thrush007   Цитата(A_lex_sander @ Jun 17 2014, 19:11)...   Jun 17 2014, 17:36
- - thrush007   Цитата(A_lex_sander @ Jun 18 2014, 10:41)...   Jun 18 2014, 17:07


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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 06:24
Рейтинг@Mail.ru


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