OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3071|回复: 5

求助AVR看门狗反复复位问题

[复制链接]

16

主题

92

帖子

0

精华

高级会员

Rank: 4

积分
767
金钱
767
注册时间
2017-5-11
在线时间
100 小时
发表于 2017-12-28 16:04:58 | 显示全部楼层 |阅读模式
1金钱
刚拿到新项目,叫用AVR单片机,用的ICC for AVR ,但是现在反复的被看门狗复位啊,因为用了熔丝,所以看门狗没办法关闭,现在是我不动他不复位,只要一操作按键就复位一次[mw_shl_code=c,true]//ICC-AVR application builder : 2017/12/26 15:39:41
// Target : M8
// Crystal: 4.0000Mhz

#include <iom8v.h>
#include <macros.h>

#include "usart.h"


u8 key_scan(void);

void watchdog_init(void)
{
WDR();
WDTCR = 0X1F;
WDTCR = 0X0F;
}

void port_init(void)
{
PORTB = 0x00;
DDRB  = 0x00;
PORTC = 0x1f;
DDRC  = 0x1f;
PORTD = 0x00;
DDRD  = 0x00;
}
void init_devices(void)
{
CLI();
port_init();
uart_init(51);//9600
watchdog_init();

MCUCR = 0x00;
GICR  = 0x00;
TIMSK = 0x00;
SEI();
}

void main(void)
{
//delay_ms(1000);
init_devices();
while(1)
{
  key_scan();
  WDR();
}
}

u8 key_scan(void)
{  
  char flag=0;
  if(PIND&(1<<PIND2))//KEY1
  {
    delay_ms(5);
        if(PIND&(1<<PIND2))
        {
          flag=1;
             uart_send(0x31);
             PORTC &= ~(1<<PORTC0);
             while(PIND&(1<<PIND2))WDR();
        }
  }
  if(PINC&(1<<PINC5))//KEY2
  {
    delay_ms(5);
        if(PINC&(1<<PINC5))
        {
          flag=2;
             uart_send(0x32);
             PORTC &= ~(1<<PORTC4);
             while(PINC&(1<<PINC5))WDR();
        }
  }
  if(PIND&(1<<PIND3))//KEY3
  {
    delay_ms(5);
        if(PIND&(1<<PIND3))
        {
         flag=3;
            uart_send(0x33);
            PORTC &= ~(1<<PORTC3);
            while(PIND&(1<<PIND3))WDR();
         }
  }
  if(PIND&(1<<PIND4))//KEY4
  {
    delay_ms(5);
        if(PIND&(1<<PIND4))
        {
          flag=4;
             uart_send(0x34);
             PORTC &= ~(1<<PORTC2);
             while(PIND&(1<<PIND4))WDR();
        }
  }
  if(PINB&(1<<PINB6))//KEY5
  {
    delay_ms(5);
        if(PINB&(1<<PINB6))
        {
          flag=5;
             uart_send(0x35);
             PORTC &= ~(1<<PORTC1);
             while(PINB&(1<<PINB6))WDR();
        }
  }
  return flag;
}
[/mw_shl_code]
求帮忙啊,现在一直找不到哪里触发的看门狗复位

最佳答案

查看完整内容[请看2#楼]

找到问题了,在后面没有产生复位了,是因为硬件控制脚没有稳定电平,才导致类似复位的样子
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

16

主题

92

帖子

0

精华

高级会员

Rank: 4

积分
767
金钱
767
注册时间
2017-5-11
在线时间
100 小时
 楼主| 发表于 2017-12-28 16:04:59 | 显示全部楼层
找到问题了,在后面没有产生复位了,是因为硬件控制脚没有稳定电平,才导致类似复位的样子
回复

使用道具 举报

16

主题

92

帖子

0

精华

高级会员

Rank: 4

积分
767
金钱
767
注册时间
2017-5-11
在线时间
100 小时
 楼主| 发表于 2017-12-28 16:05:38 | 显示全部楼层
@正点原子 召唤原子哥
回复

使用道具 举报

1

主题

430

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1461
金钱
1461
注册时间
2011-12-1
在线时间
110 小时
发表于 2017-12-28 16:47:12 | 显示全部楼层
好好理解你的熔丝位,你的寄存器,然后在程序里面找问题!
回复

使用道具 举报

16

主题

92

帖子

0

精华

高级会员

Rank: 4

积分
767
金钱
767
注册时间
2017-5-11
在线时间
100 小时
 楼主| 发表于 2017-12-28 18:17:03 | 显示全部楼层
xlong_06 发表于 2017-12-28 16:47
好好理解你的熔丝位,你的寄存器,然后在程序里面找问题!

已经排除看门狗了,,把看门狗关掉都会产生复位,应该不是软件问题,谢谢你的指点
回复

使用道具 举报

3

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
87
金钱
87
注册时间
2017-6-29
在线时间
9 小时
发表于 2018-3-1 13:58:10 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 11:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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