打印

MSP430指令周期问题

[复制链接]
1650|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
witant|  楼主 | 2012-9-3 16:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原本想优化一下模拟IIC通讯的时序,使原有延时尽量缩短,但后来发现实际测量的指令周期和手册上写的不符,不知为什么~望高手指点。

我用的芯片型号是MSP430F5438 测试代码如下:
#include <msp430.h>
main()
{
  WDTCTL = WDTPW + WDTHOLD;   
  UCSCTL3 = 0;                              
  UCSCTL0 |= 16 << 8;                     
  UCSCTL1 = DCORSEL_4;                  
  UCSCTL2 = 149;                             
  UCSCTL6 &= ~(XT1DRIVE_3);         
  UCSCTL4 = SELA_0 + SELS_3 + SELM_3;              
                                            
P6DIR = 0xFF;
P6OUT = 0xFF;
P6OUT = 0x00;
P6OUT = 0xFF;
P6OUT = 0x00;

while(1);
}
外部接32768Hz晶振,经过150倍频后,MCLK约为4.9MHz,此时一个指令周期约203ns。
P6OUT = 0xFF;和 P6OUT = 0x00;两句的汇编代码是
mov.b #0xFF, &PCOUT_H 和 clr.b &PCOUT_H
根据手册执行这两句的时间我认为应该是4+4 = 8个时钟周期(约1600ns)。
而示波器上观察输出方波的周期为700ns而我觉得该时间和执行P6OUT = 0xFF; P6OUT = 0x00;两句的时间应该是相同的。

求指点:我的测试哪里出问题了呢~?

相关帖子

沙发
hawksabre| | 2012-9-11 18:52 | 只看该作者
你的while(1)循环在这里是延时作用    我感觉应该是延时时间不足    或者哪边出现误差

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

25

帖子

2

粉丝