共2条
1/1 1 跳转至页
问
本人现在使用 1122做序列通道单次转换,主要是A3,A4。但是怎么作实验都没有效果。查找资料也没有发现ADC10的资料,因此请教各位大狭,如何设置其序列通道单次转换的寄存器,而且有几个寄存器的作用还不是很明白,比如ADC10AE,ADC10SA,ADC10DTC1,等,看DATASHEET和书籍例程比较少,因此最好好个位能够发点资料或者例程,谢谢。
答 1:
下面是我的程序,请大家解释一二,谢谢。
ORG 0F000H
RESET MOV.W #0300H,SP
STOPWDT MOV.W #WDTPW+WDTHOLD,&WDTCTL ;关闭看门狗
BIS.B #SK+DI+CS,&P2DIR
SETUPAD MOV.W #INCH_4+ADC10DIV_3+CONSEQ_1,&ADC10CTL1 ;设置3,4为AD通道。
MOV.W #ADC10SHT_3+ADC10ON+ADC10IE+MSC,&ADC10CTL0
BIS.B #18H,&ADC10AE
MOV.B #02H,&ADC10DTC1 ;两个寄存器
MAINLOOP
BIC.W #ENC,&ADC10CTL0
BUSY_TEST
BIT #BUSY,&ADC10CTL1
JNZ BUSY_TEST
MOV.W #210H,&ADC10SA ;210H为存储的首地址。
BIS.W #ENC+ADC10SC,&ADC10CTL0 ;开始AD转换。
BIS.W #CPUOFF+GIE,SR ;进入低功耗模式,等待转换完成。
MOV.W &210H,R12 ;转换后的数据放到210H,212H中
CALL #BIN2BCD4 ;转化为BCD。
MOV.W R13,&0210H ;下面的程序为显示等程序。
MOV.W &212H,R12
CALL #BIN2BCD4
MOV.W R13,&212H
CALL #CHANGE8NUM
CALL #LCDRESET
CALL #TRANSRAM
CALL #DELAY
JMP MAINLOOP
使用A4,A3为转换通道,设置为序列单次,可是通过我送到LCD的数据怎么也不行,只能转换一个通道A4,A3无论如何不能转换,请大家帮忙。使用1122
这个问题我研究了很长时间了,根据我上载资料AD10来编制的,但是只能转换一个通道,郁闷ING。。。。。。。。。。。。。。。?????????//
答 2: 这些例程看一遍,应该差不多了。 答 3: 这个AD资料比较的全,但是对于这一种我还是真没有看出个所以然拉,愁人呀。
因此请求斑竹能不能看看我的程序在什么地方出的问题,我现在时间很紧迫呀。主要我怎么使用序列单通道模式,只要是这种,我的实验就做不出来,郁闷ING
请大家伸出你们的手吧 答 4: 不好意思,老乡,我还没有用过430带的AD呢!你还是问问刘工或钱工吧,或直接看看它的例子http://focus.ti.com/analog/docs/ana...0codeexamples。 答 5: 430里的ADC10是带DMA方式的。
这里的寄存器ADC10DTC1控制DMA传递数据的个数。双通道应将其设置为2。否则只能传递一个通道的AD结果。 答 6: 首先谢谢老乡和斑竹关照。
本人发现一个问题,就是老魏书上和DATASHEET上都是说1122有四个外部通道,但是片子外观上看,是五个通道,就是从A0-------A4,我想了半天也没有想出个原因来,请斑竹不吝键盘。
我设置过MOV.B #2,&ADC10DTL1 。但是程序好象不能执行,因为为了发现问题,我都是将转换结果送到LCD上,只有设置为1的时候才工作,只有一个通道可以,但是设置为2怎么也不工作,现在真是越来越愁,想设置单次转换,分成两次,也不能成功,也是只能转换一个通道。愁ING。 答 7: 现在对这个问题非常疑惑,请赶快帮忙。 答 8: adc10不同于adc12。它的转换是从inch所选择的通道开始的,直到通道0,这其间的通道可以选择打开关闭,但是转换仍然是进行的。如果选择inch_4,转换是从4-3-2-1-0,根据ADC10DTC1所选择的转移数,DMA方式自动传递转换结果。如果ADD10DTC1选择2,则转移的数据是4和3通道的转换结果。把下面的例子跑一下,我不知道您的问题到底在那里。
#include "MSP430x12x2.h"
;******************************************************************************
; MSP-FET430P120 Demo - ADC10 Sample A2-0, AVcc, Single Sequence DTC DCO
;
; Description; Sample A1/A0/A3 as single sequence with reference to Avcc.
; Software sets ADC10SC to trigger sample sequuence. In Mainloop MSP430 waits
; in LPM0 to save power until ADC10 conversion complete, ADC10_ISR(DTC) will
; force exit from any LPMx in Mainloop on reti. ADC10_ISR will force any LPMx
; exit. ADC10 internal oscillator times sample period (16x) and conversion
; (13x). DTC transfers conversion code to RAM 200h - 206h. P1.0 set at start
; of conversion burst, reset on completion.
; //* MSP430F1232 or MSP430F1132 Device Required *//
;
; MSP430F1232
; -----------------
; /|\| XIN|-
; | | |
; --|RST XOUT|-
; | |
; >---|A3 P1.0|-->LED
; >---|A2 |
; >---|A0 |
;
; M.Buccini
; Texas Instruments, Inc
; January 2002
;******************************************************************************
;------------------------------------------------------------------------------
ORG 0E000h ; Program Start
;------------------------------------------------------------------------------
RESET mov.w #0300h,SP ; Initialize stackpointer
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
SetupADC10 mov.w #INCH_2+CONSEQ_1,&ADC10CTL1 ; A2/A1/A0, single sequence
mov.w #ADC10SHT_2+MSC+ADC10ON+ADC10IE,&ADC10CTL0 ;
bis.b #07h,&ADC10AE ; P2.0,1,2 ADC10 option selects
mov.b #03h,&ADC10DTC1 ; 3 conversions
SetupP1 bis.b #001h,&P1DIR ; P1.0 output
;
Mainloop bic.w #ENC,&ADC10CTL0 ;
busy_test bit #BUSY,&ADC10CTL1 ; Insure ADC10 core inactive
jnz busy_test ;
mov.w #0200h,&ADC10SA ; Data buffer start
bis.b #001h,&P1OUT ; P1.0 = 0
bis.w #ENC+ADC10SC,&ADC10CTL0 ; Start sampling
bis.w #CPUOFF+GIE,SR ; LPM0, ADC10_ISR will force exit
bic.b #001h,&P1OUT ; P1.0 = 1
jmp Mainloop ; Again
;
;------------------------------------------------------------------------------
ADC10_ISR;
;------------------------------------------------------------------------------
mov.w #GIE,0(SP) ; Exit any LPMx on reti
reti ;
;
;------------------------------------------------------------------------------
; Interrupt Vectors Used MSP430x12x2
;------------------------------------------------------------------------------
ORG 0FFFEh ; MSP430 RESET Vector
DW RESET ;
ORG 0FFEAh ; ADC10 Vector
DW ADC10_ISR ;
END 答 9: 说实在的,我上载的那个资料中的例子我都看了,而且,你写的这个例子我也做了实验了,送到发光二极管一点问题也没有,因为这不牵扯转换的数据,我现在愁的是转换的数据和我的预料很大的差别。送到液晶中的数据就是不一样,我现在也是非常奇怪,现在只有使用单次转换勉强实现了。斑竹可以实验实验,比如设置A3,A4为通道,然后将数据送出来显示。看看怎么样??
我反正感觉我上面写的程序是没有问题的。
再有我今天参加你们的会议,发现怎么你们都没有射像头呀,是不是怕别人看见呀???????? 答 10: 看看如何?? 答 11: 只要结果放到ram里后是正确的,显示肯定正确的,要不就是您送显这部分有问题。我测试的结果都是正确的。
ORG 0F000H
RESET MOV.W #0300H,SP
STOPWDT MOV.W #WDTPW+WDTHOLD,&WDTCTL ;关闭看门狗
BIS.B #SK+DI+CS,&P2DIR
SETUPAD MOV.W #INCH_4+ADC10DIV_3+CONSEQ_1,&ADC10CTL1 ;设置3,4为AD通道。
MOV.W #ADC10SHT_3+ADC10ON+ADC10IE+MSC,&ADC10CTL0
BIS.B #18H,&ADC10AE
MOV.B #02H,&ADC10DTC1 ;两个寄存器
MAINLOOP
BIC.W #ENC,&ADC10CTL0
BUSY_TEST
BIT #BUSY,&ADC10CTL1
JNZ BUSY_TEST
MOV.W #210H,&ADC10SA ;210H为存储的首地址。
BIS.W #ENC+ADC10SC,&ADC10CTL0 ;开始AD转换。
BIS.W #CPUOFF+GIE,SR ;进入低功耗模式,等待转换完成。
MOV.W &210H,R12 ;转换后的数据放到210H,212H中
CALL #BIN2BCD4 ;转化为BCD。
MOV.W R13,&0210H ;下面的程序为显示等程序。
MOV.W &212H,R12
CALL #BIN2BCD4
MOV.W R13,&212H
CALL #CHANGE8NUM
CALL #LCDRESET
CALL #TRANSRAM
CALL #DELAY
JMP MAINLOOP
使用A4,A3为转换通道,设置为序列单次,可是通过我送到LCD的数据怎么也不行,只能转换一个通道A4,A3无论如何不能转换,请大家帮忙。使用1122
这个问题我研究了很长时间了,根据我上载资料AD10来编制的,但是只能转换一个通道,郁闷ING。。。。。。。。。。。。。。。?????????//
答 2: 这些例程看一遍,应该差不多了。 答 3: 这个AD资料比较的全,但是对于这一种我还是真没有看出个所以然拉,愁人呀。
因此请求斑竹能不能看看我的程序在什么地方出的问题,我现在时间很紧迫呀。主要我怎么使用序列单通道模式,只要是这种,我的实验就做不出来,郁闷ING
请大家伸出你们的手吧 答 4: 不好意思,老乡,我还没有用过430带的AD呢!你还是问问刘工或钱工吧,或直接看看它的例子http://focus.ti.com/analog/docs/ana...0codeexamples。 答 5: 430里的ADC10是带DMA方式的。
这里的寄存器ADC10DTC1控制DMA传递数据的个数。双通道应将其设置为2。否则只能传递一个通道的AD结果。 答 6: 首先谢谢老乡和斑竹关照。
本人发现一个问题,就是老魏书上和DATASHEET上都是说1122有四个外部通道,但是片子外观上看,是五个通道,就是从A0-------A4,我想了半天也没有想出个原因来,请斑竹不吝键盘。
我设置过MOV.B #2,&ADC10DTL1 。但是程序好象不能执行,因为为了发现问题,我都是将转换结果送到LCD上,只有设置为1的时候才工作,只有一个通道可以,但是设置为2怎么也不工作,现在真是越来越愁,想设置单次转换,分成两次,也不能成功,也是只能转换一个通道。愁ING。 答 7: 现在对这个问题非常疑惑,请赶快帮忙。 答 8: adc10不同于adc12。它的转换是从inch所选择的通道开始的,直到通道0,这其间的通道可以选择打开关闭,但是转换仍然是进行的。如果选择inch_4,转换是从4-3-2-1-0,根据ADC10DTC1所选择的转移数,DMA方式自动传递转换结果。如果ADD10DTC1选择2,则转移的数据是4和3通道的转换结果。把下面的例子跑一下,我不知道您的问题到底在那里。
#include "MSP430x12x2.h"
;******************************************************************************
; MSP-FET430P120 Demo - ADC10 Sample A2-0, AVcc, Single Sequence DTC DCO
;
; Description; Sample A1/A0/A3 as single sequence with reference to Avcc.
; Software sets ADC10SC to trigger sample sequuence. In Mainloop MSP430 waits
; in LPM0 to save power until ADC10 conversion complete, ADC10_ISR(DTC) will
; force exit from any LPMx in Mainloop on reti. ADC10_ISR will force any LPMx
; exit. ADC10 internal oscillator times sample period (16x) and conversion
; (13x). DTC transfers conversion code to RAM 200h - 206h. P1.0 set at start
; of conversion burst, reset on completion.
; //* MSP430F1232 or MSP430F1132 Device Required *//
;
; MSP430F1232
; -----------------
; /|\| XIN|-
; | | |
; --|RST XOUT|-
; | |
; >---|A3 P1.0|-->LED
; >---|A2 |
; >---|A0 |
;
; M.Buccini
; Texas Instruments, Inc
; January 2002
;******************************************************************************
;------------------------------------------------------------------------------
ORG 0E000h ; Program Start
;------------------------------------------------------------------------------
RESET mov.w #0300h,SP ; Initialize stackpointer
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
SetupADC10 mov.w #INCH_2+CONSEQ_1,&ADC10CTL1 ; A2/A1/A0, single sequence
mov.w #ADC10SHT_2+MSC+ADC10ON+ADC10IE,&ADC10CTL0 ;
bis.b #07h,&ADC10AE ; P2.0,1,2 ADC10 option selects
mov.b #03h,&ADC10DTC1 ; 3 conversions
SetupP1 bis.b #001h,&P1DIR ; P1.0 output
;
Mainloop bic.w #ENC,&ADC10CTL0 ;
busy_test bit #BUSY,&ADC10CTL1 ; Insure ADC10 core inactive
jnz busy_test ;
mov.w #0200h,&ADC10SA ; Data buffer start
bis.b #001h,&P1OUT ; P1.0 = 0
bis.w #ENC+ADC10SC,&ADC10CTL0 ; Start sampling
bis.w #CPUOFF+GIE,SR ; LPM0, ADC10_ISR will force exit
bic.b #001h,&P1OUT ; P1.0 = 1
jmp Mainloop ; Again
;
;------------------------------------------------------------------------------
ADC10_ISR;
;------------------------------------------------------------------------------
mov.w #GIE,0(SP) ; Exit any LPMx on reti
reti ;
;
;------------------------------------------------------------------------------
; Interrupt Vectors Used MSP430x12x2
;------------------------------------------------------------------------------
ORG 0FFFEh ; MSP430 RESET Vector
DW RESET ;
ORG 0FFEAh ; ADC10 Vector
DW ADC10_ISR ;
END 答 9: 说实在的,我上载的那个资料中的例子我都看了,而且,你写的这个例子我也做了实验了,送到发光二极管一点问题也没有,因为这不牵扯转换的数据,我现在愁的是转换的数据和我的预料很大的差别。送到液晶中的数据就是不一样,我现在也是非常奇怪,现在只有使用单次转换勉强实现了。斑竹可以实验实验,比如设置A3,A4为通道,然后将数据送出来显示。看看怎么样??
我反正感觉我上面写的程序是没有问题的。
再有我今天参加你们的会议,发现怎么你们都没有射像头呀,是不是怕别人看见呀???????? 答 10: 看看如何?? 答 11: 只要结果放到ram里后是正确的,显示肯定正确的,要不就是您送显这部分有问题。我测试的结果都是正确的。
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |