大连创客空间

 找回密码
 立即注册吧!

QQ登录

只需一步,快速开始

一键登录:

搜索
查看: 9366|回复: 64
收起左侧

【大赛原创经验贴】 学习MSP430 这十几天中所遇到的问题

  [复制链接]
发表于 2012-7-14 16:41:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多交流,硬件的世界向你敞开大门!

您需要 登录 才可以下载或查看,没有帐号?立即注册吧!

x
我七月才开始接触MSP430 准确的说是单片机C语言这一方面 以前只是初略的学过一点汇编语言  说以在刚开始是我遇到了不少的问题  并且现在也都还有少的问题。今天看见了斑竹的帖子 于是就想写出来,给大家看看,一是想给和我一样遇到了这方面问题的让人一点点帮助  ,另一方面是希望懂的大神有更好的方法就教教我。
我是初学也许这帖子出来有很多可笑的地方 还望懂的朋友给我指出我的错误 供我学习。     
1、 遇到的第一个问题是按键的,由于当时还没学中断,我就用的IF判断,可是在信号输入方面总是出问题,后来在网上看见了一篇关于电阻上拉的文章
文章如下:

上下拉是否开启是否REN寄存器决定的,而上拉还是下拉是由OUT寄存器决定的,在作为输出时,随着OUT的高低,自动选择上下拉,作为输入的时候,我们也可以人为的付OUT寄存器来得到上下拉。
下面的是我的一个按键的程序(不是中断):

#include <msp430g2452.h>

int main( void )
{

  WDTCTL = WDTPW + WDTHOLD;
P1DIR&=BIT3;

  while(1)
  {     P1REN |= 0x08;
    if((P1IN&BIT3)==0x00)
    P1OUT|=BIT6;     
   else
      P1OUT=0x00;   
  }
}

2、遇到的第二个问题就是定时的问题,做出来的时间和我我计算出来的总是 有偏差而且不是一点半点,是很大的偏差,后来我才知道是时钟的选着出了问题。
先上第一个程序:定时器A

#include <msp430g2452.h>
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;
   BCSCTL3 |= LFXT1S_2;         
  TACCTL0 = CCIE;
  TACCR0 =500;                                   
  TACTL = TASSEL_1 +ID_3 + MC_1;
  P1DIR |=BIT0;
    _EINT();
  LPM3;
while(1);
}
#pragma vector = TIMER0_A0_VECTOR

__interrupt void Timer_A (void)
{  
  P1OUT ^=BIT0;
}

实现LED闪烁时间0.5S。

第二个我做的是看门狗定时:
遇到的问题同样是时间的,先看程序。
#include <msp430g2553.h>
void main (void)
{ BCSCTL3 |= LFXT1S_0 + XCAP_3;   //这个的频率是32768HZ
  WDTCTL=WDT_ADLY_250  ;          //时间0.25,  看门狗可以设八个时间最大可以设1S最小可以设0.064MS。在库文件里可以查到没中时间的写法。
  IE1|=WDTIE;

  P1DIR|=BIT0;
  _EINT();
  while(1);
}
#pragma vector=WDT_VECTOR
__interrupt void WDT (void)
{
  P1OUT^=BIT0;
}

起初这一句BCSCTL3 |= LFXT1S_0 + XCAP_3;我写的和定时器A一样是BCSCTL3 |= LFXT1S_2; 但时间老是慢的很,假如我设 WDTCTL=WDT_ADLY_250但实际有1秒的样子。
到现在我都还把BCSCTL3这个寄存器搞清楚希望知道的可我解答最好能这样发一份BCSCTL3的给我(脑子笨需要详细的资料)。

BCSCTL1 基本时钟系统控制寄存器1
        7  6  5  4  3  2  1  0
XT2OFF  TXS  DIVA.1  DIVA.0  XT5V  Rsel.2  Resl.1  Resl.0

XT2OFF 控制XT2 振荡器的开启与关闭。
    TX2OFF=0,XT2振荡器开启。
    TX2OFF=1,TX2振荡器关闭(默认为TX2 关闭)

XTS    控制LFXT1 工作模式,选择需结合实际晶体振荡器连接情况。
    XTS=0,LFXT1  工作在低频模式(默认)。
    XTS=1,LFXT1  工作在高频模式(必须连接有高频相应的高频时钟源)。

DIVA.0 DIVA.1 控制 ACLK分频。
    0    不分频(默认)
    1     2分频
    2  4分频
    3  8分频

XT5V 此位设置为0。

Resl1.0,Resl1.1,Resl1.2 三位控制某个内部电阻以决定标称频率。
    Resl=0,选择最低的标称频率。
    ……..
    Resl=7,选择最高的标称频率。



第三个问题:
我现在在作步电机的现在  现在只是把正反转和停止作出来了还差调速的问题。  有人到是和我说过用什么位状态,但我不懂现在正在学习中,希望懂的教教我。


回复

使用道具 举报

 楼主| 发表于 2012-7-14 16:42:39 | 显示全部楼层
这一次描述这么多   可能有很多的不清楚的这方  希望给我指出  我能回答的一定帮你解决  不能回答的我们一起解决。

点评

有用: 2.0
有用: 2
  发表于 2013-8-12 18:30
:'(好难懂 啊  详情 回复 发表于 2012-8-5 23:22
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-14 16:46:18 | 显示全部楼层
我还有一个问题就是PWM中像:输出模式6 PWM翻转/置位模式:(输出电平在TAR的值等于CCRx时翻转,当TAR值等于CCR0时置位。 )中的翻转是什么意思该如何理解。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-14 16:48:32 | 显示全部楼层
还有我看见一些有关PWM的程序,有些写了占空比,有些有没写。这是这么回事  占空比在PWM输出中起到什么作用

点评

PWM就是占空比可调的方波···  发表于 2012-7-29 21:13
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-14 19:21:56 | 显示全部楼层
..........
回复 支持 反对

使用道具 举报

发表于 2012-7-14 21:26:43 | 显示全部楼层
430的按键还需要上拉么?

点评

要的 P1DIR&=~BIT3; P1REN|=BIT3; P1OUT|=BIT3;……  详情 回复 发表于 2012-8-3 21:35
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-14 23:10:40 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-14 23:11:24 | 显示全部楼层
不好意思   这几天太累了     忘了说明   我接的硬件是51的板子
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-14 23:11:56 | 显示全部楼层
需不需要上拉  要开你的硬件!!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-14 23:27:32 | 显示全部楼层
是“看”不是“开”
回复 支持 反对

使用道具 举报

发表于 2012-7-15 22:05:09 | 显示全部楼层
。。。。。我在这几十天了也遇见好多问题了啊,哎,很多都还没有解决的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-15 22:27:04 | 显示全部楼层
FJYCHENJUN 发表于 2012-7-15 22:05
。。。。。我在这几十天了也遇见好多问题了啊,哎,很多都还没有解决的

别灰心   时间会解决一切
回复 支持 反对

使用道具 举报

发表于 2012-7-15 23:19:28 | 显示全部楼层
讀哝ぴ芯跳 发表于 2012-7-15 22:27
别灰心   时间会解决一切

恩,好好努力吧,争取每天进步一点!
回复 支持 反对

使用道具 举报

发表于 2012-7-16 08:12:11 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-16 08:38:41 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2012-7-16 08:55:03 | 显示全部楼层
讀哝ぴ芯跳 发表于 2012-7-14 23:10
不需要了    忘了解释我是外接的51的板子

430的单片机都不需要吗?可是我在画原理图的时候都习惯加上上电阻,我们要画的是G2553芯片的外围
对了,51 的不是只有P0口要加上拉电阻啊。
回复 支持 反对

使用道具 举报

发表于 2012-7-16 09:08:29 | 显示全部楼层
楼主 你第一个程序是不是有点小瑕疵啊?还有就是我最近看的是F149、F249、还有G2553的程序  和你的程序写法貌似有点不一样啊
为什么还要定义ref寄存器和out寄存器啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-16 09:10:29 | 显示全部楼层
阿毛2012 发表于 2012-7-16 08:55
430的单片机都不需要吗?可是我在画原理图的时候都习惯加上上电阻,我们要画的是G2553芯片的外围
对了,5 ...

我用的这个51的板子  按键是接的地    说以要加上拉   当你按下按键的是后  从高电平转换打低电频  这才产生了输入信号    如果你的按键是接的正   我想就不需要了   你可以验证哈               
(这只是我的理解  你参考参考吧)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-7-16 09:16:20 | 显示全部楼层
阿毛2012 发表于 2012-7-16 09:08
楼主 你第一个程序是不是有点小瑕疵啊?还有就是我最近看的是F149、F249、还有G2553的程序  和你的程序写法 ...

因为我的硬件是直接用的学校以前的51板子   这个板子和MSP430有点不一样,    我想你说的OUT应该是指上拉的OUT吧,   那个是我再网上学到的   刚开始我也没加,   但是输入一直是低电频(无论你按还是不按)。这个OUT是定义那个口上拉   REN是使能寄存器 。这就是我自己的理解  仅供参考    ,  你说的瑕疵   能具体点吗?
求指教
回复 支持 反对

使用道具 举报

发表于 2012-7-16 10:55:24 | 显示全部楼层
讀哝ぴ芯跳 发表于 2012-7-16 09:16
因为我的硬件是直接用的学校以前的51板子   这个板子和MSP430有点不一样,    我想你说的OUT应该是指上拉 ...

“P1DIR&=BIT3”  你的这个要不要把与改成或啊?你直接是硬件调试 啊?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册吧!

本版积分规则

单片机开发者1群:235808606;会员QQ 6群:254085994; 1群:12835691(满); 2群:121061287(满); 3群:237320668(满);4群:249652919(满);5群:253578883(满);大赛1群:187926790(满),2群:231577758(满),3群:249652919(满)。 TI杯4群:58129202(满)。
载入中

QQ|手机版|小黑屋|Archiver|大连创客空间 ( 辽ICP备15004617号-2  

GMT+8, 2017-3-1 00:51 , Processed in 0.391142 second(s), 30 queries .

地址:辽宁省大连市高新园区火炬路7号17层 QQ:2401085253

Copyright © 2010-2015 创客空间(大连)科技有限公司 All Rights Reserved.

快速回复 返回顶部 返回列表