stm32, тест, непонятка с чтением состояния пина

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: stm32, тест, непонятка с чтением состояния пина

Сообщение VladislavS »

Там ещё один момент есть. Если закомментировать код чтения кнопки, то компилятор запросто может увидеть, что flag_btn будет всегда равен нулю и даже не будет проверять условие if(flag_btn) как бессмысленное. Но, конечно же, всякую хрень на форуме писать проще, чем листинг посмотреть.
Реклама
Аватара пользователя
sunjob
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Ср дек 08, 2010 19:03:17

Re: stm32, тест, непонятка с чтением состояния пина

Сообщение sunjob »

> Но, конечно же, всякую хрень на форуме писать проще, чем листинг посмотреть.
точо-точно... бузить проще... :о)
а если листинг и LL - вообще вне понимания?! для чего тогда форум?! (это был риторический вопрос... и ответ не входит в тему топика :о)
подсказали - хорошо, обьяснили подробнее - замечательно... а вот бузить не надо! :о)

давай по теме?! я готов слушать вас всю свою биографию (с)
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: stm32, тест, непонятка с чтением состояния пина

Сообщение VladislavS »

Можно подумать, это МНЕ надо :)
Аватара пользователя
sunjob
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Ср дек 08, 2010 19:03:17

Re: stm32, тест, непонятка с чтением состояния пина

Сообщение sunjob »

конечно, вот выговорились и ... на душе полегчало :о)
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
Реклама
Эиком - электронные компоненты и радиодетали
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: stm32, тест, непонятка с чтением состояния пина

Сообщение a797945 »

если коротко:
сделайте задержку на таймере и эта проблема исчезнет.

а с другой стороны Вы теперь догадываетесь, что один и тот же код может скомпилироваться по разному.
смотрите тело цикла

Код: Выделить всё

по исходному варианту:
  if(!cnt--) {flag_time=1; cnt=TIMER_CNT;}
  if(flag_time)
    {
     flag_time = 0;
     if(Read8) {LED_B_CLR;}else{LED_B_SET;}
     if(flag_btn)  {  
         flag_btn = 0;
         if(Read9) {LED_G_CLR;}else{ LED_G_SET;} }
    }
  if(Read0) {flag_btn = 1;}

без опроса кнопки: (flag_btn всегда =0, т.е. и проверять ее незачем)
  if(!cnt--) {flag_time=1; cnt=TIMER_CNT;}
  if(flag_time)
    {
     flag_time = 0;
     if(Read8) {LED_B_CLR;}else{LED_B_SET;}
    }
в первом варианте cnt ячейка памяти, чтобы ее проверять/менять надо сформировать адрес и по нему обратиться.
во втором - компилятор видит: суеты между заходами на проверку cnt мало - и делает cnt как регистр, а чтобы обращаться с регистром адрес не нужен, т.е. времени на проверить/поменять нужно в разы меньше.
вот и получается распил Дружбой2 одно время, а дисковой пилой другое.
но как говорил - лучше не пилить, а поставить будильник - будет строго по времени.

чтобы что-то начать понимать в листинге достаточно начальных представлений о ассемблере (любом)

как Владислав уже кому-то говорил:
имейте ввиду, если уровень оптимизации отличен от 0, у вашего кода есть соавтор.
(чуть-чуть перефразировал)
Реклама
Аватара пользователя
sunjob
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Ср дек 08, 2010 19:03:17

Re: stm32, тест, непонятка с чтением состояния пина

Сообщение sunjob »

класс! вот это по нашему, по котовски! низкий поклон, добрый человек вам в пояс! а так-же всем кто помогает ползущему в столь тяжком деле :о)

> достаточно начальных представлений о ассемблере (любом)
ясен пень :о) обстоятельства не позволяют...

спасибо
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
Реклама
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: stm32, тест, непонятка с чтением состояния пина

Сообщение a797945 »

по сути вопроса: почему сильно изменилось время выполнения при не сильном изменении кода.
ответил Владислав: какие-то переменные сменили свою дислокацию память/регистр.
я только взял на себя труд пожувать
Аватара пользователя
sunjob
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Ср дек 08, 2010 19:03:17

Re: stm32, тест, непонятка с чтением состояния пина

Сообщение sunjob »

для "начала" это самое главное :о) разложить все по полочкам :о)... муррр
ну а когда все "понятия" лежат там где надо, основы/база "правильно" сформированы и заложены то ... достаточно "ключевых слов", без обьяснения к.л. тонкостей, ведь так?! :о)
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
Ответить

Вернуться в «ARM»