一、开发环境搭建
CodeVisionAVR C Compiler用于程序的编辑以及编译.AVR Studio 4与USB AVR JTAGICE mkll-CN 用于在线调试和程序烧写。
二、AVR Studio 4中熔丝位的设置(在Fuses标签中,相应位打钩表示program即写0;不选中表示未编程即1)
-
M161C: 工作于162模式还是161模式;
-
BODLEVEL:掉电检测设置;
-
OCDEN:片上调试使能;
-
JTAGEN:JTAGE口下载使能;
-
SPIEN:SPI使能位;
-
WDTON:看门狗使能级别设置;
-
EESAVE: EEPROM中内容是否要保留;
-
BOOTSZ:用于设置程序块和启动块;
-
BOOTRSZ:控制复位向量所在的位置;
-
CKDIV8:时钟源预分频;
-
CKOUT:系统输出时钟使能位;
-
SUT_CKSEL:设置系统时钟的方式;
-
三、根据主板设置熔丝位
- Atmega162使用的外部晶振为11.0592MHZ,设置熔丝位CKSEL和SUT相应位,使系统采用外部时钟,上电时间为4.1ms;
- 输出时钟禁止,不用预分频,复位地址设定0000;即CKOUT = 1; CKDIV8 = 1; BOOTRST = 1;
- 设置162模式,看门狗二级模式,JTAG口使能.掉电检测禁止
具体的熔丝位的值如下图
四、问题描述与解决方法
由于升级主板,将原先的ISP下载改成JTAG下载方式,将SPI接口用于外部端口数据的采集。写测试程序测试JTAG下载器;
-
出错现象:
1,使用主板上的LED进行调试.其中PORTE.2口与LED连接。对该IO口赋值能够控制LED灯的亮灭。但是如果想实现LED灯的闪烁.则LED的状态为延时前的IO口的值;
2,通过JTAG口连接仿真器,进行单步调试.可以顺利进入中断计时函数,LED灯闪烁正常。但是全速执行程序会跑飞。
- 解决方法:
读取老版本主板上Atmega162的熔丝位设置,差别在看门狗的设置。由于在新主板上对162的看门狗熔丝使能,以至程序会复位。