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

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

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

добрый день

- Atmega328P
- на 3м порту (PD3/INT1) висит кнопка
- порт сконфигурирован на вход, подтяжка установлена
- дребезг контактов давится программно

попытался заменить ардуиновскую функцию digitalRead() на более низкоуровневую:

#define _L( BIT) ( _BV( BIT ) )
#define _R(PORT,BIT) ( PORT >> BIT )
#define PORTD_GET(BIT) ( _R ( ( PIND & _L(BIT) ) , (BIT) ) )
#define D03_GET (PORTD_GET (3))
#define PORT_GET_BTN ( D03_GET )

т.е. в коде
digitalRead(3)
меняется на
PORT_GET_BTN

при быстрой проверке работает нормально, читат все ок, но вот при дотошном прогоне кода, программа начинает подглючивать

причем при замене макроопределения на след. программа перестает тупить:
#define PORT_GET_BTN (digitalRead(3))

ВОПРОСЫ:
- привильно ли определен PORT_GET_BTN ?
- правомерная ли такая замена?
- из за чего может глючить (хотя бы потенциально) ?
- где то читал, что для кнопок внутреннего подтягивающего сопротивления не достаточно и надо ставить внешние, кто что думает по этому поводу ?

можно ключевые слова, ссылки, в личку итд...

ОБНОВЛЕНИЕ

глюки выловлены, проблема была в том, что я решил полностью заменить ардуиновские digitalWrite() digitalRead() - на низкоуровневые аналоги
а так поступать, как оказалось, не следовало, т.к. голова дана не только что бы ею лопать... :о)
сначало восстановил все как было, проверил, действительно из за этого
ну и пока отложил это серьезное дело "замену ардуиновских функций на низкоуровневые"

пожалуйста, продолжаем высказываться, буду следить за топиком

хотелось бы УСЛЫШАТЬ МНЕНИЯ:
- где можно и корректно использовать "такую замену" ардуиновским функциям
- где нет
- какие особенности
- подводные камни
- итд

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


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

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

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

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


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


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