首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Atmega 8中断不起作用

Atmega 8中断不起作用
EN

Stack Overflow用户
提问于 2014-09-29 17:07:23
回答 1查看 166关注 0票数 0

我写了这段代码:

代码语言:javascript
运行
复制
#define __AVR_LIBC_DEPRECATED_ENABLE__
#include <avr/delay.h>
#include <avr/io.h>
#include "lcd.h"
#include <avr/interrupt.h>

int screen = 0;

void insideTemp(void) {

    while (1) {
       //some code hiere
    }
}

void setup(void) {
    LCDInit(LS_NONE);
    MCUCR |= (1 << ISC01);
    GICR |= (1 << INT0);
    sei();
    DDRD = 0xff;
    ADMUX = (1 << REFS0) | (1 << ADLAR);
    ADCSRA = (1 << ADEN) | (1 << ADFR) | (1 << ADPS2);
}

SIGNAL(SIG_INTERRUPT0) {
    screen++;
    LCDClear();
    _delay_ms(10);
    switch (screen) {
    case 1:
        insideTemp();
        break;
    case 2:
        outsideTemp();
        break;
    case 3:
        engineTemp();
        break;
    default:
        screen = 0;
        insideTemp();
    }
}

int main(void) {
    setup();

    while (1) {

    }
}

简短的描述-正确的功能应该在点击按钮后调用,但只需先点击工作。如果我删除check循环,它可以工作,但我必须检查循环中的东西(温度传感器)。怎么啦?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-29 19:09:10

中断处理程序中的无限循环似乎不是一个好主意:(而且,来自中断状态的'_delay_ms‘调用听起来很可疑,但我不知道操作系统,所以它可能,也可能不确定。

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

https://stackoverflow.com/questions/26105225

复制
相关文章

相似问题

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