Не работает простой код
- Войдите на сайт для отправки комментариев
Втр, 17/03/2020 - 12:36
Доброго времени. Не работает простейший код. Светодиод загорается сразу.
Однако, если переменную вывести в порт - все работает как надо. 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); } }
Между 11 и 12 строкой встафь delay(1)
В чем может быть проблема?
Во времени исполнения кода.
Если добавите delay(1); включится через три секунды.
P/S Дида опередил.))))
А так - код работает именно так, как написан. Просто, слишком быстро
У тебя весь loop тиков за 10 процессора проходит.
Один тик это 62.5наносекунды.
Ну и 3000циклов, пролетают за 187микросекунд.
Что ты там увидеть хотел, какую задержку ?
Осциллографом посмотри, она там есть.
Не работает простейший код.
Неправда, - работает.
Светодиод загорается сразу.В чем может быть проблема?
Неправда, не сразу, а через 3000 проходов loop, т.е. примерно через 1/40 секунды.
Однако, если переменную вывести в порт - все работает как надо.
Прекрасно, только Вы забыли написать одну важную вещь - а как надо? Если Вы думаете. что все знают, как Вам надо, то таки нет :-(
Volatile не помогает.
А с чего ему помогать? Я Вам больше скажу, не поможет и static, и, даже, constexpr!
В чем может быть проблема?
В том, что Вы не написали чего Вы хотите и потому как-то помочь Вам невозможно. Коллеги выше попытались включить хрустальные шары и догадаться, что Вам надо, не знаю, насколько успешно.
Благодарю! Действительно, совсем упустил из виду время цикла. Помогли)
А главное - Вы упустили из виду написать, что же Вы хотели сделать. Имейте это в виду на будущее.