众所周知,在GCC AVR里有个delay.h的头文件,可以直接使用.
IAR for AVR里面只有__delay_cycles
所以,我自己写了个delay.h,包含三个可调用的函数
#ifndef __DELAY_H__
#define __DELAY_H__
#include
#ifndef F_CPU
#define F_CPU 16000000L
#endif
#define _delay_us(t) __delay_cycles(F_CPU / 1000000 * t)
#define _delay_ms(t) __delay_cycles(F_CPU / 1000 * t)
#define _delay_s(t) __delay_cycles(F_CPU * t)
#endif /* __DELAY_H__ */
关键字:IAR AVR delay函数
引用地址:
IAR for AVR delay函数
推荐阅读最新更新时间:2024-03-16 15:21
基于AVR与DDS技术的超声波电源研制
1引言 近年来, 随着压电材料、电力电子技术的飞速发展,超声在工业、农业、生物、医药卫生、环境保护等国民经济的各个部门以及国防工业中已得到广泛的应用。超声技术的两大核心要素包括换能器和超声电源。目前,超声技术向高频率、高稳定性发展,因此对超声电源的性能提出了更高的要求。在超声系统工作过程中,由于变幅杆系统刚度、载荷、工作面积等因素的变化,导致换能器系统固有频率发生漂移,要求超声电源具有精确的频率自动跟踪功能,以满足换能器稳定的超声输出。此外,目前对换能器多种工作频率的需求日愈增加,急需具有多种频率选择的超声电源与之配对。本文采用DDS与AVR,研制了一种新型超声波电源,能够提供500kHz、功率为3.2瓦范围内的电信
[电源管理]
IAR编译器的常见问题
最近因为项目需要开始使用IAR for AVR,我用的是5.40版本的,主要是5.40以上才包括了aTtiny87,至于安装文件和和谐文件,大家自己找吧,很好找的。 1.编译报错如图所示: 很显然你没有使能寄存器的位定义。方法如下:Project —— Option —— General Options —— System(如下图所示),勾选 Enable bit definitions in I/O-Include files即可 2.MCU型号选择 如果和我一样都次都是以空工程创建的话,不过忘了第一步先进Project —— Option —— General Options —— Target选择所使用的
[单片机]
AVR应用经验-经典
AVR具有上手入门快,开发方便简单的特点,但要充分体会和发挥AVR的优点,还需要应用工程师本身的硬软件设计开发能力的不断学习、实践提高。 “外行看热闹,内行看门道”,对于有一定基础的嵌入式和单片机系统设计开发的工程师,不妨先简单尝试一下AVR。 开发环境与工具:PC+下载线+实际的系统板 PC上的开发软件: AVR Studio(Free)汇编+汇编调试+高级语言调试+软件仿真 ICC、CVAVR、BASCOM-AVR 高级语言程序开发+程序下载。其中一个购买正版全功能,作为主要的开发环境,其它使用DEMO版,作为辅助及参考。 AVR ISP下载线: STK200 and STK200+ and STK300 ISP
[单片机]
关于AVR单片机的看门狗
看门狗这个东西以前没接触过 理解它费了一点周折。 使用它的复位MCU的功能实现LED的闪烁。 准备工作是设定WDT的超时时间(如1s) 首先使能看门狗(wdt_enable),然后喂狗(wdt_reset),再延时灯的闪烁时间(delay=0.5s),使灯亮(SET_LED);再用一个恰当的比较长的延时(delay 0.5s)饿死狗。之后MCU重启,如此往复。 (1)延时可以调用库函数,还可以使用定时器; (2)SET_LED; while(1) wdt_reset(); 表示 不断喂狗,从而不让MCU重启,使灯一直亮着。程序中使用这些代码的用途待考证,可以给作者发email 嘿嘿~ (3)软件看门狗和硬件看门
[单片机]
AVR中高档单片机内部EEPROM方法!可以用!
/************************************************************** ;eeprom.c 在AVR单片机中可以用在ATMEGA16和ATMEGA8中都可以用,在GCC下 ;编译通过。09年11月1号! 陈永飞已测试过! ;读/写atmega8515内部EEPROM的例子 ;将数据0....9写入eeprom中,再读出用数码管显示出来 ***************************************************************/ #include avr/io.h #include avr/eeprom.h #define uchar
[单片机]
AVR编程_位定义
Question 在我的源代码中如何进行位定义? Answer 我们总是在AVR器件数据手册中推荐使用位定义的方式来编写你的C或汇编源代码。 位定义与器件手册的该位定义一致的话可以很方便的理解代码的含义和让其他人更好的理解你的代码。同时,如果你需要移植你的代码到其他的AVR器件,用位定义可以很方便的进行移植,因为不同的AVR器件的绝对地址和位的位置或许不同,但是位定义通常都保持一致。当移植一个设计,经常需要包含正确的定义文件。 在不同的AVR器件的编译器包含文件中,所有的I/O寄存器位命名和位置都被定义了。 下面是一个At
[单片机]
如何解决AVR单片机熔丝位锁死的问题
1.AVR单片机熔丝位锁死简单快捷的解密方法: 在很多AVR单片机的初学者在使用AVR单片机中,很容易把熔丝位弄错而造成单片机锁死,比如说JTAGEN置为1后,单片机的JTAG就不能再下载程序进去了,因此给我们带来很多麻烦。 常见的恢复方法是使用并口编程器来恢复,对于初学者来说,很多设备是很欠缺的,所以很难解决。 现为我们初学者介绍一个简单实用可行的方法——有源晶振恢复法。将被锁死的AVR单片机接入最小系统或者开发板中,将系统中的晶振拆下来,在XAIL1接上有源晶振的第三脚(按下图接即可)。 然后通电,使用ISP下载线进行熔丝位编辑,本人使用智峰progisp(Ver 1.6.7)软件,打开软件选择好芯片型号,使用默
[单片机]
AVR单片机定时/计数器学习笔记(二)
定时/计数器1(16位)有普通模式、CTC模式、快速PWM模式、相位修正PWM模式等工作模式。 2.CTC模式(需要用到OC1A、OC1B两个引脚) 应用:用于产生占空比为50%的方波信号 ( N为分频系数 ) 需要配置的寄存器:T/C1控制寄存器A(TCCR1A)、T/C1控制寄存器B(TCCR1B)、输出比较寄存器1A(OCR1A)。 (1)TCCR1A的bit7、bit6用于设置OC1A脚的比较输出模式,bit5、bit4用于设置OC1B脚的比较输出模式。(此处我们都设为,比较匹配时OC1A、OC1B电平取反) (2)TCCR1B的bit4、
[单片机]