Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: DAC
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
Fynjy86
здравствуйте, не могу никак запустить цап, вот код:


#include "msp430.h" ; #define controlled include file

NAME main ; module name

PUBLIC main ; make the main label vissible
; outside this module
ORG 0FFFEh
DC16 init ; set reset vector to 'init' label

RSEG CSTACK ; pre-declaration of segment
RSEG CODE ; place program in 'CODE' segment

init: MOV #SFE(CSTACK), SP ; set up stack

main: NOP ; main program
MOV.W #WDTPW+WDTHOLD, &WDTCTL ; Stop watchdog timerV DAC12ENC+
BIC.B #BTHOLD, &BTCTL
MOV.B #0h, P6DIR
MOV.B #0h, P6SEL
BIS.B #BIT6, P6SEL
BIS.B #BIT6, P6DIR
BIS.W #TASSEL0+MC0, &TACTL
BIS.W #0FFFFh, &TACCR0
BIS.W #0AAAAh, &TAR
MOV.W &0FFh, &DAC12_0DAT
BIS.W #ADC12ON+REFON+REF2_5V, &ADC12CTL0//источник опорного напряжения
BIS.W #DAC12CALON, &DAC12_0CTL
BIS.W #DAC12AMP0+DAC12AMP1+DAC12AMP2,&DAC12_0CTL
BIS.W #DAC12ENC+DAC12LSEL0,&DAC12_0CTL//
BIS.W #DAC12CALON, &DAC12_0CTL
SSS: MOV.W &TAR, &DAC12_0DAT
JMP SSS ; jump to current location '$'
; (endless loop)
END





помогите найти ошибку
Vas&Lis
Друг непонятное в твоем коде многое...во первых у тебя сам контроллер запустился? хоть что то?во вторых как проявляется ошибка с ЦАПом? что он выдает на пине? потом какая задача вообще стоит?просто запустить? и зачем тебе трехкратное усиление выходного сигнала?по моему запись в DAC12_xDAT до инициализации это бессмысленно...заносить в DAT все таки лучще 12-ти разрядное число...а в TAR лучше вообще ничего не заносить а предварительно его сбросить...с первого взгляда ошибки при инициализации нет , что касается именно ЦАПа. Попробуй убрать строку с заносом в TAR значения и в инициализации сбрось таймер или вообще его убери и в цикле инкремент переменной какой нить сделай и заноси в ЦАП, та удобно на пине пила получиться...
Fynjy86
сделал во так:


#include "msp430.h" ; #define controlled include file

NAME main ; module name

PUBLIC main ; make the main label vissible
; outside this module
ORG 0FFFEh
DC16 init ; set reset vector to 'init' label

RSEG CSTACK ; pre-declaration of segment
RSEG CODE ; place program in 'CODE' segment

init: MOV #SFE(CSTACK), SP ; set up stack

main: MOV.W #WDTPW+WDTHOLD,&WDTCTL ; Stop watchdog timer

BIS.W #ADC12ON+REFON+REF2_5V, &ADC12CTL0//
BIS.B #BIT6,P6SEL//
BIS.B #BIT6,P6DIR//
BIS.W #DAC12AMP0+DAC12AMP1+DAC12AMP2, &DAC12_0CTL//
BIS.W #DAC12SREF0+DAC12RES+DAC12ENC+DAC12LSEL0, &DAC12_0CTL//
FDSA: INC &DAC12_0DAT

JMP FDSA

; main program

JMP $ ; jump to current location '$'
; (endless loop)
END



на выходе приямоугольная трапеция biggrin.gif только что не могу понять, то что при запуске калибровки он не выходит из неё... подскажите как правельно калибровать))
den123
На мой взгляд - не хватает задержки на выполнение калибровки ЦАП. У меня так:
bis #DAC12CALON,&DAC12_0CTL
labdac0
bit #DAC12CALON,&DAC12_0CTL; Ожидание завершения самокалибровки
jnz labdac0
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.