//#include "hw_timer.h"
volatile int Dim_Val1 = 2, Dim_Val2 = 3;
hw_timer_t *timer0 = NULL;
hw_timer_t *timer1 = NULL;
// define the GPIO connected with Zero Crossing
//static uint8_t ZC1 = 34; // Zero crossing i/p
//static uint8_t ZC2 = 35;
#define ZC1 34
#define ZC2 35
// define the GPIO connected with Dimmer o/p
//static unit8_t Dim1 = 22; // Dimmer o/p
//ststic unit8_t Dim2 = 1;
#define Dim1 22
#define Dim2 23
portMUX_TYPE timer0Mux = portMUX_INITIALIZER_UNLOCKED;
portMUX_TYPE timer1Mux = portMUX_INITIALIZER_UNLOCKED;
portMUX_TYPE zc0Mux = portMUX_INITIALIZER_UNLOCKED;
portMUX_TYPE zc1Mux = portMUX_INITIALIZER_UNLOCKED;
// External Interrupts
void IRAM_ATTR Ext_INT1_ISR(){
// Toggle The LED
portENTER_CRITICAL_ISR(&zc0Mux);
digitalWrite(Dim1, HIGH);
timerWrite(timer0,0);
timerStart(timer0);
timerAlarmWrite(timer0, (Dim_Val1 * 1000000), false);
//timerRestart(timer0);
timerAlarmEnable(timer0);
portEXIT_CRITICAL_ISR(&zc0Mux);
}
void IRAM_ATTR Ext_INT2_ISR(){
// Toggle The LED
portENTER_CRITICAL_ISR(&zc1Mux);
digitalWrite(Dim2, HIGH);
timerAlarmWrite(timer1, (Dim_Val2 * 1000000), false);
timerRestart(timer1);
timerAlarmEnable(timer1);
portEXIT_CRITICAL_ISR(&zc1Mux);
}
//TImer0 is used to produce a sum of numbers every 0.5 seconds
void IRAM_ATTR onTimer0(){
portENTER_CRITICAL_ISR(&timer0Mux);
digitalWrite(Dim1, LOW);
portEXIT_CRITICAL_ISR(&timer0Mux);
timerStop(timer0);
}
//TImer1 is used to generate fibonaccu rows every 0.9 seconds
void IRAM_ATTR onTimer1(){
portENTER_CRITICAL_ISR(&timer1Mux);
digitalWrite(Dim2, LOW);
portEXIT_CRITICAL_ISR(&timer1Mux);
//timerStop(timer1);
}
void setup() {
//
pinMode(Dim1, OUTPUT);
pinMode(Dim2, OUTPUT);
pinMode(ZC1, INPUT);
pinMode(ZC2, INPUT);
attachInterrupt(ZC1, Ext_INT1_ISR, RISING);
attachInterrupt(ZC2, Ext_INT2_ISR, RISING);
// put your setup code here, to run once:
Serial.begin(115200);
timer0 = timerBegin(0, 80, true);
timerAttachInterrupt(timer0, &onTimer0, true);
//timerAlarmWrite(timer0, 10000, false);
//timerAlarmEnable(timer0);
timer1 = timerBegin(1, 80, true);
timerAttachInterrupt(timer1, &onTimer1, true);
//timerAlarmWrite(timer1, 10000, false);
//timerAlarmEnable(timer1);
}
void loop() {
// Dim_1 = Dim_Val1 * 1000000;
//Dim_2 = Dim_Val2 * 1000000;
}
esp:0
esp:2
esp:4
esp:5
esp:12
esp:13
esp:14
esp:15
esp:16
esp:17
esp:18
esp:19
esp:21
esp:22
esp:23
esp:25
esp:26
esp:27
esp:32
esp:33
esp:34
esp:35
esp:3V3
esp:EN
esp:VP
esp:VN
esp:GND.1
esp:D2
esp:D3
esp:CMD
esp:5V
esp:GND.2
esp:TX
esp:RX
esp:GND.3
esp:D1
esp:D0
esp:CLK
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
r1:1
r1:2
r2:1
r2:2
r3:1
r3:2
r4:1
r4:2
led1:A
led1:C
led2:A
led2:C