Не работает простой код

merkava
Offline
Зарегистрирован: 17.03.2020

Доброго времени. Не работает простейший код. Светодиод загорается сразу.
Однако, если переменную вывести в порт - все работает как надо. Volatile не помогает.

В чем может быть проблема?

const uint8_t led_pin = 3;//диод

unsigned int p = 0;

void setup() {
  pinMode(led_pin, OUTPUT);
  Serial.begin (9600);
}

void loop() {
 p ++;
    if ( p >= 3000){
digitalWrite (led_pin, HIGH);
  }
  
}
DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Между 11 и 12 строкой встафь delay(1)

bwn
Offline
Зарегистрирован: 25.08.2014

merkava пишет:

В чем может быть проблема?

Во времени исполнения кода.
Если добавите delay(1); включится через три секунды.

P/S Дида опередил.))))

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

А так - код работает именно так, как написан. Просто, слишком быстро

Kakmyc
Offline
Зарегистрирован: 15.01.2018

У тебя весь loop тиков за 10 процессора проходит.
Один тик это 62.5наносекунды.
Ну и 3000циклов, пролетают за 187микросекунд.
Что ты там увидеть хотел, какую задержку ?
Осциллографом посмотри, она там есть.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

merkava пишет:

Не работает простейший код.

Неправда, - работает.

merkava пишет:

Светодиод загорается сразу.В чем может быть проблема?

Неправда, не сразу, а через 3000 проходов loop, т.е. примерно через 1/40 секунды.

merkava пишет:

Однако, если переменную вывести в порт - все работает как надо.

Прекрасно, только Вы забыли написать одну важную вещь - а как надо? Если Вы думаете. что все знают, как Вам надо, то таки нет :-(

merkava пишет:

Volatile не помогает.

А с чего ему помогать? Я Вам больше скажу, не поможет и static, и, даже, constexpr!

merkava пишет:

В чем может быть проблема?

В том, что Вы не написали чего Вы хотите и потому как-то помочь Вам невозможно. Коллеги выше попытались включить хрустальные шары и догадаться, что Вам надо, не знаю, насколько успешно.

merkava
Offline
Зарегистрирован: 17.03.2020

Благодарю! Действительно, совсем упустил из виду время цикла. Помогли)

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А главное - Вы упустили из виду написать, что же Вы хотели сделать. Имейте это в виду на будущее.