
Человек-Даук
02.01.2017
21:09:03
а вообще как разруливаются коллизии ?

Ibh
02.01.2017
21:15:14
* http://www.gorferay.com/initialization-and-anticollision-iso-iec-14433-3/

Человек-Даук
02.01.2017
21:36:59
так я понимаю: они просто ждут пока их считают и так один за другим по комманде ?

Google

Человек-Даук
02.01.2017
21:37:22
поэтому с ридера я просто буду снимать данные оче быстро, а потом уже сортировать ?

LexsZero
02.01.2017
21:46:49
в каком-то протоколе я видел разруливание коллизий с random backoff

Catethysis
02.01.2017
21:48:37
в вайфае, и ещё куче радиопротоколов и любых протоколов с разделяемой средой.

LexsZero
02.01.2017
21:50:14
я про нфц именно

Человек-Даук
02.01.2017
22:27:16
да тут не нфц
меня стукнули извне: вот дескать,готовое железо
не говорят какое
надо завести сие дерьмо
а какое не грят
применение широкое
я голову ломаю:а как же коллизии


Sergio
03.01.2017
22:19:34
вы тут о высоком... блин. а я про кнопочки спросить хотел.
"Переключение экрана норм/гонка -- кнопка А.
В гоночном режиме старт круга кнопка Б, конец В.
В основном экране кнопка Б переключает одометры, удержание кнопки Б сбрасывает одометр. Кнопка В переключает настраиваемые и сбрасываемые данные (моточасы, часы, подсветку). Удержание кнопки В приводит к редактированию данных. Совсем длительное удержание -- стирает (только МЧ). В часах в режиме редактирования Б/В работают на увеличени/уменьшение значения."
вот, заморочился. на ардуине оно :(
есть идеи, как красиво сделать и реюзабельно? я порылся в гуглах, всё что-то не то. не хочется размазывать по loop() обработку кнопок и реакции на них.
я затеял класс с абстрактными методами типа onClick() onPress(0 onPush() итп и наследовать класс для каждого типа кнопки со своими локальными данными и обработчиками событий. Базовый класс будет просто неблокирующе обрабатывать тыки кнопок и дёргать абстрактные методы, которые будут переопределены уже на что-то конкретное.
или лучше колбаки и структурку с состояниями?
или мешать в кучу?

Google

Sergio
03.01.2017
22:25:51
если что, ответ пролетит и потеряется, я боюсь пропустить в сотных сообщений тут :)

ОлегЪ
03.01.2017
23:09:56
это точно ардуина?
там так не делают
digitalRead() и всё
а если по нормальному, то просто прерывания использовать


LexsZero
03.01.2017
23:25:32


Sergio
03.01.2017
23:31:02
digitalRead() и всё
Это само собой, надо отличить по 4м кнопками тык, тыыык и тыыыыыык. А в зависимости от режима экрана разные действия делать и рисовать там разное.

LexsZero
03.01.2017
23:33:35
ну все равно, оверинжиниринг. you aint' gonna need it.

Sergio
03.01.2017
23:33:57
Лапшичную я уже накидал, не нравится.
Вот у вас тут что используется? Абы что как попало или есть красивые решения?
Я сделаю красиво раз и потом использую в других проектах. Делов-то. И на гитхабе поделюсь и в плейграунде. Мне не жалко.

ОлегЪ
03.01.2017
23:35:52
только они могут быть заняты другими либами, но маловероятно

Sergio
03.01.2017
23:36:13
Атмега328, там два прерывания.

ОлегЪ
03.01.2017
23:36:24
не, там много

Sergio
03.01.2017
23:36:27
Заняты датчиками.

Google

ОлегЪ
03.01.2017
23:36:32
ща
еще 24 PCINT осталось

Sergio
03.01.2017
23:37:47
Это даже не важно, есть там прерывания или нет (дока говорит, что нет). Опросом тоже можно. Написано без delay() всё.

ОлегЪ
03.01.2017
23:38:28
точнее это либо одно прерывание. либо одно на порт, точно не помню, но придется руками проверять, какая кнопка была нажата, что не критично
тогда по прерыванию таймера

Sergio
03.01.2017
23:38:47

LexsZero
03.01.2017
23:38:49
я бы сделал список структур { кнопка, длительность, коллбэк, аргумент_коллбека }
если кнопок и правда много и у них хитрые функции
но для трех - смысла не вижу

ОлегЪ
03.01.2017
23:39:11
плюсы тогда сами курите

Sergio
03.01.2017
23:39:30

ОлегЪ
03.01.2017
23:39:37
но я бы сделал на прерываниях выводов или таймеров
могу даже примерный код накидать, но на сях
а иначе хз как не иначе, чем в лупе
даже если структуру создашь, всеравно оно по факту в лупе будет

Sergio
03.01.2017
23:40:51
С таймерами там как-то туман. Я ещё не осилил.

ОлегЪ
03.01.2017
23:41:35
а точно надо плюсы и ардуино иде? могу дать кодевижн с годным визардом, который сам сделает все прерывания
хотя можно и просто сишный код вставить

Sergio
03.01.2017
23:42:15
В лупе будет батон.run() вызываться. И всё. Он сам будет дёргать функции по мере их определения и появления событий

ОлегЪ
03.01.2017
23:43:13
но кнопка то всеравно циклически будет проверятся, хоть и вызовом, но в теле while(1) в main() если переводить на нормальный язык

Google

Sergio
03.01.2017
23:43:16

ОлегЪ
03.01.2017
23:43:36
а на маке виндовые проги не работают?

Sergio
03.01.2017
23:43:43
Нет

ОлегЪ
03.01.2017
23:43:51
вроде было же что то типа vine, но даже лучше
ща

Sergio
03.01.2017
23:44:18
Не было. Сказки. Эмуляторы есть, но все говно.

ОлегЪ
03.01.2017
23:45:22
на какой частоте ардуина работает и с какой частотой надо кнопки проверять?

Sergio
03.01.2017
23:45:55
Ардуина 16мгц, кнопки раз в 10мс нормально.
Можно 25мс даже

ОлегЪ
03.01.2017
23:47:13
// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
// Place your code here
}
это прерывние, имя ф-ции скорей всего придется погуглить, т.к. в avr gcc оно отличается

Sergio
03.01.2017
23:47:31
Сейчас проверяется с частотой лупа, то есть, как получится.

ОлегЪ
03.01.2017
23:47:43
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 15,625 kHz
// Mode: Normal top=0xFF
// OC2A output: Disconnected
// OC2B output: Disconnected
// Timer Period: 16,384 ms
ASSR=(0«EXCLK) | (0«AS2);
TCCR2A=(0«COM2A1) | (0«COM2A0) | (0«COM2B1) | (0«COM2B0) | (0«WGM21) | (0«WGM20);
TCCR2B=(0«WGM22) | (1«CS22) | (1«CS21) | (1«CS20);
TCNT2=0x00;
OCR2A=0x00;
OCR2B=0x00;
это настройка таймера
тока это, телега кавычки поела, ща на пастебин закину

Sergio
03.01.2017
23:48:40
Это камнезависимо очень. :(

ОлегЪ
03.01.2017
23:49:47
не очень, для 168 тоже пойдет, и половины остальных новых тоже, можно сделать через макросы кросплатформенно, но немного геморно

Sergio
03.01.2017
23:49:59
Ну, получу я прерывание. И смысл?
Красиво, с другой стороны.
Но пихать в обработчик прерывания какую-то логику фу. Нет?
Чем плохо в луп ставить вызов функции?

ОлегЪ
03.01.2017
23:50:53
пихать туда немного логигики, если чего то много и не критично к скорости выполнения, то выставлять флаг какой нибудь и в лупе тогда обрабатывать
если не надо реалтайм и в лупе нет делев, то можно попробовать, но для отзывчивости кнопоп я обычно делаю на прерываниях

Sergio
03.01.2017
23:51:35
Так сразу в лупе и обрабатывать тогда. Хмм

Google

Sergio
03.01.2017
23:52:23
Делеев нет. Реалиайм такой, типа кнопки тыкать. Там тыки по секунде.

ОлегЪ
03.01.2017
23:52:53
ф-ции кнопок разные бывают, вот например у тя какой то пздц начинает творится (робат убиает человека), ты жмешь STOP, но в лупе у тя измеряется темпрература поциента, а это около 1с, и все. человек помер

Sergio
03.01.2017
23:52:57
Это приборная панель мотоцикла. Не клава пианистки.

ОлегЪ
03.01.2017
23:53:13
темболее
тут уже за себя переживать надо

Sergio
03.01.2017
23:53:30
Здесь на ходу точно тыкать не будут.

ОлегЪ
03.01.2017
23:53:59
ну тогда в лупе, я ж не заставляю использовать прерывания, просто совет

Sergio
03.01.2017
23:54:13
Отклик в 10мс -- это мегабыстро.

ОлегЪ
03.01.2017
23:54:29
если в лупе ничего не повиснет

Sergio
03.01.2017
23:54:40
Я б использовал, но средствами иде никак.

ОлегЪ
03.01.2017
23:54:50
кста, про задерку от дребезга не забудь, а это тоже несколько мс
иде позволяет использовать прерывания

Sergio
03.01.2017
23:55:13
Есть расширитель портов с прерыванием. Но излишне пока что.
И от случайного нажатия тоже есть задержка.

ОлегЪ
03.01.2017
23:57:27
как хош, вот, на всякий случай
http://pastebin.com/sZWGPZMt

Sergio
03.01.2017
23:58:11
https://www.arduino.cc/en/Reference/attachInterrupt
Пасип. Разберу.