搜索
bottom↓
回复: 2

请教马老师一个MEGA169P的问题!

[复制链接]

出0入96汤圆

发表于 2011-8-17 09:12:10 | 显示全部楼层 |阅读模式
这个问题是最近出现的,但是程序是2年前的,一直没有动过。主要功能如下:
1,两节5号电池供电,带液晶显示,带led背光,按键采用端口中断处理,使用内部1M,外部32.768K晶振做异步时钟。
2,定时器2使用外部晶振每500ms唤醒一次,处理时间同时刷新显示,处理完成后进入省电模式。
3,每30秒左右读取一次AD,计算温度。

正常现象:
   安装电池后,显示内容,背光不亮,当有按键时,背光亮起,没有按键后延时一段时间熄灭。时间中的“冒号”500ms闪烁。
  
  故障现象,安装电池后背光一直亮,没有显示按键没有反应,仿真时,发现程序无法进入定时2的中断中,进入省电模式就停止了,定时器2没有工作,端口中断可以正常,但是因为LCD的时钟设为外部32.768K晶振,所以没有显示,故看不出按键的反应。
  更换多个32.768K晶振,现象依旧,后更换芯片后问题解决!
  问题是,出现问题的芯片用在不使用低频晶振的产品上功能都正常!
  请问,是否是这一批的芯片有问题,200个里边有42个出现这个问题,同一批芯片,同一批焊接,烧录的是同一程序。用的是双龙的usbisp脱机下载器下载的。
  编译使用的ICC AVR 631A

出0入96汤圆

 楼主| 发表于 2011-8-17 09:27:50 | 显示全部楼层
部分程序
#include <iom169v.h>
#include <MATH.H>
#include <macros.h>
#include <eeprom.h>
#define uchar unsigned char
#define uint  unsigned int
uchar half_hour;

//TIMER2 initialize - prescale:1024
// WGM: Normal
// desired value: 500mSec
// actual value: 500.000mSec (0.0%)
void timer2_init(void)
{
        TCCR2A = 0x00; //stop
        ASSR  = 0x08; //set async mode
        TCNT2 = 0xF0; //setup
        OCR2A  = 0x10;
        TCCR2A = 0x07; //start
}
void init_devices(void)
{
        CLI(); //disable all interrupts
        port_init();
        timer2_init();
        adc_init();
        lcd_init();
        TIMSK0 = 0x00; //timer interrupt sources
        TIMSK1 = 0x00; //timer interrupt sources
        TIMSK2 = 0x01; //timer interrupt sources
        PCMSK0 = 0x70; //pin change mask
        PCMSK1 = 0x00; //pin change mask
        EICRA  = 0x00;  //int0 setup
        EIMSK  = 0X40;        //只使用PCMSK0
        SMCR = 0x00;
        // SEI(); //re-enable interrupts
}
#pragma interrupt_handler timer2_ovf_isr:6
void timer2_ovf_isr(void)
{
        static uchar  jjj,SSS;
        uchar bbb,i,j,k;
        uint xxx;
        TCNT2 = 0xF0;//
        shanshuo=~shanshuo;
        huajianscan();//判断滑键
        show_page_all();//显示程序
        half_hour++;
        if (half_hour>1){
                half_hour=0;
                if (back_led_time>0)
                {
                        back_led_time--;
                }
                if (back_led_time==1) close_back_led();
                if (now_second>=59){
                        now_second=0;
                        if (now_minute>=59){
                                now_minute=0;
                                if (now_hour>=23){
                                        now_hour=0;
                                        if (now_week>=6)now_week=0;
                                        else now_week++;
                                }
                                else now_hour++;
                        }
                        else now_minute++;
                }
                else now_second++;
}
void main(void)
{
        init_devices();
        //上电初始化时间
        now_hour=8;
        now_week=0;
        now_minute=0;
        now_page=0;
        SEI();//开中断
        while(1)
        {
                ADCSRA&=~(1<<ADEN);//禁止ad
                SMCR = 0x06;//设置空闲模式
                asm("nop");
                SMCR |= 0x01;//启动空闲模式
                 asm("sleep");// 进入休眠
                asm("nop");//唤醒后确保4个时钟周期后工作
                asm("nop");
                asm("nop");
                asm("nop");
                asm("nop");
        }
}
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 22:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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