AVR定时器比较中断

发布者:平安幸福最新更新时间:2017-11-18 来源: eefocus关键字:AVR  定时器  比较中断 手机看文章 扫描二维码
随时随地手机看文章

最近打算自己做个蓝牙接收机,接在四轴上,于是研究下怎么输出4路PWM。

计划是用定时器中断,然后在中断的时候计算占空比,然后对指定的PIN脚做高低电平的切换。

折腾了半天才大致上了解了这方面的用法,下面的代码在16M的ATMEGA8芯片上实现了1秒中断一次。

void setup() {

    pinMode(13, OUTPUT);

   

   //禁止中断 

    cli();

    //TCNT1在这里是累加寄存器,一次时钟增加一次

    //TCNT1 = 0;

    // TCCR1控制寄存器

    TCCR1A = 0;

    TCCR1B = 0;

    // OCR1A是累加上限寄存器,调整这个值就可以控制频率了

    // 这里的15625是这样计算:16M / 1024 = 15625

    OCR1A = 15625;

    // 设置1024分频

    // 这里_BV是个宏,就是 1 << n 的作用,各种设置bit的写法好分裂的感觉。

    TCCR1B |= (_BV(CS12) | _BV(CS10));

    // WGM12控制的CTC模式,就是自己会把TCNT1给清0了,否则要手工清0

    TCCR1B |= 1 << WGM12;

    // 设置比较中断

    bitSet(TIMSK,  OCIE1A);

    //开启中断

    sei();

}

int flag = 0;

void loop() {

  // put your main code here, to run repeatedly:

}

ISR(TIMER1_COMPA_vect) {

    if (flag == 0) 

    {

        flag = 1;

        digitalWrite(13, HIGH);

    }

    else

    {

        flag = 0;

        digitalWrite(13, LOW);

    }

}


关键字:AVR  定时器  比较中断 引用地址:AVR定时器比较中断

上一篇:AVR定时器中断溢出
下一篇:ATMEGA128 PWM输出系列例程

推荐阅读最新更新时间:2024-03-16 15:45

51单片机程序——定时器控制蜂鸣器
#include reg52.h #define uint unsigned int sbit bb=P3^5; //位定义蜂鸣器接口 sbit led1=P0^0; //位定义LED接口 unsigned int i=0; void delay(uint z); //延迟函数声明 void main() { TMOD=0x01; //TMOD赋值,以确定T0和T1的工作方式 TH0=(65536-50000)/256; //计算初值,并将其写入TH0、TL0或TH1、TL1 TL0=(65536-50000)%6; E
[单片机]
AVR模拟比较器使用范例
/*********************************************** **** AVR 模拟比较器使用范例 *** **** 编译器:WINAVR20050214 *** ***********************************************/ /* 本程序简单的示范了如何使用ATMEGA16的模拟比较器 模拟比较器的设置 中断 方式 --较常用 查询方式不常用,检测ACO即可,可用作DELTA-SIGMA A/D CONVERTER,校正后精度比较高,但速度低,用汇编可以略为提高速度。 出于简化程序考虑,各种数据没有对外输出
[单片机]
STM32高级定时器之时钟源
1、定时器时钟源框图 从图片中可以看到定时器有4个时钟源, (1)内部时钟 ;(2) 外部时钟模式1,定时器的通道1、2 ; (3) 外部时钟模式模式2 ,ETR脚 ; (4)内部触发输入 下面分别介绍这几种时钟源的详细配置 2、内部时钟 寄存器SMCR的SMS选择000 3、外部时钟模式1 中文手册已经有以通道2为例子详细说明,这里我以通道1来说明,算是对它的温故和补充 3.1 滤波器设置,我的理解这里的滤波,比如我这里配置为0001,不是说通道来了N=2个脉冲才算这个输入有效,而是脉冲到来后,延时N/Fsampling的时间,还是高电平,就认为这个脉冲有效 类似按键检测的延时去抖动,如果理解
[单片机]
STM32高级<font color='red'>定时器</font>之时钟源
定时器的应用---中断方式---让8个LED灯,左右各4个来回亮
/*************************** 中断方式 是主程序专注于其他的事情, 待定时器中断时才执行中断子程序。 *****************************/ #include reg51.h #define LED P1 #define count 50000 // 50000 * 1us = 0.05s 机器周期1us 12MH晶振 #define TH_M1 (65536-count)/256 //TMOD 寄存器 方式 1 , 2^8 = 256 THX跟TLX都是8位 除以256取商赋值高4位 #define TL_M1 (65536-count)%256 //将余数
[单片机]
<font color='red'>定时器</font>的应用---<font color='red'>中断</font>方式---让8个LED灯,左右各4个来回亮
单片机学习笔记外部中断定时器,串口中断
CPU收到中断请求,停下正在处理的工作A,去处理事件B,处理完后继续回到中断的地方继续执行事件A的过程,称为中断 51有5个中断源 外部中断0 定时计数中断0 外部中断1 定时继续中断1 串口中断 MCS-51单片机中断系统的结构: 5个中断源的符号、名称及产生的条件如下。 INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。 INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。 T0:定时器/计数器0中断,由T0计满回零引起。 T1:定时器/计数器l中断,由T1计满回零引起。 TI/RI:串行I/O中断,串行端口完成一帧字符发送/接收后引起。
[单片机]
单片机学习笔记外部<font color='red'>中断</font>,<font color='red'>定时器</font>,串口<font color='red'>中断</font>
AVR串口多机通讯模式的应用
网友提问:   AVR的串口说有多机通讯功能,就是在第一帧发送从机的地址,再发数据,呢么请问,从机的地址是在什么地方写的呢?是从机自己就包含地址(硬件)还是在软件上给从机赋值?DATASHEET里面好像没写啊 马潮老师的解答:   根据你提的问题看,你对串口多机通信的过程是不清楚的,应该先深入了解和掌握多机通信的过程。   在多机通信过程中,所有设备的RS232接口是并在通信线上的,其中只能有一个设备为主机,其他为从机,通信由主机发起。数据帧一般采用1位起始位、9位数据位,其中第9位(RXB8)被用作为表征该帧是地址帧还是数据帧。当帧类型表征位为“1”时,表示该帧数据为一个地址帧;当帧类型表征位为“0”时,表示这个帧为一
[单片机]
ATtiny13 外部时钟
为了从外部时钟源驱动芯片, CLKI 必须如 Figure 12 所示的进行连接。同时,ATtiny13 熔丝位 CKSEL 必须编程为 “00”。 选择了这个振荡器之后,启动时间由熔丝位 SUT确定,如 Table 7 所示。 为了保证 MCU 能够稳定工作,不能突然改变外部时钟源的振荡频率。工作频率突变超过 2%将会产生异常现象。应该在 MCU 保持复位状态时改变外部时钟的振荡频率。 注意,系统时钟预分频器可用来实现内部时钟频率运行时间改变且保证稳定工作,详见P24“ 系统时钟预分频器 ” 。
[单片机]
ATtiny13 外部时钟
AVR读写外部RAM时出现的问题
AVR读写外部RAM时出现的问题 问: 1 , 对AT90S8515来说,外部RAM的地址肯定是从0x0260开始的? 2,我用ICE200仿真8515读写外部RAM,RAM大小为32K Bytes,地址映射到0x0000-0x7fff,用PC7做它的片选。把SRE置为1,当我访问0x0300时PC7为低,这是对的,但当我不去访问0x0000-0x7fff地址空间时(例如进入死循环),问题出现了,此时PC7仍为低,按道理应为高的。这是阿AVR与51的不同,还是我弄错了。 答: 1、对AT90S8515来说,外部RAM的地址肯定是从0x0260开始的。这是没问题的,访问0x0000-0x025F的地址为内部RAM。 2、当你访问过0
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved