0
我寫了這個代碼:的Atmega 8中斷不起作用
#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) {
}
}
短的描述 - 適當的功能應該調用點擊按鈕後,但只有先點擊工作。如果我刪除while循環它的工作 - 但我必須檢查循環(溫度傳感器)。哪裏不對?
中斷處理程序中的一個無限循環對我來說似乎不是一個好主意:(另外,來自interupt狀態的'_delay_ms'調用聽起來很可疑,但我不知道操作系統 – 2014-09-29 17:20:37
謝謝 - 這就是我需要;)解決問題;) – henio180 2014-09-29 17:58:19