Avr
pointfish
这个作者很懒,什么都没留下…
展开
-
矩阵按键扫描
I/O操作:复位时各引脚为高阻态(tri-state),即使此时没有时钟在运行。 1. 引脚配置为输入时DDxn=0,若PORTxn 为"1“,上拉电阻将使能。 引脚配置为输出时DDxn=1,若PORTxn 为"1“,引脚输出高电平("1“),否则输出低电平(“0“)。 2. 在( 高阻态) 三态({DDxn, PORTxn} = 0b00) 输出高电平(原创 2011-06-10 22:07:00 · 1026 阅读 · 0 评论 -
AVR编程中 (GCC) SIGNAL与ISR的区别
在 interrupt.h中(Copyright (c) 2007)有:/* /def ISR(vector [, attributes]) /ingroup avr_interrupts /code #include /endcode Introduces an interrupt handler function (interrupt service转载 2011-06-07 18:01:00 · 3670 阅读 · 0 评论 -
asm volatile()所表示的意思
Inline Assembler Cookbook AVR-GCCInline Assembler Cookbook About this Document The GNU C compiler for Atmel AVR RISC processors offers, to embed assembly language code into C programs. This co转载 2011-06-07 15:26:00 · 17951 阅读 · 1 评论 -
UBRRH和UCSRC 寄存器问题
UBRRH和UCSRC两个寄存器共用一个地址,在AVR STUDIO里看不到UCSRC的变化,以为UCSRC没有设置上,后来仔细看了MEGE16的技术资料发现,要想读出UCSRC的值必须先读UBRRH,并且在读UBRRH之后,立即读UCSRC,这期间不能有任何的延时或中断发生。AVR STUDIO里看不到UCSRC的值不表示UCSRC没有被设置,这你只要把程序放到硬件上跑一下,在用电脑监视转载 2011-06-21 11:55:00 · 1686 阅读 · 0 评论 -
正确配置AVR熔丝位的建议
对AVR熔丝位的配置是比较细致的工作,用户往往忽视其重要性,或感到不易掌握。下面给出对AVR熔丝位的配置操作时的一些要点和需要注意的相关事项。有关ATmega128熔丝位的具体定义和功能请查看本书相关章节,在附录中将给出一个完整的汇总表。 (1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态,“Un转载 2011-06-21 08:38:00 · 1032 阅读 · 0 评论 -
晶体 vs 晶振
晶体(Crystal)是自然界存在的石英材料,也可以人造石英,目前做晶振的石英基本上都是人造的。其具有的压电效应被人们用其来做频率基准。可以这么说吧,它就是块以特定方式(AT或BT等)切割的水晶。用它作振荡器时,结合具体的振荡电路(如克莱拍,考皮兹等)完成一个完整的振荡电路的功能。那完整的振荡电路就是有源电路,而其中所用的一块晶体就是无源晶体,有人叫无源晶振,那是不准确的。如果把完整的带晶体的振荡转载 2011-06-21 08:34:00 · 1139 阅读 · 0 评论 -
AVR开发前准备—熔丝位(Fuse)快速入门- 时钟
AVR通过熔丝来控制芯片内部的一些功能,比如JTAG,时钟的使用,掉电检测电压,是否允许调试等。AVR Studio 中 STK500 处理熔丝位有巨大的优势:它是以功能组合让用户配置。 这种方式与小马(PnoyProg2000,SL-ISP)相比,具有以下的优势(优势是如此明显,可以用“巨大优势”来形容): 有效避免因不熟悉熔丝位让芯片锁死 (这是初学者的恶梦), 笔者转载 2011-06-21 08:27:00 · 1567 阅读 · 0 评论 -
I/O 口在矩阵扫描时-输出接输出时
1.PIN读到的值是管脚的逻辑电平,而port读到的是锁存器的值。2.不论如何配置DDxn,都可以通过读取PINxn寄存器得到引脚电平。 3. 实际在做矩阵扫描时,小杨将4个管脚设为(DDxn,PORTxn = 1,0),另外4个管脚设为(DDxn,PORTxn = 1,1)在按下按键后发现,(1,1)的管脚PINxn =1,但(1,0)中按键接通的管脚PINxn =1原创 2011-06-23 20:11:00 · 1211 阅读 · 0 评论 -
UCSRC
在设置UCSRC寄存器的时候要注意:1.要一次性把所有位都设置完,否则只有后面设置的那一句生效2.设置时,必须同时设置URSEL位,使能写UCSRC。 例如,我刚开始设的:UCSRC |= (1|(1UCSRC |= (1|(1UCSZ1); //set data length 8设置完第二句后,第一句奇校验便失原创 2011-06-21 19:57:00 · 943 阅读 · 0 评论 -
AVR 启动时间 设置方法
1。系统电源中有大的电容,上电速度比较慢(到达标准值时间长)2。系统中其它的器件自己需要上电初始化,然后才能接收AVR的指令。3。上电后马上要对片内EEPROM操作,但此时电源不稳定会出现问题比如使用LCD2*16模块。此模块4V以上才能自己做初始化,然后接收AVR的指令。但AVR3V就工作了,马上发指令给LCD模块,LCD是不会响应的,通常形成显示不正常。此时可以考虑加长AVR的启动转载 2011-06-21 09:04:00 · 3099 阅读 · 0 评论 -
__asm__ __volatile__("": : :"memory")
memory 强制gcc编译器假设RAM所有内存单元均被汇编指令修改,这样cpu中的registers和cache中已缓存的内存单元中的数据将作废。cpu将不得不在需要的时候重新读取内存中的数据。这就阻止了cpu又将registers,cache中的数据用于去优化指令,而避免去访问内存。 The GCC manual says using 'asm volatile' preve转载 2011-06-07 15:24:00 · 8194 阅读 · 1 评论