OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32/FPGA开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...
查看: 1048|回复: 5

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

[复制链接]

  离线 

8

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
551
金钱
551
注册时间
2017-5-11
在线时间
73 小时
发表于 2017-12-28 16:04:58 | 显示全部楼层 |阅读模式
1金钱
刚拿到新项目,叫用AVR单片机,用的ICC for AVR ,但是现在反复的被看门狗复位啊,因为用了熔丝,所以看门狗没办法关闭,现在是我不动他不复位,只要一操作按键就复位一次
[C] 纯文本查看 复制代码
//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;
}

求帮忙啊,现在一直找不到哪里触发的看门狗复位

最佳答案

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

找到问题了,在后面没有产生复位了,是因为硬件控制脚没有稳定电平,才导致类似复位的样子
回复

使用道具 举报

  离线 

8

主题

60

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

  离线 

8

主题

60

帖子

0

精华

高级会员

Rank: 4

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

使用道具 举报

  离线 

1

主题

404

帖子

0

精华

金牌会员

Rank: 6Rank: 6

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

使用道具 举报

  离线 

8

主题

60

帖子

0

精华

高级会员

Rank: 4

积分
551
金钱
551
注册时间
2017-5-11
在线时间
73 小时
 楼主| 发表于 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 | 显示全部楼层
回复

使用道具 举报

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

本版积分规则




关闭

正点原子双11大促销上一条 /1 下一条

正点原子公众号

QQ|联系我们|手机版|官方淘宝店|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-11-16 11:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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