首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HSC08上的定时器模块

HSC08上的定时器模块
EN

Stack Overflow用户
提问于 2012-09-08 02:50:33
回答 2查看 316关注 0票数 1

我正在使用MC9S08LH64微控制器的定时器模块来生成内部定时器以进行同步。总线时钟为4.3 MHz,模数设置为4309 (TPM1MODH和TPM1MODL),我期望每1.25毫秒产生一次脉冲,但结果大约是每3.75毫秒。这里有什么我遗漏的设置吗?非常感谢

代码语言:javascript
复制
 /*
 * TPM1SC: pg 358
    bit 
    7   TOF need to check for this flag
    6       not used since no interrupt being used
    5   1  not used
    4   0  selecting bus clock
    3   1
    2   0  not dividing clock down
    1   0
    0   0
 */ 

TPM1SC = 0x08;

*更新:我刚刚意识到更改TPM1MOD对结果脉冲宽度没有影响。TPM1SC是我用来设置模块的唯一寄存器。我还需要为此设置其他注册表吗?

下面是设置计时器的源代码:

代码语言:javascript
复制
//to set up the modulo register:
void set_base_pulse(float time_ms){
int modulo_value;
modulo_value = (int) time_ms*1000/233;
TPM1MODH = modulo_value >>8;
TPM1MODL = modulo_value;
}

为了产生脉冲,我检查了TOF标志,每40次标志关闭,我切换输出:

代码语言:javascript
复制
for(counter = 0; counter<40; counter++
{

   while(!TPM1SC_TOF){}
   if(counter ==40) output~=output;
}
EN

回答 2

Stack Overflow用户

发布于 2012-09-12 20:22:10

关于代码的一些注释:

空set_base_pulse(float time_ms){

在8位微控制器上使用浮点数通常是一个非常糟糕的想法。生成的代码将非常低效。在这种情况下,我非常怀疑你是否需要它们。

(int) time_ms*1000/233;

神奇的数字233是什么?首先,将它定义为有意义的东西,#define BUSCLOCK_ns 233或类似的东西。此外,您的逻辑是有缺陷的: 1.25 * 1000 / 233 = 5.36。将这个类型转换为int,你会得到5,这是非常不同的。

计数器(

= 0;counter<40;counter++

为什么你要在循环中浪费时间?你不能把计数放在ISR里吗?TOF标志可以给你一个中断。或者更好的做法是使用硬件中的内置输出比较/PWM功能。

计数器if(

==40) output~=output;

这不是有效的C语言,无法编译。你可能指的是output = ~output。请发布你编译的真实代码,而不是在飞行中输入一些东西。

票数 1
EN

Stack Overflow用户

发布于 2012-09-08 04:28:19

我不能满足你对1.25ms的期望,因为1/4.3E6 can=233 as

如果您将TPM1MOD设置为4309,您应该会得到一个233ns*4309=1,002ms句号。

但是,如果您将TPM1MOD设置为0x4309 (十六进制0x4309=dez 17161),那么您应该会得到一个233ns*17161=3,99ms句号。

编辑:编辑完成后,显示代码

这是..。不同寻常

IMHO,纯粹的计时器设置会起作用,也许它有点不准确。

但是创建输出信号的代码有点奇怪。

试着用一些简单的东西。

代码语言:javascript
复制
while (1)
{
   output = TPM1SC_TOF;
}

或者创建一个正方形信号

代码语言:javascript
复制
while (1)
{
   if ( TPM1SC_TOF )
     output = !output;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12323787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档