#1 2025-08-06 10:53:44

filat18
Учасник
Зареєстрований: 2025-08-04
Повідомлень: 20

Чи є інструменти для перевірки наявності вивода у плати за номером?

нано/уно/мега/... - різні плати мають різну кількість виводів (які, зокрема, мають особисту нумерацію).
Чи існують оператори коду, за допомогою яких, при наявности номера, можно б було виконати перевірку - чи є у плати, на яку записан цей скетч, реальний вивод за перевіряємим номером?

Неактивний

#2 2025-08-06 11:08:59

jokeer
Гість

Re: Чи є інструменти для перевірки наявності вивода у плати за номером?

#ifdef D23
// do something 
#endif

Десь так

#3 2025-08-06 11:17:38

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 572

Re: Чи є інструменти для перевірки наявності вивода у плати за номером?

filat18 пише:

Чи існують оператори коду, за допомогою яких, при наявности номера, можно б було виконати перевірку - чи є у плати, на яку записан цей скетч, реальний вивод за перевіряємим номером?

Можете описати конкретніше, яку саме проблему хочете цим вирішити? Перевірити під час компіляції чи під час виконання? Вас цікавлять виводи портів GPIO чи їх альтернативні функції?

Неактивний

#4 2025-08-06 11:24:31

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 572

Re: Чи є інструменти для перевірки наявності вивода у плати за номером?

jokeer пише:
#ifdef D23
// do something 
#endif

Десь так

А ви перевіряли, чи ардуіно фреймворк визначає такі макроси?

Неактивний

#5 2025-08-06 11:33:16

jokeer
Гість

Re: Чи є інструменти для перевірки наявності вивода у плати за номером?

Треба подивитися. Там всередині всі кросплатформені штуки на define/ifdef. Можливо, воно називається інакше. Ctrl click в digitalWrite - і кому треба той побачить. wink

#6 2025-08-06 11:41:09

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 572

Re: Чи є інструменти для перевірки наявності вивода у плати за номером?

jokeer пише:

Треба подивитися. Там всередині всі кросплатформені штуки на define/ifdef. Можливо, воно називається інакше.

Воно ніяк не називається, номери пінів у фреймворка - це просто числа. Вони використовуються як індекси в таблицях. Є макроси для пінів з функцією аналогового входа.

Для загального випадка такого "інструмента" нема. Для вирішення якоїсь конкретної проблеми можуть бути варіанти.

Остання редакція dimich (2025-08-06 11:41:35)

Неактивний

#7 2025-08-06 11:54:31

filat18
Учасник
Зареєстрований: 2025-08-04
Повідомлень: 20

Re: Чи є інструменти для перевірки наявності вивода у плати за номером?

Загальна ідея була така: експлуатація виробу планується на мега, де виводи використовуються як ціфрові... А ось обкатка, зачасту йде на нано чи уно, і при звернені до відсутніх віводів... - відбуваєтся богна що. Через окремі меркування, реалізувати відхилення звернень до відсутніх виводів на рівні верхнього керовання не можно. Тому й задав це питання, щоб не множити окремі скетчі до різних плат, а один раз закласти перевирку номерів....

Неактивний

#8 2025-08-06 12:02:25

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 155

Re: Чи є інструменти для перевірки наявності вивода у плати за номером?

void digitalWrite(uint8_t pin, uint8_t val)
{
	uint8_t timer = digitalPinToTimer(pin);
	uint8_t bit = digitalPinToBitMask(pin);
	uint8_t port = digitalPinToPort(pin);
	volatile uint8_t *out;

	if (port == NOT_A_PIN) return;

Можна так
Або почитати як влаштовано pins_arduino.h

щоб не множити окремі скетчі до різних плат

#idef __AVR_ATmega8__

#else

#endif

Для кожної вашої каменюки - свій ifdef.  І зробити, щоб під неправильний камінь не зібралось. І буде вам щастя.

Остання редакція jokeR (2025-08-06 12:09:16)

Неактивний

#9 2025-08-06 12:10:47

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 572

Re: Чи є інструменти для перевірки наявності вивода у плати за номером?

filat18 пише:

щоб не множити окремі скетчі до різних плат, а один раз закласти перевирку номерів....

Фреймворк визначає макрос відповідно до плати, для якої збирається скетч. Ви можете перевіряти ці макроси препроцесором, наприклад:

#if defined(ARDUINO_AVR_UNO)
...
#elif defined(ARDUINO_AVR_NANO)
...
#elif defined(ARDUINO_AVR_MEGA) || defined(ARDUINO_AVR_MEGA2560)
...
#else
#error Board not supported
#endif

Імʼя макроса складається з префікса ARDUINO_ та значення .build.board= відповідної цільової плати з boards.txt.

Неактивний

#10 2025-08-06 12:15:31

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 572

Re: Чи є інструменти для перевірки наявності вивода у плати за номером?

jokeR пише:
#idef __AVR_ATmega8__

Ці макроси визначаються компілятором відповідно до опції -mmcu. До самих плат ардуіно вони не мають відношення, для різних плат з однаковим процесором ці макроси однаково визначені.

Неактивний

#11 2025-08-06 12:18:23

jokeR
Учасник
Зареєстрований: 2024-12-12
Повідомлень: 155

Re: Чи є інструменти для перевірки наявності вивода у плати за номером?

Так, ARDUINO_AVR_UNO більш підходить під задачу.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму