首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Arduino上的Timer1使串行打印无法正常工作

Arduino上的Timer1使串行打印无法正常工作
EN

Stack Overflow用户
提问于 2015-03-05 22:29:43
回答 5查看 7K关注 0票数 3

运行下面的代码,当我从串行监视器向Arduino发送任何字符时,Arduino不打印"a“back。我认为这是timer1代码的问题,但它应该可以工作,因为这段代码是我的老师在C课上给我的。

代码语言:javascript
运行
复制
void setup() {
    Serial.begin(115200);
    
    // http://www.instructables.com/id/Arduino-Timer-Interrupts/?ALLSTEPS
    noInterrupts();
    TCCR1A = 0;// set entire TCCR1A register to 0
    TCCR1B = 0;// same for TCCR1B
    TCNT1  = 0;//initialize counter value to 0
    // set compare match register for 1000000hz increments with 8 bits prescaler
    OCR1A = 1;// = (16*10^6) / (1000000*8) - 1 (must be <65536)
    // turn on CTC mode
    TCCR1B |= (1 << WGM12);
    // Set CS11 bit for 8 prescaler. Each timer has a different bit
    // code to each prescaler
    TCCR1B |= (1 << CS11);  
    // enable timer compare interrupt
    TIMSK1 |= (1 << OCIE1A);
    interrupts();
}

void loop() {
    if (Serial.available()) {
        Serial.println("a");
    }
}

另请参阅:http://www.instructables.com/id/Arduino-Timer-Interrupts/?ALLSTEPS

EN

Stack Overflow用户

发布于 2016-08-09 03:01:54

根据程序需要如何处理如此快速的中断,例如在输出引脚上生成高速时钟,可以在硬件中使用TCCR1A中的COM位(从我的内存中取出4个最高有效位)在与定时器相关的引脚上切换输出,而无需编写任何ISR()回调来在软件中处理定时器中断。

票数 1
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28880226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档