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

 
 
> MSPx2xx модуль АЦП10, Советы
KARLSON
сообщение Apr 19 2011, 08:51
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 604
Регистрация: 5-05-06
Из: Нижегородская обл.
Пользователь №: 16 819



Здравствуйте. Предлагаю сюда вносить все вопросы связанные с АЦП10 2-го семейства.
У меня вопрос такой.
Надо оцифровывать 2 канала P3.0 (A5) и P3.7(A7).
Хочу за одно вздёргивание бита ADC10SC получить 2 измерения. И что бы эти измерения скопировались в структуру АВ с помощью DTC.
Код
#include "msp430x21x2.h"

struct _AB
{
  unsigned int A2;
  unsigned int A1;
  unsigned int A0;
}AB;

void Pause (unsigned int time) { while (time-- > 0);}

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P2SEL = BIT6 + BIT7;
  
// сброс флага "сбой генератора" и запрет прер-ия OFIE при не исправ-ти DC-генератора
  IE1 &= ~OFIE;
  IFG1 &= ~OFIFG;

  // предустановка желаемой частоты DCOCLK = 8MГц
  _BIC_SR(OSCOFF);              // включить генератор LFXT1
  DCOCTL = CALDCO_8MHZ;
  BCSCTL1 = CALBC1_8MHZ;
  BCSCTL1 |= XT2OFF + XTS + DIVA_0; // источник такт-ия MCLK и SMCLK - DCOCLK, MCLK = DCOCTL/1, SMCLK = DCOCTL/1
  BCSCTL3 = LFXT1S_2;
// инициализация LFXT1
  do  
  {
    IFG1 &= ~OFIFG;
    Pause(5000);
  }while (IFG1 & OFIFG);

  BCSCTL2 = SELM_3  //SELM_0  (0x00)   /* MCLK Source Select 0: DCOCLK */
                 +DIVM_0  
                 +DIVS_3;
  
  ADC10CTL1 =// INCH_5
            + INCH_7
          ///  + ADC10DIV_7
           + ADC10SSEL_2   // MCLK = 8МГц
            + CONSEQ_1
           ;
   ADC10CTL0 |= ADC10SHT_3
                     //  + MSC              
                      + ADC10ON;
  
  ADC10AE0 = BIT7
           + BIT5
            ;
  ADC10DTC0 |= ADC10CT;
  ADC10DTC1 = 2;
  ADC10SA = (unsigned int ) &AB.A2;
  
  ADC10CTL0 |= ENC;
  
  while (1)
  {
    ADC10CTL0 &= ~ENC;
    
    while (BUSY & ADC10CTL1);
    ADC10CTL0 |= ENC + ADC10SC;             // Start sampling

    _NOP();
    
  }

}


Но ничего не выходит. Измерения смотрю в Watch.
Измерять один канал у меня получается. Но не переконфигурировать же мне постоянно модуль.
Посоветуйте как его настроить?


--------------------
Кризис - это не отсутствие денег, а отсутствие идей! Учитесь и никаких кризисов не будет.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Jun 15 2011, 17:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Alexander Petrov, раз уж вы пишете программу на языке высокого уровня (Си), то почему бы вам не воспользоваться стандартными символьными обозначениями битов MSP430? Вы думаете у кого-то возникает страстное желание разбираться с вашими 16-иричными константами, сопоставляя их битам регистров? sad.gif
По поводу вашей программы могу предположить, что у вас таймер попросту не запускается. Потому что вы неправильно его инициализируете. Обратите внимание в User's Manual на описание бита TACLR
Цитата
TACLR Bit 2 Timer_A clear. Setting this bit resets TAR, the clock divider, and the count direction. The TACLR bit is
automatically reset and is always read as zero.

При установке этого бита таймер сбрасывается и останавливается потому, что. обнуляются биты MCx. Добавьте в конце после инициализации всех регистров таймера команду для его запуска, включив режим Up mode.
Код
TACTL |= MC0;

Кстати, сообщите потом удалось ли вам "победить" Data Tranfer от модуля ADC10? Я когда-то давно попробовал его использовать, но забросил, т.к. не смог сходу получить однозначности при переносе данных преобразования от разных каналов. Данные как-то странным образом сдвигались, не попадая в соответствующие им ячейки памяти SRAM. Я уже выше писал, что разбираться не стал и потом больше повода не возникало. Но некая неудовлетворенность от непоняток осталась rolleyes.gif
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:55
Рейтинг@Mail.ru


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