这两天 用 JTAGICE mkII 的 JTAG功能 仿真 一个程序,发现 一个问题,不知 是芯片问题,还是 仿真器的问题。我 是用AVRSTDIO4的GCC 写的 程序,用 JTAGICE mkII 来 仿真,芯片 是 ATmega32。
程序 见 附录,出现的问题是:当 代码 如附录所写 时,程序 运行正常,当 把 函数func()中的代码 直接放到while(1)中,即如下:(原程序 是 用 func() 代替了 几行代码)
while(1)
{
atimer = 0; //清1ms定时标志
atmp = (aclock)/2;
if (anum!=atmp )
{
anum = atmp;
atimer = 1; //置1ms定时标志
}
if(atimer == 1)
{
PORTA=~PORTA;
}
}
此时,程序 不正常。单步调试 时,程序指针 不会 指向 atimer=0、atmp 这两行,也就是说 这两行 不被 CPU 执行。经过我 反复验证,确实如此。
附录:
关键字:JTAGICE mkII AVR单片机
引用地址:JTAGICE mkII 或是 AVR单片机 的问题
#include
#include
#include
unsigned int atmp;
unsigned int atimer;
unsigned int anum;
unsigned int aclock;
void func();
int main(void)
{
DDRA=0xFF; //将PA口接到LED上观察现象。
PORTA=0x00;
TCCR1A=0x00;
TCCR1B=(1<
TCNT1=58162;
TIMSK=(1<
asm("SEI");
while(1)
{
func();
if(atimer == 1)
{
PORTA=~PORTA;
}
}
}
void func()
{
atimer = 0; //清1ms定时标志
atmp = (aclock)/2;
if (anum!=atmp )
{
anum = atmp;
atimer = 1; //置1ms定时标志
}
}
ISR(TIMER1_OVF_vect,ISR_BLOCK)
{
TCNT1=58162; //1024分频下延时2S.
aclock++;
if(aclock==100)
aclock=0;
}
上一篇:反转法键盘扫描 ATmega128
下一篇:mega16实验板红外解码程序
推荐阅读最新更新时间:2024-03-16 14:44
自制AVR单片机解锁器
用AVR单片机的2MHz的无源石英晶体和6反相器74HC04,加上几个1/4W色环电阻就可以做成矩形波发生器。下图是74HC04的引脚分布图。 如上下图所示。74HC04的14脚为电源引脚,接正5V直流电源,第7脚接5V直流电源负极。在本设计中利用74HC04的头三个反相器构成矩形波发生器。 下图解锁器电路原理图。 下图中,标号为U1A的74HC04的第1个反相器输入输出端并联上一个1MQ的1/4W电阻和一个2M的2脚石英晶体。2个22pF的瓷片电容C1和C2用来微调石英晶体的频率。U1C是输出反相器,为了保证波形比较完整,在输出端接一个2K欧姆的上拉电阻。 如果碰到AVR单片机自己锁死的情况。只要
[模拟电子]
avr单片机的adc应用
1.数模转换的基础知识 数模转换器(ADC)基本上是一个比例上的问题,即由ADC产生的数字值跟输入模拟量与转换器量程的比值有关的。转换关系如下: Vin/Vfullscale=X/(2N-1) 其中X是数字输出,N是数字输出的位数(ADC的位数),Vin是模拟输入量的值,Vfullscale是模拟输入量的最大值。 数模转换的转换精度计算: Vresolution=Vfullscale/((2N-1) 2.AVR微控器的ADC介绍 AVR微控器的ADC具有两个ADC寄存器:ADC控制与状态寄存器ADCSR控制ADC的运行;ADC多路复用选择器ADMUX,控制8个
[单片机]
基于AVR单片机的安全工器具监控系统的实现
众所周知,安全是电力企业一个永恒的主题,而安全工器具的好坏,将直接影响着电力企业在生产过程中的人身和设备安全。笔者提出了一种基于AVR单片机的安全工器具监控系统的设计方案,主要是对安全工器具的离就位状态信息、有效使用期限和安全工器具柜内的温湿度状况等进行监控,可以根据实现安全工器具柜内温湿度的自动调节,能够自动记录安全工器具的相关信息。本文首先阐述了系统的总体结构,然后详细论述了系统的硬件设计和软件设计。 1 安全工器具监控系统的总体结构 1.1 系统结构 本文所设计的安全工器具监控系统主要分为下位机数据采集和上位机数据管理两个部分,两者之间通过网络进行通信。 系统首先通过数据采集板对安全工器具柜的相关量进行采
[单片机]
AVR单片机加载及仿真接口电路
ISP下载接口,不需要任何的外围零件。使用双排2*5插座。由于没有外围零件,故PB5(MOSI)、PB6(MISO)、PB7(SCK)、复位脚仍可以正常使用,不受ISP的干扰。 重要说明:实际应用时,如果你想简化零件,可以不焊接2*5座。但在PCB设计时最好保留这个空位,以便以后升级AVR内的软件。 JTAG仿真接口设计 仿真接口也是使用双排2*5插座。需要四只10K的上拉电阻。 重要说明:实际应用时,如果你不想使用JTAG仿真,并且不想受四只10K的上拉电阻的影响,可以将JP1-JP4断开。
[单片机]
avr单片机eeprom初始化配置及说明
ATmega16 包含 512 字节的 EEPROM 数据存储器。它是作为一个独立的数据空间而存在的,可以按字节读写。 EEPROM 的寿命至少为 100,000 次擦除周期。 EEPROM 的访问 由地址寄存器、数据寄存器和控制寄存器决定。 /* EEPROM 数据存储器 EEPROM 地址寄存器(EEARH 和 EEARL) bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 EEAR7 EEAR6 EEAR5 EEAR4 EEAR3 EEAR2 EEAR1 EEAR0 Res: 保留 保留位,读操作返回值为零。 EEAR8..0
[单片机]
AVR单片机(学习ing)—(四)、ATMEGA16的定时/计数器—01
四、ATMEGA16的定时/计数器 四—(01)、四位显示秒表试验 首先怀念一下咱们的体育课,再体育课或者田径比赛的时候,老师会经常使用秒表来记录同学们的成绩。在此,来进行一个秒表的设计。( 说实话,这个秒表真的太贵了,不过只是实验,纯属娱乐) 使用INT0键进行计时的开始/停止,使用S1键作为计时值得清楚,并且采用6位数码管的右四位进行显示。 定时器T0被用作扫描4位数码管(采用溢出中断,每1ms中断一次),而定时器T1则用来计时(咱们用的秒表用来显示四位,两位小数,也就是每计时10ms中断溢出一次)。 1、预分频器和多路选择器 ATMEGA16有两个8位定时/计数器(T/C0、T/C2)和一个16位定时/计数器(T/C1)。
[单片机]
AVR单片机控制的开关电源
单片机 控制开关电源,单从对电源输出的控制来说,可以有几种控制方式。 其一是 单片机 输出一个电压(经DA芯片或PWM方式),用作电源的基准电压。这种方式仅仅是用单片机代替了原来的基准电压,可以用按键输入电源的输出电压值,单片机并没有加入电源的反馈环,电源电路并没有什么改动。这种方式最简单。 其二是 单片机 扩展AD,不断检测电源的输出电压,根据电源输出电压与设定值之差,调整DA的输出,控制PWM芯片,间接控制电源的工作。这种方式单片机已加入到电源的反馈环中,代替原来的比较放大环节,单片机的程序要采用比较复杂的PID算法。 其三是 单片机 扩展AD,不断检测电源的输出电压,根据电源输出电压与设定值之差,输
[单片机]
基于AVR的锂电池智能充电器的设计与实现
1 引言 锂电池闲其比能量高、自放电小等优点,成为便携式电子设备的理想电源。近年来,随着笔记本电脑、PDA,无绳电话等大功耗大容量便携式电子产品的普及,其对电源系统的要求也日益提高。为此,研发性能稳定、安全可靠、高效经济的锂电池充电器显得尤为重要。 本文在综合考虑电池安全充电的成本、设计散率及重要性的基础上,设计了一种基于ATtiny261单片机PWM控制的单片开关电源式锂电池充电器,有效地克服了一般充电器过充电、充电不足、效率低的缺点,实现了对锂电池组的智能充电,达到了预期效果。该方案设计灵活,可满足多种型号的锂电池充电需求,且ATtiny261集成化的闪存使其便于软件调试与升级。 2 锂电池充电特性
[电源管理]
设计资源 培训 开发板 精华推荐
最新单片机文章
更多精选电路图
更多热门文章
更多每日新闻
更多往期活动
厂商技术中心
随便看看