Здравствуйте. "Напрограммировал" себе таймер и он даже тикает но есть проблема, которую не знаю, как побороть. После нажатия кнопки старт он начинает отсчитывать секунды с некоторым запозданием. Может кто по коду подскажет?

Комментарии: 28

  1. 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. Но такую писанину показывать на публику, ну такое себе :))

                  • Newalyashka

                    Мне вот эта зашла, по ней учил Си.

                    • Paschendale

                      Спасибо. Очень бы хотел, чтобы и мне что-то хорошо зашло)

                      • Newalyashka

                        У меня есть она в коллекции)) у меня дома целая библиотека по электроники)) Посмотри, может тоже понравится)) мне вообще зашла, другие не так пошли.

                        • Andrey

                          Ну это великолепно) что много этого есть

                    • Anonim

                      Чем она лучше классики от k&r?

                      • Newalyashka

                        Керниган и Ритчи не читал, может глазами пробежался только максимум. Дейтел много задач, в общем мне интересно было её читать, по ней и учил Си. Керниган и Ритчи вроде тоже норм, не пробовал учиться по ней.

                        • Unsupported

                          мне книги Г.Шилдта понравились, у него по С, ++, # есть книги, но вот перевод бывает не очень точный, увы. я в книге по крестам находил пару фактических ошибок. в оригинале этого не было

                          • Newalyashka

                            а есть в свободном доступе?

                            • Artemka

                              Я лет 7 назад очень много усилий приложил что бы найти Шилдта по плюсам Эта книга over100500 лет как не печатается.

              • Andrey

                покажи кусочек своего кода. Что бы начинающие раз видели как делать)

            • Paschendale

              Точно. Стоило задать правильное значение глобальной переменой, которая инкрементируется в обработчике прерывания, всё запахало как стоит быть. Дед, ты осчастливил нуба

              • Pihto

                Как много человеку мало ))))

                • Paschendale

                  Глубоко философская мысль. Чувствуется влияние марксистско-ленинской философии, правда в ее перевёрнутом с ног на голову состоянии.

                  • Pihto

                    Маркс и Энгельс, тоже не муж и жена, а два разных человека.

      • Anton

        Оформление кода - пишу как хочу. Збс. А если бы я написал книгу и совершенно случайно забыл расставить пробелы между словами, вы бы стали читать такую? Чужой код и так читать заметно сложнее своего, так еще оформление пиздец. Посмотрите на общепринятые стандарты оформления кода и выберете один из них. Глобальные переменные это плохо, но иногда без них никак. Глобальная переменная с именем i - это феерический пиздец, извините за мой французский :) Именем i можно обозвать счетчик цикла, но никак не глобальную переменную....

Не нашли ответ?

Вам также может быть интересно