Перейти к содержанию

Msp Vs Pic Шим И Синус


Рекомендуемые сообщения

Дорогие люди помогите с дипломом :) ! пишу про блокиратор LTE сети, используется микроконтроллер для синтеза аналоговых сигналов(Пилообразный и синус для шума) есть программа, сперта с texas instruments для MSP430, подойдет ли она на PIC16F628, т.к. видел что его чаще использовали для генераторов шума ( плюс в мсп 64 ноги - многовато :)) ). Главный вопрос даже не в этом, мне необходимо получить эксперимент, а именно хотя бы спектры сигналов после микроконтроллера, какие программы использовать для запуска асс-рского кода и получения спектров? Вот программа для MSP430:

NAME PWMDAC

;************************************************************************************

; Программа реализации ЦАП на базе ШИМ

; Генерирует синусоиду частотой 250Гц с использованием ШИМ на базе таймера Timer_B.

;

; Описание: программа демонстрирует использование ШИМ-таймера совместно

; с внешними фильтрами для реализации ЦАП. Показан способ формирования

; синусоиды частотой 250Гц, пилообразного сигнала частотой 125Гц и

; сигнала с постоянным уровнем с использованием таймера Timer_B.

; Возможно аналогичное использование таймера Timer_A. В таблице sine table holds the

; хранятся отсчёты значений синусоиды. Для формирования «пилы» используется

; простой инкремент значения ШИМ. Постоянный уровень формируется зарядом

; конденсатора RC-цепи при помощи выхода ШИМ. Значение напряжения при этом

; прямо пропорционально коэффициенту заполнения сигнала ШИМ. После

; инициализации, ЦПУ переводится в режим пониженного энергопотребления LPM0.

; Он остаётся в этом режиме до прихода прерывания CCIFG0 от таймера Timer_B

; В подпрограмме обработки прерывания таймера Timer_B ISR в регистр CCR1

; загружается следующее значение для синусоиды, значение «пилы» инкрементируется

; и загружается в регистр CCR2. По возвращении из прерывания

; ЦПУ снова переходит в режим пониженного энергопотребления LPM0.

;************************************************************************************

#include "MSP430X14x.H" ; Включить в проект файл со

; стандартными определениями

Delta EQU 250 ; Delta = требуемая частота DCO/8192

; Требуемая частота генератора DCO = 2.048МГц

; Это значение используется

; в программном стабилизаторе FLL

; для калибровки частоты генератора DCO

; с использованием кварцевого

; резонатора с частотой 32768Гц

; в качестве опорного. Более подробная

; информация по стабилизации частоты

; генератора DCO и программе

; стабилизатора FLL см. пример применения

; под названием «Управление частотой

; генератора с цифровым управлением (DCO)

; микроконтроллеров MSP430x11x»

; ( "Controlling the DCO frequency of the

; MSP430x11x" Literature number SLAA074)

;--------------------------------------------------------------------------------------

RSEG CODE

;--------------------------------------------------------------------------------------

Sine_Tab DW 255 ; Таблица синуса, отсчёты

DW 254 ; десятичные значения

DW 246 ; загружаемые в регистр TBCCR1 для изменения

DW 234 ; коэффициента заполнения ШИМ.

DW 219 ; Вместо байт требуется использовать слова

DW 199 ; т.к. в регистры ТВ

DW 177 ; требуется записывать слово целиком

DW 153 ; Значение '0' использовать нельзя

DW 128 ; иначе таймер будет глючить.

DW 103

DW 79

DW 57

DW 37

DW 22

DW 10

DW 2

DW 1

DW 2

DW 10

DW 22

DW 37

DW 57

DW 79

DW 103

DW 128

DW 153

DW 177

DW 199

DW 219

DW 234

DW 246

DW 255

;------------------------------ Здесь начинается программа ----------------------------

RESET mov #02FEh,SP ; Инициализация указателя стека

StopWDT mov #WDTPW+WDTHOLD,&WDTCTL

; Остановить сторожевой таймер WDT

SetupP4 bis.b #00Eh,&P4SEL ; Выбрать TB1, TB2 и TB3 вместо портов

bis.b #00Eh,&P4DIR ; P4.x, и назначить их выходами

SetupBC mov.b #0A6h,&BCSCTL1 ; ACLK делится на 4. RSEL=6,

; MCLK и SMCLK не делятся,

; источником MCLK и SMCLK является DCO

; генератор XT2 выключен.

; ПРИМЕЧАНИЕ: для определения значения

; Rsel для требуемой частоты DCO,

; обратитесь к таблице DCO в докуметнтации

call #Delay ; Пауза для стабилизации кварца.

; Необходима из-за того, что

; кварцевый резонатор 32768Гц используется

; в качестве опорного для стабилизации частоты

; генератора DCO. Поэтому резонатор на 32768

; должен быть стабильным.

call #SW_FLL ; Вызов подпрограммы стабилизации

; частоты генератора DCO.

call #TB_SETUP ; Инициализация таймера Timer_B

; для генерации сигналов ШИМ

clr R15 ; R15 и R14 используются как указатели

clr R14 ; на таблицу синусов и для хранения

; значения «пилы» после стабилизации DCO

eint ; Разрешение прерываний

bis #LPM0,SR ; «усыпить» ЦПУ.

; Завершение программы

; остаётся обработчик прерывания CCIFG0

; где обновляются значения ШИМ

;--------------------------------------------------------------------------------------

Delay ; Программная пауза для стабилизации кварца

;--------------------------------------------------------------------------------------

mov #0004h,R15

L1 mov #0FFFFh,R14 ; ~ 1 секунда .

L2 dec R14 ;

jnz L2 ;

dec R15 ;

jnz L1 ;

ret ;

;

;--------------------------------------------------------------------------------------

SW_FLL ; Подпрограмма стабилизации частоты DCO.

; Кварцевый генератор 32768Гц используется

; в качестве опорной частоты для стабилизации

; и подстройки генератора DCO до требуемой

; частоты 2.048МГц. Это требуется в устройствах

; где нужна фиксированная частота DCO и для

; тех моделей MSP430 где нет аппаратного

; модуля FLL. См. руководства пользователя

; MSP430x3xx и MSP430x1xx Family

; User's Guides (literature number SLAU012 и

; SLAU049 соответственно) по вопросам,

; касающимся системы тактирования MSP430

;

; процедура основана на подсчёте тактов DCO

; за период ACLK (точнее, за 1/4 периода ACLK

; т.к. частота ACLK поделена на 4). Таймер

; Timer_A используется для подсчёта тактов DCO

; Полученное значение сравнивается с

; номинальным (Delta). Если число слишком

; большое, DCO декрементируется. Если число

; слишком маленькое, DCO инкрементируется.

; Далее сравнение повторяется.

; Процесс продолжается до тех пор, пока

; значения не сравняются. После этого

; DCO генерирует на требуемой частоте

; См. пример применения «Управление частотой

; генератора с цифровым управлением (DCO)

; микроконтроллеров MSP430x11x»

; ( "Controlling the DCO frequency of the

; MSP430x11x" Literature number SLAA074) по

; вопросам, связанным с управлением

; генератором DCO.

;

; Эта процедура вызывается только один раз

; в качестве примера, в реальных условиях

; её требуется выполнять периодически, чтобы

; быть уверенным, что генератор DCO

; остаётся откалиброванным.

;--------------------------------------------------------------------------------------

clr R15 ;

Setup_TA mov #TASSEL1+TACLR,&TACTL

; Источник тактирования TA - SMCLK

Setup_CC2 mov #CCIS0+CM0+CAP,&CCTL2

; Определить CCR2,CAP,ACLK

bis #MC1,&TACTL ; Запустить таймер timer_A

; в непрерывном режиме

Test_DCO bit #CCIFG,&CCTL2 ; Проверка флага захвата

jz Test_DCO ;

bic #CCIFG,&CCTL2 ; Очистка флага захвата

;

AdjDCO mov &CCR2,R14 ; В R14 число тактов SMCLK

sub R15,R14 ; в R14 разница

mov &CCR2,R15 ; В R15 число тактов SMCLK

cmp #Delta,R14 ; Delta = SMCLK/(32768/4)

jlo IncDCO ;

jeq DoneFLL ;

DecDCO dec.b &DCOCTL ;

jmp Test_DCO ;

IncDCO inc.b &DCOCTL ;

jmp Test_DCO ;

DoneFLL clr &CCTL2 ; очистить CCR2

clr &TACTL ; остановить таймер timer_A

ret ; возврат из подпрограммы

;--------------------------------------------------------------------------------------

TB_SETUP ; Подпрограмма инициализации таймера

; Timer_B для генерации ШИМ

;--------------------------------------------------------------------------------------

mov #TBSSEL1+TBCLR,&TBCTL

; SMCLK –источник тактирования TB.

mov #CCIE,&TBCCTL0 ; Перевести CCR0 в режим сравнения,

; разрешить прерывания от него

mov #0FFh,&TBCCR0 ; Записать 255d в CCR0. Это соответствует

; периоду ШИМ-выходов в 256 отсчётов (8 бит).

; т.е. получаем 8-битный ЦАП.

mov #02E0h,&TBCCTL1 ; Перевести CCRx в режим сравнения, запретить

mov #02E0h,&TBCCTL2 ; прерывания, режим выхода '7' , т.е.

mov #02E0h,&TBCCTL3 ; сброс/установка. Сигнал EQU0 устанавливает

; выход в «1», а EQU1 в «0». Установим

; условия сравнения для регистра как

; его равенство нулю

mov #Sine_Tab,&TBCCR1

; Загрузить первый отсчёт в CCR1

mov #01h,R14 ; Загрузить начальное значение «пилы» в R14.

mov #0AAh,&TBCCR3 ; И значение для постоянного уровня

; которое соответствует ~ 2/3 Vcc т.к.

; #0AAh это примерно 2/3 от #0FFh.

bis #MC0,&TBCTL ; Запустить таймер timer_B в режиме инкремента

ret

;--------------------------------------------------------------------------------------

TB_ISR ; Подпрограмма обработки прерываний таймера

; Timer_B: изменяет значения в регистрах

; CCR1 и CCR2 для изменения коэффициента

; заполнения ШИМ для синусоиды и «пилы».

; Значение в CCR3 не изменяется для

; формирования постоянного уровня

;--------------------------------------------------------------------------------------

incd R15 ; Инкремент указателя в R15 to

; для следующего значения в таблице синуса

; Инкремент двойной, т.к.

; значения в таблице двухбайтовые

and #03Fh,R15 ; Операция лог. «И» с числом 03Fh даёт

; счётчик по модулю 32 для указания на

; значения в таблице

mov Sine_Tab(R15),&TBCCR1

; Загрузить следующее значение синуса в CCR1

add #04h,R14 ; Инкрементировать значение «пилы»

; Изменение шага в R14

; приведёт к изменению частоты «пилы»

and #0FFh,R14 ; Исключим лишние биты

mov R14,&TBCCR2 ; Загрузим новое значение пилы в CCR2

reti ; возврат, прерывания разрешены

;-----------------------------------------------------------------------------------

COMMON INTVEC ; Вектора прерываний MSP430x14x

;-----------------------------------------------------------------------------------

ORG TIMERB0_VECTOR

DW TB_ISR ; Прерывание от CCIFG0

ORG RESET_VECTOR

DW RESET ; POR, внеш. Reset, Watchdog

END

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...