Timer là một loại ngoại vi được tích hợp ở hầu hết các vi điều khiển, cung cấp cho người dùng nhiều ứng dụng như xác định chính xác một khoảng thời gian, đo – đếm xung đầu vào, điều khiển dạng sóng đầu ra, băm xung….
Source code:
#include <Arduino.h>
#include <HardwareTimer.h>
#include <HardwareSerial.h>
#define LED1 PD2
#define LED2 PA8
#define LED3 PB11
#define INTERVAL1 1000000
#define INTERVAL2 1000000
#define INTERVAL3 1000000
HardwareTimer Timer1(TIM1);
HardwareTimer Timer2(TIM2);
HardwareTimer Timer3(TIM3);
HardwareSerial Serial_Mon(PA10, PA9); // RX, TX
void ngat1()
{
Serial_Mon.println("Interupt Timer 1");
int state = digitalRead(LED1);
if (state == HIGH)
{
digitalWrite(LED1, LOW);
}
else
{
digitalWrite(LED1, HIGH);
}
}
void ngat2()
{
Serial_Mon.println("Interupt Timer 2");
int state = digitalRead(LED2);
if (state == HIGH)
{
digitalWrite(LED2, LOW);
}
else
{
digitalWrite(LED2, HIGH);
}
}
void ngat3()
{
Serial_Mon.println("Interupt Timer 3");
int state = digitalRead(LED3);
if (state == HIGH)
{
digitalWrite(LED3, LOW);
}
else
{
digitalWrite(LED3, HIGH);
}
}
void setup()
{
Serial_Mon.begin(9600);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
Timer1.pause();
Timer1.setOverflow(INTERVAL1, MICROSEC_FORMAT);
Timer1.attachInterrupt(ngat1);
Timer1.resume();
Timer2.pause();
Timer2.setOverflow(INTERVAL2, MICROSEC_FORMAT);
Timer2.attachInterrupt(ngat2);
Timer2.resume();
Timer3.pause();
Timer3.setOverflow(INTERVAL3, MICROSEC_FORMAT);
Timer3.attachInterrupt(ngat3);
Timer3.resume();
}
void loop()
{
}
No comments:
Post a Comment