Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.12.2013, 12:37   #1
sunjob
Member
 
Регистрация: 16.11.2013
Сообщений: 32
Вес репутации: 0
sunjob is an unknown quantity at this point
По умолчанию Ардуино, оптимизация условия if()

добрый день.

немного оптимизирую код, на данном этапе хочу попробовать заменить "условия" след. образом

#define BTN_A 1
#define BTN_B 2
#define BTN_C 3
#define BTN_D 4

if(BTN_PRESS == BTN_A)

-->

#define BTN_A 1
#define BTN_B 2
#define BTN_C 4
#define BTN_D 8

... в коде инициализация (BTN_PRESS - это не макрос, а переменная, для дотошных пусть будет беззнаковая целая)
BTN_PRESS = BTN_A
BTN_PRESS = BTN_В
BTN_PRESS = BTN_С
etc...

... битовая проверка условия
if(BTN_PRESS & BTN_A)

...

все бы хорошо пока "идентификаторов нажатий" было мало, вмещалось в байт.

дело дошло до:

#define BTN_A 1
#define BTN_B 2
#define BTN_C 4
#define BTN_D 8
#define ...
#define BTN_XXX 256
#define BTN_XXX 512
#define BTN_XXX 1024
#define ...

то есть дело дошло до 2х байт, а так как Atmega328P 8-битный, то возможны "осложнения-утяжеления" перехода на подобное "битное условие"

такое сокращение "процессорных команд и ускорение кода" в моем случае очень не помешает, практически необходимо

ВОПРОСЫ:
1. правильно ли я думаю, что проверка 2х байтного условия действительно утяжеляет код или на это можно забить?
2. на сколько утяжеляет?
3. какие подводные камни?
4. и вообще, правильно ли я мыслю, в том ли направлении?
5. ну... какие вообще мысли по этому поводу

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

спасибо заранее.

- проект собирается под Ардуино-IDE
- контроллер Atmega328P
- Linux, ну и все вытекающие моменты (NO WINDOWS)

Последний раз редактировалось sunjob; 13.12.2013 в 13:32.
sunjob вне форума   Ответить с цитированием
 


Здесь присутствуют: 3 (пользователей: 0 , гостей: 3)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 14:18. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика