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

 
 
> Timer A в режиме захвата
Pavel V.
сообщение Jul 28 2007, 14:17
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 211
Регистрация: 3-06-06
Пользователь №: 17 742



Пытаюсь запустить таймер в режиме захвата. Возникло несколько вопросов.

Мне нужно ловить сигнал логического "0". Т.е. на входе постоянно присутствует "1", и проскакивает кратковременный "0". Я так понимаю, мне нужен захват по заднему фронту?

МК - MSP430F1232

Прикладываю свой код:

Код
#include <io430x12x2.h>

unsigned int speed=0;

void main(void)
{
  init_PORTS();
  init_TA();
  __enable_interrupt();
  
  for (;;) {

    itoa1(speed); // int to char
    display(); // динамическая индикация
    
  }
}

#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0(void)
{
  speed = TACCR0;
}

void init_PORTS(void)
{
  P1DIR = 0xFF; // 0 - input; 1 - output
  P1OUT = 0xFF; // 0 - low; 1 - high
  P1SEL = 0x00; // 0 - i/o; 1 - function
  
  P2DIR = 0x00;
  P2OUT = 0x00;
  P2SEL = 0x0C; // P2.2 P2.3 - capture
  
  P3DIR = 0x0E;
  P3OUT = 0x00;
  P3SEL = 0x00;
}

void init_TA(void)
{
  TACCTL0 = CM_2 + SCS + CCIS_1 + CAP + CCIE; // задний фронт, синхронный захват, вход CCIxB, захват, прерывание
  TACTL = TASSEL_2 + MC_2;                  // SMCLK + Continuous Mode
}


Почему-то прерывания не происходит. Подозреваю, что напутал либо с инициализацией таймера, либо с тактовыми сигналами. Систему тактирования не настраиваю, по умолчанию ведь используется DCO с частотой около 800 кГц?

Пробовал подавать сигнал на ноги P2.2/TA0/A2 и P2.3/TA1/A3/VREF−/

И еще вопрос - прерывание должно возникать при возникновении сигнала по обоим ногам (CCI0B и CCI1B)?

Спасибо!


--------------------
Good News Everyone!
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 18th June 2025 - 07:27
Рейтинг@Mail.ru


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