// #if CONFIG_FREERTOS_UNICORE
// static const BaseType_t app_cpu = 0;
// #else
// static const BaseType_t app_cpu = 1;
// #endif
static const BaseType_t pro_cpu = 0;
static const BaseType_t app_cpu = 1;
//int led_pin = 48;
//const char msg[] = "RTOS is working woow";
#define in_1 42
#define in_2 41
#define in_3 40
#define out_1 7
#define out_2 6
#define out_3 5
bool cmd[3] = {0,0,0};
static TaskHandle_t task_readInputs = NULL;
static TaskHandle_t task_cmdOutputs = NULL;
static SemaphoreHandle_t bin_sem;
void cmd_outputs(void *paramter){
xSemaphoreTake(bin_sem,portMAX_DELAY);
while(1){
if(cmd[0]) digitalWrite(out_1,HIGH); else digitalWrite(out_1,LOW);
if(cmd[1]) digitalWrite(out_2,HIGH); else digitalWrite(out_2,LOW);
if(cmd[2]) digitalWrite(out_3,HIGH); else digitalWrite(out_3,LOW);
// Serial.println("********");
// Serial.print("out1 : ");
// Serial.print(cmd[0]);
// Serial.println();
// Serial.print("out2 : ");
// Serial.print(cmd[1]);
// Serial.println();
// Serial.print("out3 : ");
// Serial.print(cmd[2]);
// Serial.println();
// Serial.println("********");
vTaskDelay(10/portTICK_PERIOD_MS);
}
}
void read_inputs(void *paramter){
bool in1=0;
bool in2=0;
bool in3=0;
xSemaphoreGive(bin_sem);
while(1){
in1 = digitalRead(in_1);
if(in1) cmd[0]=1; else cmd[0]=0;
in2 = digitalRead(in_2);
if(in2) cmd[1]=1; else cmd[1]=0;
in3 = digitalRead(in_3);
if(in3) cmd[2]=1; else cmd[2]=0;
// Serial.println("********");
// Serial.print("in1 : ");
// Serial.print(in1);
// Serial.println();
// Serial.print("in2 : ");
// Serial.print(in2);
// Serial.println();
// Serial.print("in3 : ");
// Serial.print(in3);
// Serial.println();
// Serial.println("********");
vTaskDelay(10/portTICK_PERIOD_MS);
}
}
void setup() {
// put your setup code here, to run once:
// Serial.begin(115200);
// vTaskDelay(1000/portTICK_PERIOD_MS);
// Serial.println();
// Serial.println("start...");
pinMode(in_1, INPUT);
pinMode(in_2, INPUT);
pinMode(in_3, INPUT);
pinMode(out_1, OUTPUT);
pinMode(out_2, OUTPUT);
pinMode(out_3, OUTPUT);
bin_sem = xSemaphoreCreateBinary();
xTaskCreatePinnedToCore(cmd_outputs,"task1", 1024,NULL,1,&task_readInputs,app_cpu);
xTaskCreatePinnedToCore(read_inputs,"task2", 1024,NULL,1,&task_cmdOutputs,pro_cpu);
}
void loop() {
// put your main code here, to run repeatedly:
// delay(10); // this speeds up the simulation
// for(int i=0;i<3;i++){
// vTaskSuspend(task_cmdOutputs);
// vTaskDelay(2000/portTICK_PERIOD_MS);
// vTaskResume(task_cmdOutputs);
// vTaskDelay(2000/portTICK_PERIOD_MS);
// }
// if(task_readInputs != NULL ){
// vTaskDelete(task_readInputs);
// task_readInputs = NULL;
// }
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1