共3条
1/1 1 跳转至页
ATmage161L 为什么ATmage161L单片机不能,,,
问
各位大侠:
你好!
今天我又碰到一个问题,应该mage161L的单片机和51单片机,上电时系统就从头开始执行,可是,我上电时,有时系统很正常工作,有时它就好像没执行程序停留在某一点不动似的,,最终反复的接通和断开电源,慢慢的才能让程序正常执行,
请各位帮我分析是什么原因,我原来用51单片机,从没遇到过这样的情况,,
请帮我分析,,
正此谢谢你们了,,
我的信箱是:wcx_188@163.com
我很想交一个AVR单片机高手或爱好者,能彼此交流!共同进步,,
请给我发信:或打电话:010-62970360
找:小吴
答 1: 回贴分析决定你有可能是在中断相量地址中有语句,即0x0000h~0x0010h中断发生后将跳到你的语句中如果语句正好是一条跳转语句则类似程序跑飞情况。建议打开看门狗看看。 答 2: AVR与51的复位不同,请注意看起来是复位不良造成. 答 3: 161的复位很容易被干扰,最好用复位芯片!我也碰到过啊 答 4: 复位没问题,我在复位端加了VCC电压。#include <iom161v.h>
#include <macros.h>
#include <eeprom.h>
/* This seems to produce the right amount of delay for the LED to be
* seen
*/
void Delay()
{
unsigned char a, b;
for (a = 1; a; a++)
for (b = 1; b; b++)
;
}
void LED_On(int i)
{
PORTD = ~BIT(i); /* low output to turn LED on */
Delay();
}
void main()
{
int i;
EEPROMwrite(0x5e,0x01);
EEPROMwrite(0x5d,0xff);
//DDRD = 0xFF; /* output */
EEPROMwrite(0x31,0xff);
//PORTD = 0xFF; /* all off */
EEPROMwrite(0x32,0xff);
//DDRB = 0xFF;
EEPROMwrite(0x37,0xff);
//PORTB = 0xFF;
EEPROMwrite(0x38,0xff);
//DDRC = 0xFF;
EEPROMwrite(0x34,0xff);
//PORTC = 0x00;
EEPROMwrite(0x35,0x00);
while (1)
{
/* forward march */
for (i = 0; i < 8; i++)
LED_On(i);
/* backward march */
for (i = 8; i > 0; i--)
LED_On(i);
/* skip */
for (i = 0; i < 8; i += 2)
LED_On(i);
for (i = 7; i > 0; i -= 2)
LED_On(i);
}
}
这就是原程序,,
原来我是用寄存器名来字的,,
最后我又改成了地址,,
我曾请教过双龙,
双龙的人说,程序有问题,可是程序就这么简单,,
可是一上电,单片机就是不工作,
有时通过反复的断开或接通电源,单片机才正常工作,闪烁!
有时动一动晶振管脚,单片机也能正常工作了,,
还请各位大侠给予指点!
或留下联系方式,,最好是电话。
共同探讨,
我的信箱:wcx_188@163.com
答 5: 复位端加了VCC电压,连电阻了吗 答 6: 那就是晶振的问题,不起振"有时动一动晶振管脚,单片机也能正常工作了" 答 7: 可能是复位的问题可能是复位的问题,在上电的时候电源波动的太厉害了,可能是当VCC刚达到复位电压,又下降了再升到5V,有时侯就会死机,你可以在烧写时候,把BODEN的门限电压设高一些看看行不行,或者你在复位脚加个手动复位按键(复位脚用10K上拉到VCC)
上电以后,在按复位键,再看看能跑的起来吗。 答 8: 外接晶振的熔丝位是否已烧写了?main()第一句用Delay(10ms)。 答 9: 熔丝设置AVR单片机比较灵活,要根据具体应用环境设置它的几个熔丝,比如使用5V电源时建议打开BOD,并将门限电压设为4.0V,复位时间设为64MS(SUT熔丝)以延长复位时间,选择CKOPT,MEGA系列非常稳定,我们公司用了一段时间,好几种型号,没有出现过一次任何意外,关键是摸清它的脾气
你好!
今天我又碰到一个问题,应该mage161L的单片机和51单片机,上电时系统就从头开始执行,可是,我上电时,有时系统很正常工作,有时它就好像没执行程序停留在某一点不动似的,,最终反复的接通和断开电源,慢慢的才能让程序正常执行,
请各位帮我分析是什么原因,我原来用51单片机,从没遇到过这样的情况,,
请帮我分析,,
正此谢谢你们了,,
我的信箱是:wcx_188@163.com
我很想交一个AVR单片机高手或爱好者,能彼此交流!共同进步,,
请给我发信:或打电话:010-62970360
找:小吴
答 1: 回贴分析决定你有可能是在中断相量地址中有语句,即0x0000h~0x0010h中断发生后将跳到你的语句中如果语句正好是一条跳转语句则类似程序跑飞情况。建议打开看门狗看看。 答 2: AVR与51的复位不同,请注意看起来是复位不良造成. 答 3: 161的复位很容易被干扰,最好用复位芯片!我也碰到过啊 答 4: 复位没问题,我在复位端加了VCC电压。#include <iom161v.h>
#include <macros.h>
#include <eeprom.h>
/* This seems to produce the right amount of delay for the LED to be
* seen
*/
void Delay()
{
unsigned char a, b;
for (a = 1; a; a++)
for (b = 1; b; b++)
;
}
void LED_On(int i)
{
PORTD = ~BIT(i); /* low output to turn LED on */
Delay();
}
void main()
{
int i;
EEPROMwrite(0x5e,0x01);
EEPROMwrite(0x5d,0xff);
//DDRD = 0xFF; /* output */
EEPROMwrite(0x31,0xff);
//PORTD = 0xFF; /* all off */
EEPROMwrite(0x32,0xff);
//DDRB = 0xFF;
EEPROMwrite(0x37,0xff);
//PORTB = 0xFF;
EEPROMwrite(0x38,0xff);
//DDRC = 0xFF;
EEPROMwrite(0x34,0xff);
//PORTC = 0x00;
EEPROMwrite(0x35,0x00);
while (1)
{
/* forward march */
for (i = 0; i < 8; i++)
LED_On(i);
/* backward march */
for (i = 8; i > 0; i--)
LED_On(i);
/* skip */
for (i = 0; i < 8; i += 2)
LED_On(i);
for (i = 7; i > 0; i -= 2)
LED_On(i);
}
}
这就是原程序,,
原来我是用寄存器名来字的,,
最后我又改成了地址,,
我曾请教过双龙,
双龙的人说,程序有问题,可是程序就这么简单,,
可是一上电,单片机就是不工作,
有时通过反复的断开或接通电源,单片机才正常工作,闪烁!
有时动一动晶振管脚,单片机也能正常工作了,,
还请各位大侠给予指点!
或留下联系方式,,最好是电话。
共同探讨,
我的信箱:wcx_188@163.com
答 5: 复位端加了VCC电压,连电阻了吗 答 6: 那就是晶振的问题,不起振"有时动一动晶振管脚,单片机也能正常工作了" 答 7: 可能是复位的问题可能是复位的问题,在上电的时候电源波动的太厉害了,可能是当VCC刚达到复位电压,又下降了再升到5V,有时侯就会死机,你可以在烧写时候,把BODEN的门限电压设高一些看看行不行,或者你在复位脚加个手动复位按键(复位脚用10K上拉到VCC)
上电以后,在按复位键,再看看能跑的起来吗。 答 8: 外接晶振的熔丝位是否已烧写了?main()第一句用Delay(10ms)。 答 9: 熔丝设置AVR单片机比较灵活,要根据具体应用环境设置它的几个熔丝,比如使用5V电源时建议打开BOD,并将门限电压设为4.0V,复位时间设为64MS(SUT熔丝)以延长复位时间,选择CKOPT,MEGA系列非常稳定,我们公司用了一段时间,好几种型号,没有出现过一次任何意外,关键是摸清它的脾气
共3条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |