데이터 로거 프로젝트의 경우 6 시간마다 온도 값을 저장해야합니다. 티커의 최대 시간은 30 분입니다. 우리가 6 시간 또는 10 시간 같은 긴 duaration에서 인터럽트를 만들 수있는 방법이 있습니까 ??.6hrs마다 인터럽트를 만드는 방법
감사합니다.
데이터 로거 프로젝트의 경우 6 시간마다 온도 값을 저장해야합니다. 티커의 최대 시간은 30 분입니다. 우리가 6 시간 또는 10 시간 같은 긴 duaration에서 인터럽트를 만들 수있는 방법이 있습니까 ??.6hrs마다 인터럽트를 만드는 방법
감사합니다.
그래서 30 분마다 방해를 할 수 있습니다. ..
volatile int interruptCounter = 0;
void interruptFunction (void)
{
interruptCounter++;
if(interruptCounter == 12)
{
interruptcounter = 0;
/*
Do your stuff here
*/
}
}
왜 12 행의 모든 11 개 인터럽트를 무시하고 단지 12 일을 처리 할 수있는 유일한 방법이 있었다면? 0.5 시간마다 발생하는 인터럽트를 처리 할 수 있기 때문입니다. 따라서 6h max 카운터 값은 6/0.5 = 12, 10h는 10/0.5 = 20 등이 될 것입니다.
감사 Gravell – Gandhi
좋은 : +1. 그러나 여기에 '휘발성'은별로 의미가 없다. 로컬 범위 '정적 uint8_t'는 괜찮을 수 있습니다. 그리고'=='대신 항상'> ='를 검사하십시오. – LPs
@LPs 당신은 변수가 내부와 외부 인터럽트 함수 모두에 사용될 때만 'volatile'을 사용합니다. 인터럽트 함수 안에서'volatile '을 사용하는 습관이 있습니다. :) 그리고 당신은'> ='check로 맞지만이 경우에는 "interruptCounter == 12"점검을 "놓치지"않을 것입니다. – Gravell
어쨌든? * 여러 가지 방법이 있습니다. 시스템에 이미 중앙 I/O 루프가있는 경우 먼저 이미 그와 같은 기능을 가질 가능성이 있으므로 먼저 살펴보십시오. –
하나의 가능성 : 인터럽트 간격을 넣어 1 분을 말하고 자신을 계산하십시오. –