查看: 7107|回复: 13

8位单片机MC9S08DZ60 TPM2模块请教!!!急

[复制链接]

该用户从未签到

3

主题

5

帖子

0

新手上路

Rank: 1

积分
20
最后登录
1970-1-1
发表于 2010-8-11 15:13:07 | 显示全部楼层 |阅读模式
As a customer of freescale Co. for long time ,I have tried to develop a item which was related to the model
of TPM2 at the DEMO9S08DZ60. I want to realize a PWM with edentulous rectangle wave.namely ,58 rectangle
wave and two teeth missing .make up one period.I have paid so much time for debugging .There got  nothing
but to get puzzled,the ondoscope showed a PWM with 3 teeth missing . Obviously ,I wrote a C program to realize
a PWM with two teeth missing,but got 3 teeth missing.Then,I wrote another program in order to get a PWM with
one tooth missing,but got 2 teeth missing. I was puzzled for a long time.
 
I used the single chip of  MC9S08DZ60 .There is the program below:
//****************************************************
#include
#include "derivative.h"
volatile unsigned char CrankNum;
//volatile unsigned char CamNum;
volatile unsigned int   ModValCalc;
volatile unsigned int   ChanlValCalc;
//****************************************************
void Init_tpm2_ch0_edge_pwm(void);
//****************************************************
void main(void)
{
   CrankNum     =        0;
  // CamNum       =        0;
   ModValCalc    =        0x08c9;
   ChanlValCalc  =        0x0465;
   void Init_tpm2_ch0_edge_pwm();
   TPM2CNTH    =        0;
   EnableInterrupts;
 
   for(;;)
        {  
            _RESET_WATCHDOG();   
        }
}
//****************************************************
void Init_tpm2_ch0_edge_pwm(void)
{
   TPM2MODH        =        (unsigned char)(ModValCalc>>8);
   TPM2MODL        =         ModValCalc  &  0xFF;
 
   TPM2C0VH         =        (unsigned char)(ChanlValCalc>>8);
   TPM2C0VL         =         ChanlValCalc  &  0xFF;

   TPM2C0SC         =        0x28;
   TPM2SC            =         0x4F;           // div by 128 , bus clk  ISR enable.
}
//****************************************************
interrupt VectorNumber_Vtpm2ovf void TPM2_OVF_ISR(void)
{
  // volatile char cam_pos;
   if((TPM2SC & 0x80) == 0x80)
      {
          TPM2SC_TOF   =   0;
          ++CrankNum;
          switch(CrankNum)
             {
                 case 58 :         TPM2C0VH   =   0x00;                    //the 59th tooth position is  a  missing tootn
                                       TPM2C0VL   =   0x00;
                                       break;
                 case 118 :       TPM2C0VH   =   0x00;                    //the 118th tooth position is  a  missing tootn                                        TPM2C0VL   =   0x00;
                                       break;
                 case 120 :       CrankNum    =   0x00;                                        TPM2CNTH   =   0x00;
                                       break;
                 case 59 :         TPM2C0VH   =   (unsigned char)(ChanlValCalc>>8);                                   
                                       TPM2C0VL   =   ChanlValCalc  &  0xFF;
                                       break;
                 case 119 :       TPM2C0VH   =   (unsigned char)(ChanlValCalc>>8);                                        TPM2C0VL   =   ChanlValCalc  &  0xFF;
                                       break;
                 default:           break;
             }           



       }
}
//****************************************************
 During the ISR function of "TPM2_OVF_ISR(void)" , I made a  arithmetic for the program to get the PWM with one teeth missing ,but got two teeth missing.
I need help ,thanks
 
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-8-11 15:58:16 | 显示全部楼层

    回复:8位单片机MC9S08DZ60 TPM2模块请教!!!急

    上传一个附件上来,关于TIM产生PWM的。

    TPM边沿对齐PWM实验.rar

    361.96 KB, 下载次数: 116

    该会员没有填写今日想说内容.

    该用户从未签到

    0

    主题

    11

    帖子

    0

    新手上路

    Rank: 1

    积分
    11
    最后登录
    1970-1-1
    发表于 2010-8-14 15:48:55 | 显示全部楼层

    RE:8位单片机MC9S08DZ60 TPM2模块请教!!!急

    正在学习,多上传些示例程序
    谢了,已下载。

    该用户从未签到

    3

    主题

    33

    帖子

    0

    新手上路

    Rank: 1

    积分
    58
    最后登录
    1970-1-1
    发表于 2010-8-17 14:15:13 | 显示全部楼层

    RE:8位单片机MC9S08DZ60 TPM2模块请教!!!急

    除此之外,你也没有打开看门狗,也没有设置总线频率等等~~

    该用户从未签到

    0

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    44
    最后登录
    1970-1-1
    发表于 2010-8-18 10:34:39 | 显示全部楼层

    RE:8位单片机MC9S08DZ60 TPM2模块请教!!!急

    公司项目原因,停了下来,剩余大部分材料,有要的朋友,请联系,有;GPS(HOLUXM89),GPRS(SIM300D),Freescale的DZ60/DZ32(64脚的),等处理,联系电话:13521625939

    该用户从未签到

    3

    主题

    5

    帖子

    0

    新手上路

    Rank: 1

    积分
    20
    最后登录
    1970-1-1
     楼主| 发表于 2010-8-24 15:00:39 | 显示全部楼层

    回复:8位单片机MC9S08DZ60 TPM2模块请教!!!急

    回复第 4 楼 zooqic于2010-08-17 06:15:13发表:
    除此之外,你也没有打开看门狗,也没有设置总线频率等等~~ 

    看门狗打开了,总线频率我 选择默认设置,即8M,
  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2010-8-25 20:26:21 | 显示全部楼层

    RE:8位单片机MC9S08DZ60 TPM2模块请教!!!急

    请把你的问题转成中文的,大家好帮你解决。首先采集时要配置是输入、触发方式等,具体可以在论坛中找关于这方面的例程。
    该会员没有填写今日想说内容.

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    2
    最后登录
    1970-1-1
    发表于 2011-3-11 09:50:48 | 显示全部楼层

    RE:8位单片机MC9S08DZ60 TPM2模块请教!!!急

    111

    该用户从未签到

    67

    主题

    164

    帖子

    0

    高级会员

    Rank: 4

    积分
    537
    最后登录
    2020-4-2
    发表于 2011-3-11 09:55:17 | 显示全部楼层

    RE:8位单片机MC9S08DZ60 TPM2模块请教!!!急

    mark......

    该用户从未签到

    1

    主题

    4

    帖子

    0

    新手上路

    Rank: 1

    积分
    7
    最后登录
    1970-1-1
    发表于 2012-8-4 15:39:09 | 显示全部楼层

    RE:8位单片机MC9S08DZ60 TPM2模块请教!!!急

    假如我使用TPM2定时计数32.67ms,同时需要在TPM2ch0产生2.6KHz的方波,需要怎么设置才能在需要的时候TPM2ch0方波正常输出,在不需要的时候TPM2ch0没有方波输出而不影响计数呢?
    本来我是设置
    void INIT_TPM2ch0(void)
    {
            TPM2SC=0x48;//
            TPM2MOD = 6154;  //PWM波的周期为0.385ms
            TPM2C0SC = 0X68;   //工作模式为边缘对齐PWM输出,高有效,禁止中断;
              TPM2C0V = 3077;    //有效部分占50%,占空比为50%
    }
    想在不需要输出方波时设置TPM2C0V = 0来使TPM2ch0输出低电平的,但是却没有得到想要的低电平,求高手指导!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-9-21 06:57 , Processed in 0.116794 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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