Здравствуйте. "Напрограммировал" себе таймер и он даже тикает но есть проблема, которую не знаю, как побороть. После нажатия кнопки старт он начинает отсчитывать секунды с некоторым запозданием. Может кто по коду подскажет?
Здравствуйте. "Напрограммировал" себе таймер и он даже тикает но есть проблема, которую не знаю, как побороть. После нажатия кнопки старт он начинает отсчитывать секунды с некоторым запозданием. Может кто по коду подскажет?
Комментарии: 28
Anton
Почему - то мне кажется проблема в строчке: if(i==40){i=0;seconds--; }; ведь i инкрементится в перывании и на момент вызова start_count может иметь произвольное значение. P.S. Оформление кода! Не неслышал. Однобуквенные глобальные переменные, отступы как попало. Читать почти невозможно :)
Paschendale
Почему - то мне кажется проблема в строчке: if(i==40){i=0;seconds--; }; это да, задержка отсчета после нажатия кнопки старт всегда разная. если обнулить эту переменную в функции, то отсчет вообще прекратится. так что я не вижу выхода из ситуации, которая сложилась в моих писюльках. Оформление кода! Не неслышал. Когда я рылся в чужой писанине, пришел к выводу, что каждый пишет так, как хочет. Вот и тоже так пишу) а почему однобуквенные глобальные переменные это плохо?
Pihto
режь красный провод!
Paschendale
у меня там нет такого
Pihto
Тогда, просто задай грамотно стартовые значения всех переменных. И, всё-таки, глобальные переменные начинай, типа, с буквы g... что ли. И да их бы неплохо сделать волатильными Ты же их через прерывание зовёшь, а значит, может быть труднопонимаемая каша. И это... а где у Тебя хоть что-то происходит с i? А, вижу
Anton
Все глобальные переменные волатильными делать не надо, volatile применяется только тогда, когда доступ к переменной происходит из прерывания и основного кода программы. Для того чтобы оптимизатор не выпилил лишнего. Это все, точка! В остальном volatile только мешает делать компилятору его работу.
Pihto
Антон, да. Я просто, судорожно пытаюсь развидеть это оформление )))
Paschendale
согласен с критикой. исправлюсь.
Anton
Если так уж лень самостоятельно расставлять отступы, воспользуйся хоть автоматическим оформлятором типа clang-format или uncrustify. Но такую писанину показывать на публику, ну такое себе :))
Paschendale
ну я и так уже до корней волос красный, хорош уж меня пинать)
Pihto
Не поленитесь, пожалуйста, пробежать взглядом этот документ http://geosoft.no/development/cppstyle.html Ну и, фактически, русскоязычная калька. https://habr.com/ru/post/172091/
Newalyashka
Мне вот эта зашла, по ней учил Си.
Paschendale
Спасибо. Очень бы хотел, чтобы и мне что-то хорошо зашло)
Newalyashka
У меня есть она в коллекции)) у меня дома целая библиотека по электроники)) Посмотри, может тоже понравится)) мне вообще зашла, другие не так пошли.
Andrey
Ну это великолепно) что много этого есть
Anonim
Чем она лучше классики от k&r?
Newalyashka
Керниган и Ритчи не читал, может глазами пробежался только максимум. Дейтел много задач, в общем мне интересно было её читать, по ней и учил Си. Керниган и Ритчи вроде тоже норм, не пробовал учиться по ней.
Unsupported
мне книги Г.Шилдта понравились, у него по С, ++, # есть книги, но вот перевод бывает не очень точный, увы. я в книге по крестам находил пару фактических ошибок. в оригинале этого не было
Newalyashka
а есть в свободном доступе?
Artemka
Я лет 7 назад очень много усилий приложил что бы найти Шилдта по плюсам Эта книга over100500 лет как не печатается.
Andrey
покажи кусочек своего кода. Что бы начинающие раз видели как делать)
Anton
Че попроще: Че попроще: https://github.com/a-sv/cbor Че посложней на плюсах: https://github.com/a-sv/lmcu/tree/testing
Paschendale
Точно. Стоило задать правильное значение глобальной переменой, которая инкрементируется в обработчике прерывания, всё запахало как стоит быть. Дед, ты осчастливил нуба
Pihto
Как много человеку мало ))))
Paschendale
Глубоко философская мысль. Чувствуется влияние марксистско-ленинской философии, правда в ее перевёрнутом с ног на голову состоянии.
Pihto
Маркс и Энгельс, тоже не муж и жена, а два разных человека.
Anton
Оформление кода - пишу как хочу. Збс. А если бы я написал книгу и совершенно случайно забыл расставить пробелы между словами, вы бы стали читать такую? Чужой код и так читать заметно сложнее своего, так еще оформление пиздец. Посмотрите на общепринятые стандарты оформления кода и выберете один из них. Глобальные переменные это плохо, но иногда без них никак. Глобальная переменная с именем i - это феерический пиздец, извините за мой французский :) Именем i можно обозвать счетчик цикла, но никак не глобальную переменную....