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

 
 
> АЦП и Таймер в контроллере MSP430F5438, Не могу кинуть данные в регистр таймера
mzhelezkin
сообщение Feb 1 2010, 14:27
Сообщение #1





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



Здравствуйте. Подскажите в чем дело. Вот код программы:
CODE
#include "msp430x54x.h"
#include "setup_ustroistva.c"
unsigned char a = 0;
void main(void)
{
WDTCTL = WDTPW+WDTHOLD; // Остановка сторожевого таймера

setup_adc();

setup_tb();

for(;;)
{
ADC12CTL0 |= ADC12SC;
a = ADC12MEM0_L;
TB0CCTL4 = (*((unsigned char*)ADC12MEM0));
}
}


Работаю в IAR Embeddet Workbench v4.20.1. Микроконтроллер MSP430F5438. В функциях setup_adc() и setup_tb() просто настройка АЦП и таймер B. Настроил АЦП на 8 разрядов, соответственно таймер B тоже. Проблема в том, что данные из регистра ADC12MEM0 не могу записать в регистр TB0CCTL4. Пробовал и без указателе, т.е просто
TB0CCTL4 = ADC12MEM0;
Не работает. А в переменную записываеться (выше определена переменная а). Ниже привожу картинку.

Прикрепленное изображение


Вообще мне нужно вывести на наушники голос человека. В качестве ЦАП использую ШИМ. Вот, так сказать и мучаюсь. Новую тему создавать не стал, нашел на этом же форуме обсуждение подобной проблемы. Название темы такое: "ЦАП на ШИМ Atmega, Реализация ЦАП с помощью ШИМ атмеги". Общая идея в принципе понятна. По переполнению таймера счетчика, делаем одну выборку АЦП и кидаем ее сразу в регистр таймера. Но вот закинуть в регистр выборку, что-то не получается.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mzhelezkin
сообщение Feb 2 2010, 12:16
Сообщение #2





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



Прошу прощения. В общем-то вы правы. У меня каша в голове. Занимаюсь всем этим с нового года. Прочитал "Семейство микроконтроллеров MSP430x4xx", так же вышеуказанный форум "ЦАП на ШИМ Atmega, Реализация ЦАП с помощью ШИМ атмеги". Понакачал библиотек и примеров с техаса для моей экспериментальной платы
MSP-EXP430F5438.

Ну, наверное и все. Если можете, подскажите еще какую-нибудь литературу, буду очень сильно благодарен.
А на счет моего вопроса с шим. Вчера кое что получилось. Стал выводить звук. Правда очень плохо, со свистом, и речь плохо разборчива. Вот код программы.

CODE
#include "msp430x54x.h"
#include "setup_ustroistva.c"
unsigned char a = 0;
void main(void)
{
WDTCTL = WDTPW+WDTHOLD; // Остановка сторожевого таймера

setup_adc();

setup_tb();

for(;;)
{
ADC12CTL0 |= ADC12SC;
a = ADC12MEM0_L;
TB0CCR4 = a;
while(!(TB0CTL & TBIFG));
}
}


Здесь setup_adc()

CODE
void setup_adc(void)
{
vkl_ustroistv();

ADC12CTL2 = ADC12RES_0;
ADC12CTL0 = ADC12ON + ADC12SHT0_6;
ADC12CTL1 = ADC12SHP + ADC12SSEL_3;
ADC12MCTL0 = ADC12INCH_5;
ADC12IE = 0x0001;
ADC12CTL0 |= ADC12ENC; //Enable

}


И setup_tb

CODE
void setup_tb(void)
{
TBCCR0 =128;
TBCCTL4 = CLLD_1 + OUTMOD_7;

TBCTL = CNTL_3 + TBSSEL_2 + MC_1 + TBIE;

}


В функции vkl_ustroistv() идет просто настройка портов.
Подскажите, что в этой программе нужно добавить ил вообще полностью изменить програаму.
Go to the top of the page
 
+Quote Post



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

 


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


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