Msp430f5529定时器模块测周期和ADC12模块

合集下载

msp430f5529定时器实验

msp430f5529定时器实验

定时器实验一、实验目的1、学习MSP430F5529定时器的使用。

2、学习MSP430F5529定时器相应的寄存器的使用。

二、实验任务LED灯的电路图如图*所示:图* LED灯的电路图任务:编程实现LED1 以1Hz频率闪烁。

三、程序流程图实现LED1 以1Hz频率闪烁的程序流程图如图*所示四、程序代码#includ#include<msp430.h>#define CPU_F ((double)1000000)#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) unsigned char count=0;int main(void){//定时器口中断控制函数WDTCTL = WDTPW | WDTHOLD; // stop watchdog timerP1DIR |= BIT0; //P1.0置为输出TA0CCTL0 = CCIE; //CCR0中断使能TA0CCR0 = 50000; //设定计数值TA0CTL =TASSEL_2+MC_1+TACLR;//SMCLK,增计数模式,清除TAR_bis_SR_register(LPM0_bits+GIE);//低功耗模式0,使能中断}#pragma vector=TIMER0_A0_VECTOR__interrupt void TIMER0_A0_ISR(void){count++;if(count==20){count=0;P1OUT ^= BIT0; //1s改变LED1灯状态 }}五、遇到的问题及解决办法无六、实验小结练习了单片机mspf5529的编程。

MSP430F5529实验指导书V1.0

MSP430F5529实验指导书V1.0

MSP430F5529 实验指导书(V1.0)2014年10月27日东北林业大学机电工程学院“3+1”实验室实验一基础GPIO实验实验二键盘与液晶显示实验实验三时钟系统配置实验实验四看门狗与定时器实验实验五 AD/DA实验实验六比较器实验实验七 Flash实验实验八串行通信实验实验一基础GPIO实验【实验目的】1、熟悉CCS的基本使用方法;2、掌握MSP430系列单片机程序开发的基本步骤;3、掌握MSP430 IO口的基本功能。

【实验仪器】1、SEED-EXP430F5529v1.0开发板一套;2、PC机操作系统Windows XP或Windows 7,CCSv5.1集成开发环境。

【实验原理】CCS(Code Composer Studio)是 TI 公司研发的一款具有环境配置、源文件编辑、程序调试、跟踪和分析等功能的集成开发环境,能够帮助用户在一个软件环境下完成编辑、编译、链接、调试和数据分析等工作。

CCSv5.1 为 CCS 软件的最新版本,功能更强大、性能更稳定、可用性更高,是 MSP430 软件开发的理想工具。

SEED-EXP430F5529v1.0开发板上的有8个可操作的LED灯,与MCU的IO口对应关系如图1-1所示:图1-1 LED与MCU的IO对应关系电路我们可以通过控制单片机IO口的输出电平状态来控制各个LED灯的亮灭。

开发板上还有2个可操作的按键S1,S2。

如图1-2所示。

图1-2 按键电路我们可以通过读取与按键相连的IO口的输入电平状态来执行相应的操作。

此外,S1,S2还可以作为外部中断源,触发中断。

【实验内容】1、用调用头文件的方法,使能MSP430F5529开发板上的8个LED灯依次按顺序循环点亮;2、用按键S1控制开发板上LED1的亮灭状态(查询法);3、用按键S2控制开发板上跑马灯的循环速度(中断方式)。

【实验步骤】内容1:使能开发板上的8个LED灯依次按顺序循环点亮1、打开CCSv5并确定工作区间,然后选择File-->New-->CCS Project 弹出图1-3对话框。

MSP430程序库之ADC12模块

MSP430程序库之ADC12模块

MSP430程序库之ADC12模块msp430内部含有ADC12模块,可以完成12位的模数转换,当对精度或其他指标要求不高时,可以选用430单片机内部的ADC12完成模数转换工作。

这里主要实现了一个比较通用的ADC12模块初始化程序,具体的数据存储和处理需要自己在中断处理函数中添加。

1.硬件介绍:msp430单片机内的ADC12模块的特点如下:12位转换精度,1位非线形误差,1位非线形积分误差;多种时钟源给ADC12模块,切本身自带时钟发生器;内置温度传感器;TimerA/TimerB硬件触发器;8路外部通道和4路内部通道;内置参考电压源和6种参考电压组合;4种模式的模数转换;16bit的转换缓存;ADC12关闭支持超低功耗;采用速度快,最高200Kbps;自动扫描和DMA使能。

430内部的ADC12功能还是蛮强大的,可以有定时器触发模数转换开始,还可以和内部的DMA模块共同使用,完成高速的采样转储等高级功能。

这个AD的转化公式如下,可以根据它计算采样的模拟电压值:使用AD是还要注意采样时间,430单片机的模数ADC12模块的等效模拟电压输入电路如下:其中V S是信号源电压,R S是信号源内阻,V I在Ax(ADC12模块模拟输入端)上的电压,R I单片机内多路开关等效电阻,V C是保持电容上的电压(ADC12模块采样的电压),C I 是电容的值。

需要根据这些值计算采样时间:代入单片机上的参数后公式如下:我的程序中采样时间设的是4us,可以算出如果用我的程序(不更改采样时间)的话,最大信号源内阻可以是6.8k,当信号源内阻更大时,可以自己按要求设采样时间(在程序的初始化函数内的寄存器设置部分)。

还有,ADC模数转换时要求参考电压等很稳定,为了达到这个要求,德州仪器要求这部分的电路如下:即:所有参考源和电源均并联一组0.1uF和10uF的电容。

硬件部分就说这么多了;如果需要更详细的说明,参考用户指南。

MSP430ADC12转换模块总结

MSP430ADC12转换模块总结

MSP430ADC12转换模块总结MSP430ADC12转换模块是德州仪器(Texas Instruments)公司推出的一种12位模数转换器。

它主要应用于MSP430系列微控制器中,是一种用于模拟信号转换为数字信号的重要模块。

本文将对MSP430ADC12转换模块的原理、特点、应用和优缺点进行详细的总结。

一、原理1.设置输入通道和转换时钟。

2.开始转换,模块将自动切换到所选通道,并从该通道读取模拟输入信号。

3.模块以逐位的方式逼近比较,从最高有效位(MSB)开始,通过与DAC比较来确定该位是0还是14.继续逼近,直至得到完整的12位数字输出。

5.完成转换后,可以读取数字输出值,并根据需要进行后续处理。

二、特点1.高精度:MSP430ADC12转换模块具有12位分辨率,可以实现高精度的模拟信号转换。

2.快速转换:该模块支持多种转换速度选项,可根据应用需求选择合适的速度,实现快速转换。

3.多通道输入:MSP430ADC12模块支持多达16个输入通道,可以实现多种模拟信号的并行转换。

4.内部参考电压:模块内置了参考电压源,可以提供稳定的参考电压,减少外部硬件成本。

5.中断功能:该模块支持转换完成中断,当转换完成时,可以通过中断方式通知主控制器进行相应的处理。

6.低功耗:该模块工作时具有低功耗特性,可以在需要的时候进入低功耗模式,从而节省系统能量消耗。

三、应用1.传感器信号处理:可以将各种传感器(如温度、压力、湿度传感器)的模拟信号转换为数字信号,从而实现对传感器的精确测量和控制。

2.电力系统监测:可以对电力系统中的各种参数(如电压、电流、功率)进行模拟信号转换,实现对电力系统的实时监测和控制。

3.仪器仪表:可以将各种测量仪器(如多米表、示波器)的模拟信号转换为数字信号,提高仪器仪表的测量精度和稳定性。

4.通信系统:可以将通信系统中的模拟信号(如音频信号)转换为数字信号,实现通信数据的处理和传输。

四、优缺点1.高精度:具有12位分辨率,可以实现高精度的信号转换。

Msp430f5529开发板测周期和AD

Msp430f5529开发板测周期和AD

Msp430f5529开发板测频率和ADC采样电压必备资料:f5529的中文指导和数据手册(遗憾是汇编语言不是C)中文指导:网上有大侠把英文版的用户指导翻译成中文了数据手册:还没有出现中文版这种神器,不过多看几遍就OK一.定时器A一些基本资料至于寄存器里面含义自己应该可以看懂!这句话我认为有一个极容易产生一个误区,就是TA有7个比较捕获寄存器,当你查看msp430f5529.h的时候,我就发现只有TAxCCTL0,TAxCCR0TAxCCTL1,TAxCCR1TAxCCTL2,TAxCCR2它们都是共用一个TACTL。

压根就是没有3~6例如没有TAxCCTL3,TAxCCR3,我认为单片机上肯定是有7个比较捕获寄存器,就是msp430f5529没有对剩余的四个进行宏定义。

个人想法。

这个最高级,好像大部分的430单片机写的程序都是优先写它。

特点:增计数模式连续计数模式增减计数模式!!!!!!!这几种模式都能用例如增计数模式:TA0CCTL0 = CCIE; // CCR0 interrupt enabledTA0CCR0 = 50000;TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, upmode, clear TAR __bis_SR_register(GIE); // Enter LPM0, enable interrupts 就凭它的权力最多,就应该单独想用一个中断函数与CCTL1,CCTL2区分开来!// Timer0 A0 interrupt service routine#pragma vector=TIMER0_A0_VECTOR__interrupt void TIMER0_A0_ISR(void){}其中的R0代表你用的TA定时器的第几个TA0-----R0TA1-----R1TA2-----R2CCTL0---A0 一个中断对应一个中断源例如我写的是TA2CCTL0和TA2CCR0,则对应的中断就是#pragma vector=TIMER2_A0_VECTOR应该明白了吧!TAxCCTL2,TAxCCR2特点:连续计数模式经我调试TA0CCTL1 = CCIE; // CCR0 interrupt enabledTA0CCR1 = 50000;TA0CTL = TASSEL_2 + MC_1 + TACLR; // SMCLK, upmode, clear TAR是进不了中断的,这是血的教训,(如果你采用的是比较模式,千万别想着,TMD 理论上就是这样,为什么进不了中断)应该把 MC_1改为MC_2就OK了.官方这样说这样可以从侧面提问,上文中为什么不是TAxCCRx,而只是TAxCCR0!应该明白了,这里有一点千万要区分开来,这是晕死的教训!TA0R,与TA0CCR1的区别,我也不知道是看了那本破书,或者就是那些5系列一下的430单片机程序可以,我只能感叹F5529真是神器!在中断函数里把cap=TA0CCR1,或者是TA1CCR1,还说TA0R,TA0CCRx其实是一样的,就是计数的储存。

MSP430教程14MSP430单片机ADC12模块

MSP430教程14MSP430单片机ADC12模块

MSP430教程14MSP430单片机ADC12模块MSP430单片机的ADC12模块是一个12位的模数转换器,用于将模拟电压转换为数字值,以供单片机内部处理。

ADC12模块是MSP430单片机中最常用的外设之一,可以用于各种应用,如模拟传感器读取、电量计算等。

ADC12模块的主要特点包括:1.12位的精度,可以将电压精确转换为4096个不同的数字值。

2.可以配置为单通道或多通道模式,允许同时转换多个模拟通道的电压。

3.支持多种转换触发方式,如手动触发、定时触发、比较触发等。

4.可以配置不同的参考电压源,以适应不同的应用场景。

5.内置温度传感器和内部参考电压源,方便温度和电压的测量。

在使用ADC12模块之前,需要进行一些初始化配置。

首先,需要设置参考电压源,可以选择使用外部引脚输入的参考电压,或者使用内部参考电压。

其次,需要选择转换触发源,可以选择手动触发或定时触发等。

还可以选择转换结果的存储位置,可以存储在内存中,也可以存储在DMA传输缓冲区中。

在实际使用中,可以通过编程设置ADC12的参数并启动转换。

转换完成后,可以通过查询标志位或中断方式来获取转换结果。

获取结果后,可以进行进一步的处理,如计算实际电压值或进行比较判断等。

以下是一个简单的示例代码,演示了如何使用ADC12模块进行模拟电压转换:```c#include <msp430.h>void init_ADC12//设置参考电压为内部2.5V参考源REFCTL0=REFMSTR,REFVSEL_2,REFON;//设置为单通道模式,使用A0通道ADC12CTL0=ADC12ON,ADC12SHT0_8,ADC12MSC;ADC12CTL1=ADC12SHP;//使用采样保持模式ADC12MCTL0=ADC12INCH_0,ADC12VRSEL_1;//设置输入通道为A0,使用2.5V参考电压//选择转换触发源为软件触发ADC12CTL0,=ADC12ENC,ADC12SC;void main(void)WDTCTL=WDTPW,WDTHOLD;//停用看门狗定时器while (1)while (ADC12CTL1 & ADC12BUSY);//等待转换完成unsigned int result = ADC12MEM0; // 获取转换结果//进一步处理转换结果,如计算实际电压值float voltage = (result / 4096.0) * 2.5;//处理完成后进行下一次转换ADC12CTL0,=ADC12SC;}```以上代码中,首先调用`init_ADC12(`函数进行ADC12模块的初始化配置,然后在主循环中进行转换和结果处理。

msp430各功能模块的介绍

各个时钟信号源介绍如下:1、LFXT1CLK:低频/高频时钟源。

可以外接32768Hz的时钟芯片或频率为450KHz~8MHz的标准警惕或共振器。

2、XT2CLK:高频时钟源。

需要外接两个震荡电容器。

可以外接32768Hz的时钟芯片或频率为450KHz~8MHz的标准警惕或共振器和外部时钟输入。

较常用的晶体是8MHz的。

3、DCOCLK:内部数字可控制的RC振荡器。

MSP430单片机时钟模块提供3个时钟信号以供给片内各部分电路使用,这3个时钟信号分别是:(1)ACLK:辅助时钟信号。

ACLK是从LFXT1CLK信号由1/2/4/8分频器分频后得到的。

由BCSCTL1寄存器设置DIV A相应位来决定分频因子。

ACLK可提供给CPU外围功能模块做时钟信号使用。

(2)MCLK:主时钟信号。

MCLK是由3个时钟源所提供的。

它们分别是:LFXT1CLK、XT2CLK、和DCO时钟源信号。

MCLK主要用于MCU和相关模块做时钟。

同样可设置相关寄存器来决定分频因子及相关设置。

(3)SMCLK:子系统时钟。

SMCLK由2个时钟源信号提供,他们分别是XT2CLK 和DCO。

如果是F11或F11X1系列单片机,则由LFXT1CLK代替XT2CLK。

同样可设置相关寄存器来决定分频因子及相关的设置。

低频振荡器LFXT1:LFXT1支持超低功耗,它在低频模式下使用一个32768Hz的晶体。

不需要任何电容因为在低频模式下内部集成了电容。

低频振荡器也支持高频模式和高速晶体,但连接时每端必须加电容。

电容的大小根据所接晶体频率的高低来选择。

低频振荡器在低频和高频模式下都可以选择从XIN引脚接入一个外部输入时钟信号,但所接频率必须根据所设定的工作模式来选择,并且OSCOFF位必须复位。

高频振荡器LFXT2:LFXT2作为MSP430的第二晶体振荡器。

与低频相比,其功耗更大。

高频晶体真大气外接在XIN2和XOUT2两个引脚,并且必须外接电容。

MSP430F5529测周法测量信号频率

MSP430F5529测量频率-----测周法信号变换电路过零比较器,lm393输出上拉电阻,两电阻分压程序#include <msp430f5529.h>#include "stdio.h"#include "math.h"//测周法,在捕获过程中,定时溢出不能被检测出,选择时钟频率为低频时能测出低频,频率高能测出频率高的部分/** main.c*/long long start=0;//long long int stop=0;double fre=0.0;unsigned char i=0;unsigned char over=0;void SetVcoreUp (unsigned int level){// Open PMM registers for writePMMCTL0_H = PMMPW_H;// Set SVS/SVM high side new levelSVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level;// Set SVM low side to new levelSVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level;// Wait till SVM is settledwhile ((PMMIFG & SVSMLDL YIFG) == 0);// Clear already set flagsPMMIFG &= ~(SVMLVLRIFG + SVMLIFG);// Set VCore to new levelPMMCTL0_L = PMMCOREV0 * level;// Wait till new level reachedif ((PMMIFG & SVMLIFG))while ((PMMIFG & SVMLVLRIFG) == 0);// Set SVS/SVM low side to new levelSVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;// Lock PMM registers for write accessPMMCTL0_H = 0x00;}void init_clock(){SetVcoreUp (0x01);SetVcoreUp (0x02);SetVcoreUp (0x03);UCSCTL3 = SELREF_2; // Set DCO FLL reference = REFOUCSCTL4 |= SELA_2; // Set ACLK = REFO__bis_SR_register(SCG0); // Disable the FLL control loopUCSCTL0 = 0x0000; // Set lowest possible DCOx, MODxUCSCTL1 = DCORSEL_7; // Select DCO range 50MHz operation UCSCTL2 = FLLD_0 + 609; // Set DCO Multiplier for 25MHz// (N + 1) * FLLRef = Fdco// (762 + 1) * 32768 = 25MHz// Set FLL Div = fDCOCLK/2 __bic_SR_register(SCG0); // Enable the FLL control loop__delay_cycles(782000);do{UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);// Clear XT2,XT1,DCO fault flags SFRIFG1 &= ~OFIFG; // Clear fault flags}while (SFRIFG1&OFIFG); // Test oscillator fault flag}void send_char(char sc){UCA0TXBUF=sc;while(!(UCA0IFG&UCTXIFG));void send_string(char *s){while(*s!='\0'){send_char(*s++);}}init_uart(){P3SEL |= BIT3+BIT4; // P3.3,4 = USCI_A0 TXD/RXDUCA0CTL1 |= UCSWRST; // **Put state machine in reset**UCA0CTL1 |= UCSSEL__SMCLK; // SMCLKUCA0BR0 = 173; // 1MHz 115200 (see User's Guide)UCA0BR1 = 0; // 1MHz 115200UCA0MCTL |= UCBRS_5 + UCBRF_0; // Modulation UCBRSx=1, UCBRFx=0 UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**UCA0IE |= UCRXIE; // Enable USCI_A0 RX interruptsend_string("CLS(0);\r\n");}int main(void) {char buf[60]="\0";WDTCTL = WDTPW + WDTHOLD; // Stop WDTinit_clock();init_uart();P1DIR &= ~BIT2; // P1.2 inP1SEL |= BIT2; //捕获输入TA0CTL = TASSEL_2 +ID__8 + MC_2 + TACLR+TAIE; // SMCLK, 连续mode, clear TAR 8分频下限可以测到8Hz。

模数转换模块ADC12的设计MSP430F5529 片内温度传感器的方法和编程实现

微机原理实验实验六模数转换模块(ADC12)的设计与应用一、实验目的1. 了解数模转换(ADC)的基本原理、转换过程及性能指标;2. 熟练掌握片内 ADC12 模块的 4 种工作模式;3. 熟练掌握片内 ADC12 模块的寄存器及其配置应用方法;4. 掌握应用 MSP430F5529 片内温度传感器的方法和编程实现方法;5. 了解 I2C 设备的应用方法及片外温度传感器的编程实现方法;二、实验内容1. ●编程实现并分析:采用单通道单次采样模式,选择A0 通道作为输入通道,模拟转换参考电压组合选择 ADC12 内部生成电压 1.5V 和 AVSS,转换结果存储在 ADC12MEM0 缓冲寄存器中。

(1)源程序#include<msp430.h>void main(){volatile unsigned int i;WDTCTL=WDTPW+WDTHOLD; //关闭看门狗P6SEL |= BIT0; //使能A0输入通道REFCTL0 &= ~REFMSTR; //复位控制位以控制ADC12参考电压控制寄存器ADC12CTL0=ADC12ON+ADC12SHT02+ADC12REFON;//打开ADC12,设置采样间隔,打开参考电压产生器,并设置参考电压为1.5V,ADC12CTL1=ADC12SHP; //采样保持触发信号选择采样定时器ADC12MCTL0=ADC12SREF_1; //Vr+=Vref+,Vr-=Avssfor(i=0;i<64;i++); //延迟以使参考电压稳定ADC12CTL0 |= ADC12ENC; //使能转换while (1){ADC12CTL0 |=ADC12SC; //开始转换while(!(ADC12IFG&BIT0));__no_operation(); //设置断点查看ADC12MEN0缓冲寄存器}}(2)写出配置ADC12模块转换时钟源ADC12CLK的控制寄存器和控制位;控制寄存器:ADC12CTL1控制位:ADC12DIVx:第5~7位,时钟分频控制位ADC12SSELx:第3~4位,参考时钟源选择控制位(3)写出上述实验要求下ADC12模块的默认时钟源及其频率;默认时钟源是MODCLK,由内部模块振荡器MODOSC产生,频率约为4.8MHZ.(4)写出配置ADC12模块参考电压的控制寄存器和控制位;控制寄存器:ADC12CTL0控制位:ADC12REF2_5V:第6位,内部参考电压的电压值选择控制位ADC12REFON:第5位, ADC12参考电压开关控制位控制寄存器:ADC12MCTL0控制位:ADC12SREFx:第4~6位,参考电压选择控制位(5)分析上述实验要求下ADC12模块配置的参考电压与转换量程的关系ADC模块是12位,表示的数值的取值范围是0~4095,参考电压(基准电压)为1.5V,则分辨率为 1.5V/212=0.366mV.(6)分析ADC12模块配置的时钟源与采样触发信号和转换信号是否有关?从寄存器的控制位可以看出,采样周期和ADC12CLK的个数有关,时钟源和采样触发信号无关。

msp430f5529定时器

msp430f5529定时器MSP430F5529是最新一代的具有集成USB的超低功耗单片机,可以应用于能量收集、无线传感以及自动抄表等场合,是最低工作功耗的单片机之一。

MSP430F5529开发板(MSP-EXP430F5529)是MSP430F5529单片机的开发平台,由电源选择开关、RF射频接口、microSD card插槽、MSP430F5529芯片及引出引脚、USB接口、JTAG仿真接口、齿轮电位计、电容触摸按键、LED、按钮、EZ-FET内置仿真器、102x64点阵LCD和三坐标轴加速度计组成。

该开发板将I/O引脚接出来,方便用户进行实验操作,既可用于科研开发,又适合实验教学、课程设计、毕业设计等,为广大高校师生提供了良好的实验开发环境,同时也是广大电子爱好者学习、开发MSP430系列单片机的良好平台。

MSP430F5529共有两类共4个定时器,分别是TImer_A定时器3个和TImer_B定时器1个,按照每个寄存器配备的捕获/比较器的个数分别命名为TImer0_A(内有5个捕获比较器)、TImer1_A(3个)、Timer2_A(3个)、Timer0_B(7个)。

Timer_A定时器3个定时器A是一个复合了捕获/比较寄存器的十六位的定时(加减)计数器。

定时器A支持多重捕获/比较,PWM输出和内部定时,具有扩展中断功能,中断可以由定时器溢出产生或由捕获/比较寄存器产生。

特征简介:1、四种运行模式的异步16位定时/计数器2、自身时钟源可选择配置3、最多达5个可配置的捕获/比较寄存器(CCR)4、可配置的PWM输出5、异步输入和输出锁存6、对所有Timer_A中断快速响应的中断向量寄存器TASSELx :时钟源选择。

尽量不要选TASSEL0-TACLK外部时钟源,因为如果TACLK 和CPU时钟不同步,很容易出问题。

(TA0CLK接P1.0引脚)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档