AVR
文章平均质量分 69
会飞行的小蜗牛
这个作者很懒,什么都没留下…
展开
-
AVR的_USART
2011-10-03 17:03 77人阅读 评论(0)收藏举报USART数据寄存器UDR:当对此寄存器进行读的时候,实际就是接收数据缓冲寄存器(RXB)。当对此寄存器进行写的时候,实际就是发送数据缓冲寄存器(TXB)。USART控制和状态寄存器A:UCSRA(RXC,TXC,UDRE,FE,DOR,PE,U2X,MPCM)RXC:USART接受结束。接受缓转载 2016-11-06 13:58:10 · 671 阅读 · 0 评论 -
AVR 定时器使用范例
/*************************************************** AVR定时器使用范例 ******* ******* 作者: HJJourAVR ******* 编译器:转载 2012-04-03 14:57:39 · 2097 阅读 · 0 评论 -
AVR单片机Atmega128外扩RAM
由于AVR系列单片机采用的是内部外部RAM统一编址,ATmega128工作在非ATmega 103模式时具有4k+256B的包括寄存器文件(通用工作寄存器)、I/O寄存器、扩展I/O寄存器和内部SRAM的连续内部存储空间。所以在扩展外部RAM时,和内部SRAM地址重叠的外部RAM地址是不能直接访问的。也就是说扩展的外部RAM每64k要浪费掉内部SRAM那么大的空间(AT90系列如此)。所幸的是me转载 2012-04-03 14:49:33 · 4168 阅读 · 0 评论 -
AVR读写IO口右一方法(借用ATmel)
//头文件#ifndef __always_inline__#define __always_inline__ _Pragma("inline=forced")inline#endif#define AVR_GPIO_ASSIGN(name, port, bit) \__always_inline__ static void GPIO_##name##_Set(v转载 2012-04-03 13:44:03 · 1705 阅读 · 0 评论 -
AVR单片机IO使用注意事项及结构全攻略
为搞清IO结构,首先看看上拉和下拉电阻的作用。一、上拉电阻 上拉就是将不确定的信号通过一个电阻钳位在高电平!电阻同时起限流作用!下拉同理!上拉电阻是用来解决总线驱动能力不足时提供电流的。一般说法是拉电流,下拉电阻是用来吸收电流。1、在用TTL电路驱动CMOS电路时,若TTL的高电平低于CMOS要求的高电平的门限值(1,TTL电平: 输出高电平>2.4V,输出低电平=2原创 2012-04-03 12:04:28 · 7115 阅读 · 2 评论 -
IAR for AVR 学习笔记
参照这位博主的文章地址http://blog.csdn.net/liu_jing_yang/article/category/942168 包含如下内容 Warning[Pe550]: variable "xxxx" was set but never usedWarning[Pe550]: variable "xxxx" was set but n转载 2012-04-03 01:44:41 · 977 阅读 · 0 评论 -
3. avr定时器/计数器0 --TC0 --相位修正PWM模式 (比较输出--相位修正PWM 模式)
相位修正PWM 模式(WGM01:0 = 1) 为用户提供了一个获得高精度相位修正PWM 波形的方法。此模式基于双斜坡操作。计时器重复地从BOTTOM 计到MAX,然后又从MAX倒退回到BOTTOM。在一般的比较输出模式下,当计时器往MAX计数时若发生了TCNT0与OCR0的匹配,OC0将清零为低电平;而在计时器往BOTTOM计数时若发生了TCNT0与OCR0 的匹配, OC0 将置位为高电平。工转载 2012-04-03 01:40:08 · 1416 阅读 · 0 评论 -
avr--eeprom
EEPROM: 单片机内部可用软件读写的数据存储空间,掉电后数据不丢失,可擦写10万次。 ATmega16 内部有512字节的EEPROM数据空间,地址空间由0-511,由EEPROM地址寄存器EEAR指定,数据寄存器EEDR用于存储要读写的数据。写操作步骤: 一、 查询上一个数据是否写完: while (EECR&(1 二、 将要写如数据的地址送到EEAR:转载 2012-04-03 01:35:59 · 2533 阅读 · 0 评论 -
一个AVR USART(RS232)低层驱动+中间层软件示例
一般教科书上提供的UART收发的程序往往是一段采用轮循(Polling)方式完成收发的简单代码。但对于高速的AVR来讲,采用这种方式大大降低了MUC的效率。在使用AVR时,应根据芯片本身的特点(片内大容量数据存储器RAM,更适合采用高级语言编写系统程序),编写高效可靠的UART收发接口(低层)程序。下面是一个典型的USART的接口程序。#include #define RXB转载 2012-04-03 00:52:05 · 1077 阅读 · 0 评论 -
SPI、CAN、I2C总线简介
一、SPI总线说明串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。SPI 用于CPU与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是转载 2012-04-03 00:45:29 · 1429 阅读 · 0 评论 -
AVR STUDIO 5.0下晶振频率方法
仿真的时候是在这里这样设置原创 2012-04-02 14:45:40 · 1552 阅读 · 0 评论 -
WinAVR+AVR Studio 新手入门必读
1. 获得必须的软件 请从Atmel官方获得最新版本的AVR Studio(以4.13版本为例) http://www.atmel.com/dyn/products/tools_card.asp?tool_id=2725 请从WinAVR官方获得最新版本的WinAVR(以WinAVR-20070525为例) http://sourceforge.net/project/showfi原创 2012-04-02 14:34:41 · 1296 阅读 · 0 评论 -
4. avr 定时器/计数器1 --TC1 --CTC模式输出PWM (比较匹配发生时清除计数器模式(即CTC模式))
T/C1是16位定时器/计数器,它的计数器由两个8位寄存器TCNT1H,TCNT1L构成,TCNT1H是高8位寄存器,TCNT1L是低8位寄存器。最大计算值为2的16次幂,十六进制是0xFFFF=65535.例如:定时200ms ,晶振8MHZ,分频系数1024,计数时钟频率为8MHZ/1024=8000000HZ/1024=7812.5HZ,每个计数脉冲的周期时间为1/7812.5=0.12转载 2012-04-03 01:40:49 · 1397 阅读 · 0 评论 -
avr--TWI(I2C)
TWI: 是一种全双工的串行通讯协议,与I2C工作方式相同,由一条数据传输线SDL,一条时钟线SCL组成,对应单片机的外部引脚PC1,PC0。 由于只有两条总线,简化了系统设计。特点: • 简单,但是强大而灵活的通讯接口,只需要两根线 • 支持主机和从机操作 • 器件可以工作于发送器模式或接收器模式转载 2012-04-03 01:37:07 · 3313 阅读 · 1 评论 -
1. avr定时器/计数器0 --TC0 --CTC模式输出PWM (比较匹配发生时清除计数器模式(即CTC模式))
CTC:比较匹配时清零计数器模式,。当计数器TCNT0的数值等于比较寄存器OCR0时计数器TCNT0自动清零。OCR0定义了计数器的最大(TOP)值,这个模式使得用户可以很容易地控制比较匹配输出的频率。T/C0的比较输出脚为OC0(PB3),PB口的第三脚,在此模式下可以在OC0上输出PWM控制外部设备。例如:在OC0脚上输出20HZ的方波信号,方波的周期时间为T=1/20HZ=0.05秒=5转载 2012-04-03 01:38:15 · 4623 阅读 · 0 评论 -
ICCAVR编程Atmega128规则之计数/定时器T1的使用 溢出中断 定时
/**************实现功能:在数码管1,2上显示定时器以秒为单位的累加值内容:定时器的溢出中断的使用 数码管显示温度 子函数的调用总结:编程中遇到 a = number/10; b = number%10; show(a,b); 这两行编译不过去但是当吧number用具体的数据如12,64替换时原创 2012-04-05 10:59:50 · 2823 阅读 · 0 评论 -
ATmega 128控制输出 pwm
#include#includeint main(){DDRB|=0X20;//设置PWM波形输出,与PB5口相连,详见OCR1A=15625一句的注释DDRE=0X04;PORTE=0X04;DDRA=0XFF;PORTA=0XFF;TCCR1A|=0X82;//定时器/计数器1的控制寄存器A //0x82中8是指原创 2012-04-07 15:21:17 · 3059 阅读 · 0 评论 -
SourceInsight 换行缩进过度的解决方法
问题描述:原创 2014-06-22 09:41:31 · 6653 阅读 · 1 评论 -
GCC-AVR 编写中断服务函数的注意事项
//注意:本文使用的GCC-AVR版本为WinAVR20100110原创 2014-06-22 14:24:08 · 4288 阅读 · 3 评论 -
Source Insight配置WinAVR的具体步骤
Source Insight配置WinAVR的具体步骤 配置WinAVR主要分2步:1.选择Options->Custom Commands a. 点击ADD按纽,在Command: 内写入编译器名,如WinAVR Compile b. 在Run: 内写入命令make clean;make all; c. 千万不要在Dir加目录,我试过了,make cle原创 2014-06-15 00:49:03 · 1069 阅读 · 0 评论 -
AVR-GCC开发5种软件组合(GCC+PN/AS/VC/SI/UE)极速上手指引(菜鸟适用)
1.GCC+PN(WinAVR-20071221)转载 2014-06-15 00:14:17 · 1342 阅读 · 0 评论 -
Source insight / Visual studio 2012 / UltraEdit 中显示TAB符用4个空格代替
Source insight中显示TAB符用4个空格代替 Options->Document Options 将 Visible tabs 打勾原创 2014-06-15 09:55:29 · 1118 阅读 · 0 评论 -
Ucos-II 数组OSUnMapTbl[]表中值是如何计算得来的?
为了保证系统的实时性,在就绪表这一块,内核设计者设计了一种算法,这个算法在O(1)的时间里完成查找就绪表中最高优先级的任务(遍历就绪表来查找最高优先级的做法是不能保证实时性要求的)。关于就绪表,这里涉及到四个数据结构,分别是:OSRdyGrp、OSRdyTbl[]、OSMapTbl[]和OSUnMapTbl[]。前两者是全局变量(INT8U),OSRdyTbl[]数组的大小取决于OS_LOWEST原创 2013-08-15 23:43:32 · 1573 阅读 · 0 评论 -
Source Insight中添加支持自定义格式文件能打开的方法
原创 2013-06-07 22:49:03 · 1093 阅读 · 0 评论 -
arduino uno mega2560板 bootloader 烧写方法
bootloader丢失情况时有发生,下面介绍arduino不同板子bootloader下载的方法。arduino duemilanove/uno/mega 1280/mega 2560等都支持~~首先是推荐用最简单的官方IDE进行下载,这种不需要配置任何东西~~~先用mega1280做一个简单介绍。本次介绍使用的是0022 IDE,其他版本的大同小异~~~上一个硬件连接图原创 2013-06-02 17:20:14 · 12439 阅读 · 0 评论 -
使用ICC AVR过渡到AVR STUDIO
列出ICC AVR 过渡到 AVR STUDIO时要注意的几个问题1.头文件更改ICCAVR使用的是“#include ”AVR STUDIO更改为“#include ”AVR Studio 4 的头文件 “#include ” 对应 AVR Studio 5 的头文件 “#include ” 在ICC中使用不同MCU的头文件是不同的,在AVR studio中所有MCU的原创 2012-03-30 00:55:29 · 3691 阅读 · 0 评论 -
ATmega128 IO 学习
#includevoid Delay(unsigned int T){unsigned int i,j;for (i=0;i for (j=0;j asmvolatile ("nop"); //汇编指令,让单片机运行空指令}void main(){DDRA=0XFF;//DDRA=0B11111111; //定义PA端口全为输出原创 2012-04-07 15:22:48 · 1190 阅读 · 0 评论 -
UART0串口编程系列
参考地址在http://blog.csdn.net/tigerjb/article/details/6153810转载 2012-04-08 11:17:39 · 507 阅读 · 0 评论 -
AVR单片机学习总结
1. 引脚:0入1出 设置状态 输出状态IO寄存器设置 DDR×某一位 置1,相应位IO被设为输出; PORT×某一位 置1/0,相应位电平为高/低。 输入状态IO寄存器设置 DDR×某一位 置0,相应位的IO口被设为输入; PORT×某一位 置1,使能对应IO口相应位的上拉电阻 ;原创 2011-12-13 23:20:27 · 1503 阅读 · 0 评论 -
ATmega128 A/D 学习
#include #include #include //中断函数头文件//函数声明void Port_Init(void); //端口初始化配置void Compare_Init(void); //模拟比较器初始化设置int main(void) { Port_Init();原创 2012-04-07 15:25:30 · 983 阅读 · 1 评论 -
AVR 内部EEPROM读写式例
本程序简单的示范了如何使用ATMEGA16的EERPOMEEPROM的简介EEPROM的写操作EEPROM的读操作出于简化程序考虑,各种数据没有对外输出,学习时建议使用JTAG ICE硬件仿真器在打开调试文件到JTAG后,打开Debug -> JTAG ICE Options菜单,然后在JTAG ICE Properties中点击Dbug页面,将preserve eep转载 2012-04-02 14:03:55 · 1654 阅读 · 0 评论 -
利用AVR(MEGA16)片内IIC 实现AT24C256 的连续写(页写)与连续读程序
最近刚买回一块AT24C256 EEPROM ,容量为32K Byte ,数据地址宽度为 16Bit ,支持IIC 1M (5V)400K (2.7V) 速度模式 ,利用AVR M16 片内IIC 可以高速稳定地读取数据…… 爽! 经过调试的,与各位大虾分享分享。程序如下:(winavr)#include #include #include #include转载 2012-04-03 14:21:18 · 3367 阅读 · 0 评论 -
avr--adc
ADC: 模数转换,将模拟电压转换为数字。ATmega16 有一个10位精度的ADC转换器,具有8路外部模拟输入端,与PORTA口复用。使能AD转换功能后就不能作为I/O口使用。输入模拟电压的范围介于AGND和AVcc之间,如AVcc为5v时,10位精度时转换后对应的数值为0-1023(0-0X3F),若为8位精度时,转换后对应的数值为0-255。若采用内部标准的参考电压2.56V,则转载 2012-04-03 01:34:50 · 1144 阅读 · 0 评论 -
AVR单片机模数转换的ADC实验 ATmega16
6.2 模数转换的ADC实验 6.2.1、实例功能 AVR的模数转换器ADC具有下列特点: 10位精度; 0.5LSB积分非线形误差 ±2LSB的绝对精度; 13µs~260µs的转换时间; 在最大精度下可达到每秒15kSPS的采样速率; 8路可选的单端输入通道; 7路差分输入通道; 2路差分输入通道带有可选的10×和200×增益; ADC转换结果的读取可设置为左端对齐(LEFT转载 2012-04-03 01:33:32 · 2945 阅读 · 2 评论 -
AVR单片机的RTOS-AVRX应用
引 言 随着技术的发展,嵌入式系统的设计及应用对人们的生活产生了很大的影响,并将逐渐改变人们未来的生活方式。在特定的操作系统上开发应用程序,可以使开发人员忽略掉很多底层硬件细节,使得应用程序调试更方便、易于维护、开发周期缩短并且降低开发成本,因而嵌入式操作系统深得开发人员的青睐。 AVR 微处理器是Atmel公司开发的8位嵌入式RISC处理器,它具有高性能、高保密性、低转载 2012-04-02 14:02:01 · 608 阅读 · 0 评论 -
undefined reference to" 问题解决方
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(转载 2012-04-01 11:06:57 · 1946 阅读 · 0 评论 -
linux 下AVR开发环境的搭建
环境:Redhat 51. 我使用的版本binutils-2.22.tar.gzftp://ftp.gnu.org/gnu/binutilsgcc-core-4.2.2.tar.bz2ftp://ftp.informatik.rwth-aachen.de/pub/gnu/gcc/注意千万别下载4.9等版本,那是64bit机的,你用不了的。avr-libc-1.原创 2012-03-31 22:10:11 · 1674 阅读 · 0 评论 -
WinAVR使用快速入门
1. 运行PN,下面介绍PN如何编写、编译AVR C语言源程序的分解步骤:2. 新建工程组(Project Group) 3. 新建工程(Project) 4. 把工程保存为main的工程名(一定要先保存为main,以下大家就会清楚为什么了) 5. 点击“New”新建按钮,将建立一转载 2012-04-01 10:59:32 · 2546 阅读 · 0 评论 -
建立免费的编程环境 AVR Studio 4+WinAVR
从网上下载AVR Studio 4和 WinAVR 并安装.AVR Studio 4.18 (build 684)下载地址:http://www.atmel.com/dyn/resources/prod_documents/AvrStudio4Setup.exe在从官方网站下载AVR Studio 4.18 SP2补丁WinAVR-20100110(开源而且免费) 它支持AVR A转载 2012-03-31 09:18:16 · 6460 阅读 · 0 评论 -
在ICCAVR中通过使用库函数来避免直接看到敏感算法源码
在ICCAVR环境中,我们可以通过使用ilibw.exe工具来制作我们自己的函数库(需要是注册版的才行),详细的操作方法可以参见:ICCAVR所带帮助文档中TOOL REFRENCES部分Librarian一节。每次都需要到命令行方式下输入好几个命令未免不太方便,好在新的7.22版本中已经可以直接在IDE中完成整个操作了。下面就以7.22版为例说明详细的操作过程:1)库工程(AVRLib)转载 2012-03-30 19:09:55 · 733 阅读 · 0 评论