美文网首页
值班电路 程序分块测试

值班电路 程序分块测试

作者: nino天 | 来源:发表于2014-08-09 16:15 被阅读32次

1.时钟测试

用P5.4,5.5可以分别输出系统时钟和辅助系统时钟
MCLK = 8MHZ,SMCLK = 1MHZ
<pre>void Init_clk(void)
{
unsigned int i;

BCSCTL1=0X00; //将寄存器BCSCTL1的内容清零
//XT2开启,LFTX1工作在低频,ACLK的分频因子为1
do
{
IFG1 &=~OFIFG; //清除OSCFault标志位
for(i=0x20;i>0;i--); //IFG1中断标志寄存器1
}
while((IFG1 & OFIFG)== OFIFG);//如果OSCFault=1

BCSCTL2=0X00;
BCSCTL2 += SELM_2;            //MCLK的时钟源为TX2CLK,分频因子为1  8MHZ
BCSCTL2 += SELS +DIVS_3;      //SMCLK的时钟源为TX2CLK,分频因子为8  1MHZ
return;

}</pre>

2.TIMER A 测试:

增计数模式下,TA OUT1 = 50/1M = 0.05MS周期的方波,也就是20kHZ的方波,OUTMOD选择3,即计数到CCR1,SET,计数到CCR0,RESET。在P2.3可以检测方波的输出。
<pre>void Init_timer(void)
{
P2SEL |= BIT3;
P2DIR |= BIT3;
CCR0 = 50;
CCR1 = 25;
TACCTL1 = OUTMOD_3;
TACTL = TASSEL_2 | MC_1 | TACLR; //SMCLK作为TA的时钟源 增计数模式
}</pre>
3.AD 测试:
AD中断中去反转一个LED,示波器看到LED的反转周期是1ms
因为TA OUT1是0.05ms,所以AD转换每0.05ms一次
Num_of_Results = 10,完成10次转换要0.5ms,LED周期为0.5*2= 1ms
<pre>void Init_ADC(void)
{
P2DIR = 0xFF;
P2OUT = 0x00;
P6SEL |= 0x01; // 使能ADC通道P6.0即A0
ADC12CTL0 = ADC12ON+SHT0_1; // 打开ADC,设置采样时间
ADC12CTL1 = SHP+CONSEQ_2+SHS_1; // 使用采样定时器
//ADC12CTL1 = ADC12SSEL_3+ADC12DIV_0; //ADC内核时钟SMCLK 1MHZ
//之前一直出错是因为这一句
ADC12MCTL0 = INCH_0;
ADC12IE = 0x0001; // 使能中断
}</pre>

4.注意:
(1)不要用MSC,使用了单次通道序列转换之后,希望每次转换都由SHI来触发
就是每次都要定时器TA OUT1信号的上升沿触发,而不能自动转换
(2)可以不去设置ADC12的内核时钟,设置了反而错误,不明原因,
也许是设置之后采样保持的时间不足,应该是内部问题

<pre>

#include <msp430x14x.h>
#include <stdlib.h>
#define Num_of_Results 10
int results[Num_of_Results] = {0};

void Init_clk(void);
void Init_timer(void);
void Init_ADC(void);

//********************主函数***************************
void main(void)
{
WDTCTL =WDTPW + WDTHOLD; //关闭看门狗

//P1SEL |= (BIT2+BIT6);
//P1DIR |= (BIT2+BIT6);
//P2OUT |= 0xf0;
//P5SEL |= BIT5+BIT4;
//P5DIR |= BIT5+BIT4;

Init_clk();
Init_ADC();
Init_timer();
ADC12CTL0 |= ENC; // 使能转换
_BIS_SR(GIE); //使能全局中断

while(1)
{
}//while
}//main

#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR (void)
{
static unsigned int index = 0;
results[index++] = ADC12MEM0; // Move results
if (ADC12MEM0 < 0x7FF)
P2OUT &= ~0xF0;
else
P2OUT |= 0xF0;
if (index == Num_of_Results)
{
index = 0;
P2OUT ^= 0X01;
}
}</pre>

相关文章

  • 值班电路 程序分块测试

    1.时钟测试 用P5.4,5.5可以分别输出系统时钟和辅助系统时钟MCLK = 8MHZ,SMCLK = 1MHZ...

  • 值班电路 滤波检波

    值班电路硬件上经过反相放大,滤波。之后由MSP430的模拟通道送入单片机,单片机内置的ADC12对输入信号进行采样...

  • 值班电路设计

    模拟部分放大滤波和PGA电路及接口 数字部分最小系统及外部通信

  • 集成电路 IC 卡高低温测试|上海伯东

    集成电路 IC卡高低温测试集成电路 IC 卡高低温测试原因:集成电路 IC 卡在出厂前必须经过环境测试,用来模拟集...

  • 在线测试仪的定义

    在线测试仪是一种在线式的电路板静态测试设备,主要用于组装电路板的测试。在线测试是一种不断开电路,不拆下元器件管脚的...

  • 新三板半导体之测试:大市场小企业

    集成电路测试贯穿在集成电路设计、芯片制造、封装以及集成电路应用的全过程,测试是集 成电路产业链中重要的一环,具有技...

  • 详解DFT的scan(边界扫描)

    1.scan结构图 扫描路径法的显著优点就是测试中把时序电路转化为组合电路,使得测试生成比时序电路容易,而...

  • 芯片测试之连接性

    芯片测试的第一步就是测试芯片的连接性,也称为开短路测试(open/short test),它是利用电路的保护电路进...

  • 无标题文章

    分块交付测试时间 11.09 活动详情首页 静态页面 测试分屏体验; 活动分享; 活动加入系统日历提醒; 地图定位...

  • 冒烟测试知多少?

    一、冒烟测试介绍 冒烟测试一词,来源于电路板测试: 电路板拼接或组装完成后,进行通电测试,如果冒烟,则说明存在缺陷...

网友评论

      本文标题:值班电路 程序分块测试

      本文链接:https://www.haomeiwen.com/subject/wwdetttx.html