stm32, тест, непонятка с чтением состояния пина
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: stm32, тест, непонятка с чтением состояния пина
Там ещё один момент есть. Если закомментировать код чтения кнопки, то компилятор запросто может увидеть, что flag_btn будет всегда равен нулю и даже не будет проверять условие if(flag_btn) как бессмысленное. Но, конечно же, всякую хрень на форуме писать проще, чем листинг посмотреть.
- Реклама
Re: stm32, тест, непонятка с чтением состояния пина
> Но, конечно же, всякую хрень на форуме писать проще, чем листинг посмотреть.
точо-точно... бузить проще... :о)
а если листинг и LL - вообще вне понимания?! для чего тогда форум?! (это был риторический вопрос... и ответ не входит в тему топика :о)
подсказали - хорошо, обьяснили подробнее - замечательно... а вот бузить не надо! :о)
давай по теме?! я готов слушать вас всю свою биографию (с)
точо-точно... бузить проще... :о)
а если листинг и LL - вообще вне понимания?! для чего тогда форум?! (это был риторический вопрос... и ответ не входит в тему топика :о)
подсказали - хорошо, обьяснили подробнее - замечательно... а вот бузить не надо! :о)
давай по теме?! я готов слушать вас всю свою биографию (с)
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
p.s. держитесь обоими руками, а то прорвет...
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: stm32, тест, непонятка с чтением состояния пина
Можно подумать, это МНЕ надо 
Re: stm32, тест, непонятка с чтением состояния пина
конечно, вот выговорились и ... на душе полегчало :о)
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
p.s. держитесь обоими руками, а то прорвет...
Re: stm32, тест, непонятка с чтением состояния пина
если коротко:
сделайте задержку на таймере и эта проблема исчезнет.
а с другой стороны Вы теперь догадываетесь, что один и тот же код может скомпилироваться по разному.
смотрите тело цикла
в первом варианте cnt ячейка памяти, чтобы ее проверять/менять надо сформировать адрес и по нему обратиться.
во втором - компилятор видит: суеты между заходами на проверку cnt мало - и делает cnt как регистр, а чтобы обращаться с регистром адрес не нужен, т.е. времени на проверить/поменять нужно в разы меньше.
вот и получается распил Дружбой2 одно время, а дисковой пилой другое.
но как говорил - лучше не пилить, а поставить будильник - будет строго по времени.
чтобы что-то начать понимать в листинге достаточно начальных представлений о ассемблере (любом)
как Владислав уже кому-то говорил:
имейте ввиду, если уровень оптимизации отличен от 0, у вашего кода есть соавтор.
(чуть-чуть перефразировал)
сделайте задержку на таймере и эта проблема исчезнет.
а с другой стороны Вы теперь догадываетесь, что один и тот же код может скомпилироваться по разному.
смотрите тело цикла
Код: Выделить всё
по исходному варианту:
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 как регистр, а чтобы обращаться с регистром адрес не нужен, т.е. времени на проверить/поменять нужно в разы меньше.
вот и получается распил Дружбой2 одно время, а дисковой пилой другое.
но как говорил - лучше не пилить, а поставить будильник - будет строго по времени.
чтобы что-то начать понимать в листинге достаточно начальных представлений о ассемблере (любом)
как Владислав уже кому-то говорил:
имейте ввиду, если уровень оптимизации отличен от 0, у вашего кода есть соавтор.
(чуть-чуть перефразировал)
- Реклама
Re: stm32, тест, непонятка с чтением состояния пина
класс! вот это по нашему, по котовски! низкий поклон, добрый человек вам в пояс! а так-же всем кто помогает ползущему в столь тяжком деле :о)
> достаточно начальных представлений о ассемблере (любом)
ясен пень :о) обстоятельства не позволяют...
спасибо
> достаточно начальных представлений о ассемблере (любом)
ясен пень :о) обстоятельства не позволяют...
спасибо
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
p.s. держитесь обоими руками, а то прорвет...
Re: stm32, тест, непонятка с чтением состояния пина
по сути вопроса: почему сильно изменилось время выполнения при не сильном изменении кода.
ответил Владислав: какие-то переменные сменили свою дислокацию память/регистр.
я только взял на себя труд пожувать
ответил Владислав: какие-то переменные сменили свою дислокацию память/регистр.
я только взял на себя труд пожувать
Re: stm32, тест, непонятка с чтением состояния пина
для "начала" это самое главное :о) разложить все по полочкам :о)... муррр
ну а когда все "понятия" лежат там где надо, основы/база "правильно" сформированы и заложены то ... достаточно "ключевых слов", без обьяснения к.л. тонкостей, ведь так?! :о)
ну а когда все "понятия" лежат там где надо, основы/база "правильно" сформированы и заложены то ... достаточно "ключевых слов", без обьяснения к.л. тонкостей, ведь так?! :о)
Енот - это кот, только инкогнито!
p.s. держитесь обоими руками, а то прорвет...
p.s. держитесь обоими руками, а то прорвет...


