查看: 5264|回复: 4

[其他] 求助:调试68HC908时离开调试环境后程序运行不正常?

[复制链接]

该用户从未签到

1

主题

1

帖子

0

新手上路

Rank: 1

积分
5
最后登录
1970-1-1
发表于 2008-4-20 16:24:45 | 显示全部楼层 |阅读模式
各位前辈,大家好!本人初涉68HC908单片机,有个问题想向大家请教一下:  
      最近在使用HC08GZ60调试开关量输入MC33993程序,程序的功能是通过MC33993开关量检测芯片检测按钮的输入,控制MC33921开关量输出芯片,其输出控制一个继电器,使用一个按钮打开继电器,另一个按钮闭合继电器,程序采用查询的方式,在main中的主循环while里查询33993各个开关的状态,然后做出判断。单片机的晶振使用DS1306提供的32kHz晶振。
     调试时有以下一些问题:
1、使用P&E USB Multilink烧写程序,并通过P&E USB Multilink供电,晶振也采用它提供的9.8MHz,在调试状态下运行正常,可以实现一个按钮控制继电器闭合,一个按钮控制继电器断开。但退出调试状态后,单片机上电后就不运行了。之前在调试LCD和CAN总线通信的程序时,也同样出现这个问题。
2、后来考虑系统使用的是DS1306输出的32kHz晶振,便通过PLL将其倍频,在上电运行时,按下按钮使继电器闭合,但是继电器在闭合后约5秒左右又自动断开,试了多次都是如此。后来,改用MC33993的中断方式,仍然是这个问题,即按钮按下之后,继电器动作之后几秒后再次动作。不知道这是什么原因?
    原来以为可能时程序的问题,但在调试状态下运行完全正常,不知道各位朋友在调试908是有没有遇到类似的问题,不知能不能帮助分析一下,非常感谢!
   
我知道答案 目前已有3人回答
回复

使用道具 举报

该用户从未签到

0

主题

4

帖子

0

新手上路

Rank: 1

积分
8
最后登录
1970-1-1
发表于 2008-4-22 11:25:54 | 显示全部楼层

RE:求助:调试68HC908时离开调试环境后程序运行不正常?

我以前也有过类似的问题。谁能解答一下?

该用户从未签到

42

主题

111

帖子

0

新手上路

Rank: 1

积分
6750
最后登录
1970-1-1
发表于 2008-4-25 15:13:17 | 显示全部楼层

RE:求助:调试68HC908时离开调试环境后程序运行不正常?

68HC908没有BDM方式,建议改用S08

该用户从未签到

0

主题

2

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
发表于 2008-9-9 23:04:53 | 显示全部楼层

回复:求助:调试68HC908时离开调试环境后程序运行不正常?

原帖由benjaminhj于2008-04-20 16:24发表:
各位前辈,大家好!本人初涉68HC908单片机,有个问题想向大家请教一下:  
      最近在使用HC08GZ60调试开关量输入MC33993程序,程序的功能是通过MC33993开关量检测芯片检测按钮的输入,控制MC33921开关量输出芯片,其输出控制一个继电器,使用一个按钮打开继电器,另一个按钮闭合继电器,程序采用查询的方式,在main中的主循环while里查询33993各个开关的状态,然后做出判断。单片机的晶振使用DS1306提供的32kHz晶振。
     调试时有以下一些问题:
1、使用P&E USB Multilink烧写程序,并通过P&E USB Multilink供电,晶振也采用它提供的9.8MHz,在调试状态下运行正常,可以实现一个按钮控制继电器闭合,一个按钮控制继电器断开。但退出调试状态后,单片机上电后就不运行了。之前在调试LCD和CAN总线通信的程序时,也同样出现这个问题。
2、后来考虑系统使用的是DS1306输出的32kHz晶振,便通过PLL将其倍频,在上电运行时,按下按钮使继电器闭合,但是继电器在闭合后约5秒左右又自动断开,试了多次都是如此。后来,改用MC33993的中断方式,仍然是这个问题,即按钮按下之后,继电器动作之后几秒后再次动作。不知道这是什么原因?
    原来以为可能时程序的问题,但在调试状态下运行完全正常,不知道各位朋友在调试908是有没有遇到类似的问题,不知能不能帮助分析一下,非常感谢!
   

该用户从未签到

0

主题

2

帖子

0

新手上路

Rank: 1

积分
0
最后登录
1970-1-1
发表于 2008-9-9 23:09:10 | 显示全部楼层

回复:求助:调试68HC908时离开调试环境后程序运行不正常?

您好!
我现在正在使用DS1306,但是我我往寄存器里面写数据,然后读出来之后 ff . 能否提供一下参考例程呢?
还有那个cpol怎么设置呢?没有找着对应的控制寄存器啊 。我是参照1305的一个程序来写的。下面是源代码
/***************************************************************************/
/* DEMO1305.C - This file is provided to show an example of routines       */
/* for interfacing the DS2250 to the DS1305.                              */
/* These routines are provided for example only and are not supported by   */
/* by Dallas Semiconductor MAXIM.                                          */
/***************************************************************************/
#include        /* Prototypes for I/O functions            */
#include       /* Register declarations for DS2250        */
/************************** Function Prototypes ****************************/
void   reset_3w(void);
void   WBYTE_3W(uchar W_Byte);
uchar  RBYTE_3W(void);
void   Initialize();
void   BurstReadTime();
void   BurstRamRead(void);
void   BurstRamWrite(void);
void   writebyte1305();
void   readbyte1305();
void   alarm_set();
void   alarm_rd();
/************************** Bit Declarations *******************************/
sbit   CE        = P0^0;   /* to CE pin on DS1305 */
sbit   SCLK      = P0^1;  /* to SCLK pin on DS1305 */
sbit   SDI_IO    = P0^2;  /* to SDI & SDO pins on DS1305 */
sbit   INT0b     = P3^2;  /* to INT0b pin on DS1305 */
/************************** Global Variables *******************************/
uchar CPOL = 0;
void reset_3w()
{
      SCLK  = 0;
    CE    = 0;
    CE    = 1;
}
void WBYTE_3W(uchar W_Byte) /* --- This routine writes one byte from the RTC --- */
{
uchar i;
      for(i = 0; i < 8; ++i)
    {
       SDI_IO = 0;
       if(W_Byte & 0x01)
       {
           SDI_IO = 1;
        }
       SCLK = 0;
       SCLK = 1;
       W_Byte >>= 1;
    }
}
uchar RBYTE_3W()  /* ---- This routine reads one byte from the RTC ----- */
{
uchar i, R_Byte, TmpByte;
      R_Byte = 0x00;
    SDI_IO = 1;   /* set to read */
    for(i = 0; i < 8; ++i)
    {
       SCLK = 1;
       SCLK = 0;
       TmpByte = (uchar)SDI_IO;
       TmpByte = 1;
       R_Byte |= TmpByte;
    }
    return R_Byte;
}
void readbyte1305()  /* ------------------------------------------------ */
{
uchar Add;
uchar Data;
    /* Get Address & Data */
    printf("\nEnter the Read Address (hex): ");
    scanf("%bx", &Add);
      reset_3w();
    WBYTE_3W(Add);
    printf("%2.bx", RBYTE_3W() );
    reset_3w();
}
void writebyte1305() /* ------------------------------------------------ */
{
uchar Add, Data;
    /* Get Address & Data */
    printf("\nEnter the Read Address (hex): ");
    scanf("%bx", &Add);
    printf("Enter data (hex): ");
    scanf("%bx", &Data);
      /* User enters read address. Must convert to write address. */
    Add |= 0x80;
      reset_3w();
    WBYTE_3W(Add);
    WBYTE_3W(Data);
    reset_3w();
}
void Initialize() /* ------------------------------------ */
{
/* Note: NO error checking is done on the user entries! */
uchar  yr, mn, dt, dy, hr, min, sec, day;
      reset_3w();   /* Read contents of Write Protect Register */
    WBYTE_3W(0x8F);
    WBYTE_3W(0);  /* if write protect bit is set, this will only clear WP */
    reset_3w();
    WBYTE_3W(0x8F);
    WBYTE_3W(0);  /* if WP was set, now /eosc will be set to a zero */
    reset_3w();   /* if we were setting WP to  a 1, we could set all bits at once */
      printf("\nEnter the year (0-99): ");
    scanf("%bx", &yr);
    printf("Enter the month (1-12): ");
    scanf("%bx", &mn);
    printf("Enter the date (1-31): ");
    scanf("%bx", &dt);
    printf("Enter the day (1-7): ");
    scanf("%bx", &dy);
    printf("Enter the hour (1-24): ");
    scanf("%bx", &hr);
    hr = hr & 0x3f;   /* force clock to 24 hour mode */
    printf("Enter the minute (0-59): ");
    scanf("%bx", &min);
    printf("Enter the second (0-59): ");
    scanf("%bx", &sec);
      reset_3w();
    WBYTE_3W(0x80);   /* write address for the seconds register */
    WBYTE_3W(sec);
    WBYTE_3W(min);
    WBYTE_3W(hr);
    WBYTE_3W(dy);
    WBYTE_3W(dt);
    WBYTE_3W(mn);
    WBYTE_3W(yr);
    reset_3w();
}
void BurstReadTime() /* ------------------------------------ */
{
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

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

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

GMT+8, 2025-7-20 19:30 , Processed in 0.097725 second(s), 25 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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