Ви не увійшли.
Доброго времени суток !
Уважаемые господа специалисты, подскажите новичку, пожалуйста.
Приобрел Arduino совместимый контроллер, который обычно называют Arduino Iboard Ethernet от производителя ITEAD :
www.itead.cc/ru/development-platform/ar … board.html
официально именуемый "Плата Arduino ATMega328 Для Платформы IBoard С Портом Ethernet WIZnet POE"
соблазнившись принципом все в одном и микроконтроллер и Ethernet разьем с функцией питания от него, интерфейс для подключения Wi-Fi и другие полезные интерфейсы.
Однако сталь пользовать и столкнулся с тем что его входы-выходы числом 8 (от A0 до А7) не совсем то что ожидалось с позиций банальной логики.
Мне нужны в основном цифровые входы выходы, методом научного тыка и запуска тестирующих скетчей выяснилось что входы от А0 до А5 - работают как цифровые входы выходы от 14 до соответственно 19 причем нормально - управляют светодиодами, принимают сигналы от датчика движения. Входы A6 и А7 вообще никак как цифровые себя не проявляют (пробовал номера от 0 до 30). Пробовал простейшей программой - светодиод на каждый из входов - и на каком он загорится такой и номер:
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
}
void loop() {
// задержка чтобы успеть посмотреть последовательный порт
delay (6000);
for (int i=0; i <= 30; i++) {
Serial.println(i);
// попытка зажечь светодиод с очередного порта
pinMode(i, OUTPUT);
digitalWrite(i, HIGH);
delay(2000);
digitalWrite(i, LOW);
}
}
И потом их эксплуатировал под этими номерами - датчик движения и т.д. - все работало хотя в голове и не укладывалось.
ПОЭТОМУ ВОПРОС ПЕРВЫЙ - Что это за странность с нумерацией цифровых выходов.
Далее мне понадобилось использовать внешние прерывания, а они как правило "прикручены" ко второму и третьему входу-выходу - а у меня ж их на контроллере нет !
На всякий случай запустил тест - какие прерывния на каком входе:
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
}
void loop() {
// задержка чтобы успеть посмотреть последовательный порт
delay (2000);
for (int i=1; i <= 30; i++) {
Serial.print(i); Serial.print(" : "); Serial.println(digitalPinToInterrupt(i));
}
}
и точно 2 и 3
ПОЭТОМУ ВОПРОС ВТОРОЙ - это что карта без управления по внешним прерываниям ? очень странно.
Буду рад любому ответу или подсказке, потому что деньги плачены, связь с интернет работает но без обработки внешних прерываний мне такая карта не нужна.
Неактивний
Попробуйте так http://arduino.ru/Tutorial/Upravlenie_p … z_registry
Неактивний
Очень благодарен за быстрый ответ.
Однако у меня процессор ATmega386p а не 168
и как в скетчах напрямую обращаться к регистрам и как при этом переназначить скажем 14 вывод на 1-й не совсем ясно
Мне ведь нужно внешнее прерывание обрабатывать с реальных 2-го и 3-го цифровых выходов, то есть присоединить к ним скажем датчик движения или звука ?
Неактивний
Пины A6, A7 могут использоваться только как аналоговый входы. На вашей плате под гребенку выведены только А0-А7. D2,D3 можно снять с разъема под NRF24L01.
Неактивний
Можно использовать любой пин для прерывания по изменению сигнала. Только нужно лезть в ДШ. И это если вы сами будете заниматься обработкой. Примерное оформление:
#define encoder_init() (PCICR |= 1<<PCIE2, PCMSK2 |= 1<<PCINT18 | 1<<PCINT19)
#define ENCODER_VECTOR PCINT2_vect
Остання редакція Green (2018-02-04 11:23:19)
Неактивний
Спасибо большое господа !
Сам нашел по схеме где цифровые выходы 2 и 3. Пришлось вникнуть
А до переназначения прерываний будем надеяться дело не дойдет, поскольку в NRF24L01
ничего в этой карте втыкать не собираюсь, в частности задачи с wifi буду решать с помощью других карт,
уже болит об этом голова - и боль свою изложил в других темах форума.
Еще раз благодарю за советы !
Неактивний