사용자 도구

사이트 도구


commands:reference:itimerset

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
commands:reference:itimerset [2026/09/08 00:53] – 바깥 편집 127.0.0.1commands:reference:itimerset [2026/09/12 22:54] (현재) – 바깥 편집 127.0.0.1
줄 15: 줄 15:
  
 ===== 예제 ===== ===== 예제 =====
 +
 +기본 콜백 타이머(Timer2)를 사용합니다. 콜백에서는 플래그만 바꾸고 시리얼 출력은 ''loop()''에서 수행합니다.
  
 <code cpp> <code cpp>
줄 24: 줄 26:
  
 void setup() { void setup() {
-  pinMode(13, OUTPUT); +  Serial.begin(115200); 
-  ItimerSet(1000, onTimer);  // 와 콜백 함수 또는 사용할 하드웨어 타이머를 설정합니다. +  if (!ItimerSet(1000, onTimer)) return;  // 기본 하드웨어 타이머의 콜백과 1초 주기를 설정합니다. 
-  ItimerStart();  // 설정한 콜백 타이머를 시작합니다.+  ItimerStart();  // 설정한 콜백 타이머를 실행합니다.
 } }
  
 void loop() { void loop() {
   if (tick) {   if (tick) {
 +    noInterrupts();
     tick = false;     tick = false;
-    digitalWrite(13, !digitalRead(13));+    interrupts(); 
 +    Serial.println(F("tick"));
   }   }
 } }
줄 39: 줄 43:
 ===== 주의사항 ===== ===== 주의사항 =====
  
-  * 타임 인터럽트 콜백은 ISR 안에서 실행다. 콜백 안에서는 플래그만 바꾸고 실제 제어 처리는 ''loop()''에서 수행하는 것이 안전하다. +  * 콜백은 인터럽트에서 실행됩니다. 콜백 안에서는 플래그만 바꾸고 ''delay()''·''Serial''·I2C·SPI를 사용하지 마십시오
-  * 콜백 안에서 ''delay()''''Serial'', I2C, SPI처럼 오래 걸리거나 인터럽트에 의존하는 코드는 사용하지 않는다+  * 인수를 생략한 콜백 타이머는 Timer2를 사용합니다. 같은 타이머를 쓰는 ''tone()''이나 PWM 출력과 동시에 사용하지 마십시오
-  * Modbus RTU는 기본적으로 ''loop()''에서 ''ImodbusRTU()''를 반복 호출다. ''loop()''가 긴 ''delay()''나 디버그 출력 때문에 늦어지는 경우에만 충분한 주기의 타임 인터럽트에서 ''ImodbusRTU()''를 호출한다. +  * 다른 하드웨어 타이머를 지정할 때도 해당 타이머를 사용하는 PWM·아날로그 출력·고속카운터 기능과 중복되는지 확인하십시오
-  * Timer2를 쓰는 ''tone()'' 또는 Timer2 PWM 핀의 ''analogWrite()''와 기본 ''ItimerSet()''은 동시에 사용하지 않는다+  * 주기가 0나 콜백이 없으면 설정에 실패고 false를 반환합니다.
-  * Timer1, Timer3, Timer4, Timer5를 명시적으로 사용하면 해당 타이머를 는 PWM, 아날로그 출력고속카운터 기능과 충돌할 수 있다+
-  * 같은 하드웨어 타머에는 하의 ''Itimer'' 콜백만 설정한다. +
-  * 스케치서 같은 타이머의 ISR을 직접 정의면 ''Itimer'' 동작과 충돌할 수 있다. +
-  * ''ItimerStopAll()''은 하드웨어 인터럽트 타이머만 정지한다. ''Iton'', ''Itof'', ''Itmr'' 같은 PLC 스타일 타이머 상태는 초기화하지 않는다.+
  
 ===== 같은 카테고리의 내장 명령어 ===== ===== 같은 카테고리의 내장 명령어 =====
commands/reference/itimerset.1788796403.txt.gz · 마지막으로 수정됨: 저자 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki