关于avr熔丝位的学习

之前在学校只学过51系列的单片机,当然对于如今的很多系统,用51单片机已经不能满足系统的需求了,包括 处理速度,定时/计数器,IO口等。最近公司要做个智能遥控器系统,经过选择和论证,决定采用Atmega88PA-AU的芯片。设计好原理图,PCB板,等板子到了,就迫不及待想试试。

由于Atmega88PA-AU(以下简称avr88)没有Jtag口,所以只能用debugWire,当然就只能买MKII的调试器(挺贵的,不过都是公司的钱)。由于对于熔丝位不太懂,所以不敢轻举妄动,写好程序后,点击了program,诶!不错,下进去了,没问题!于是乎信心大增,开始大胆把dwen勾上了,点击program,结果悲剧了,弹出对话框(一堆英文,意思是说复位线被占用),看来真悲剧了,一片芯片被锁了,貌似还只能用高压编程解锁了。这样一来又要买高压编程器,测试座(由于是贴片的),公司肯定不敢啦!之前为了系统测试,还特定加了复位电路,想不到现在竟成了绊脚石,那没有办法,只能重新焊上一块芯片,然后把复位电路拆了,重新调熔丝位,就OK啦!初学avr,没办法,总得费几块片子的,所以还是得大胆的测。不过得先看懂文档来,不然盲目测,公司肯定吃不消!大笑

以下是熔丝位(转载自http://www.fxdzw.com/dpj/avr_rsw.htm


要想使MCU功耗最小也要了解一些位的设定。
1:未编程  
0:编程 
1、BOD(Brown-out Detection) 掉电检测电路 
BODLEVEL(BOD电平选择): 1: 2.7V电平; 0:4.0V电平 
BODEN(BOD功能控制): 1:BOD功能禁止;0:BOD功能允许  
    使用方法:如果BODEN使能(复选框选中)启动掉电检测,则检测电平由BODLEVEL决定。一旦VCC下降到触发电平(2.7v或4.0v)以下,MCU复位;当VCC电平大于触发电平后,经过tTOUT 延时周后重新开始工作。             
因为M16L可以工作在2.7v~5.5v,所以触发电平可选2.7v(BODLEVEL=1)或4.0v(BODLEVEL=0);而M16工作在4.5~5.5V,所以只能选BODLEVEL=0,BODLEVEL=1不适用于ATmega16。 
2、复位启动时间选择 
SUT 1/0:  当选择不同晶振时,SUT有所不同。 
    如果没有特殊要求推荐SUT

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CD4094是一个串入并出移位寄存器,可以用来驱动LED灯等输出设备。下面是一个使用AVR单片机驱动CD4094控制8位LED的示例程序,使用的是C语言编写,基于AVR-GCC编译器和AVR Studio集成开发环境: ```c #include <avr/io.h> #include <util/delay.h> #define SER_PORT PORTB #define SER_DDR DDRB #define SER_PIN PB0 #define RCLK_PORT PORTB #define RCLK_DDR DDRB #define RCLK_PIN PB1 #define SRCLK_PORT PORTB #define SRCLK_DDR DDRB #define SRCLK_PIN PB2 void shiftOut(unsigned char data) { int i; for (i = 0; i < 8; i++) { SER_PORT &= ~(1 << SER_PIN); // 先拉低SER SER_PORT |= ((data >> i) & 0x01) << SER_PIN; // 按位输出数据 SRCLK_PORT |= (1 << SRCLK_PIN); // 拉高SRCLK SRCLK_PORT &= ~(1 << SRCLK_PIN); // 拉低SRCLK,输出数据 } RCLK_PORT |= (1 << RCLK_PIN); // 拉高RCLK,输出到LED RCLK_PORT &= ~(1 << RCLK_PIN); // 拉低RCLK,清零 } int main(void) { SER_DDR |= (1 << SER_PIN); RCLK_DDR |= (1 << RCLK_PIN); SRCLK_DDR |= (1 << SRCLK_PIN); while (1) { shiftOut(0x55); // 输出数据0x55 _delay_ms(500); // 延时500ms shiftOut(0xAA); // 输出数据0xAA _delay_ms(500); // 延时500ms } return 0; } ``` 在这个程序中,CD4094的SER、RCLK和SRCLK引脚分别连接到AVR单片机的PB0、PB1和PB2引脚。shiftOut()函数用来向CD4094输出数据,主函数中不断循环输出0x55和0xAA两个字节的数据,并且在输出后延时500ms,以便观察LED的亮灭情况。 需要注意的是,这个示例程序只是一个简单的CD4094驱动程序,在实际应用中需要结合具体的硬件连接和LED控制电路来进行调试和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值