Arduino IDE в вопросах и ответах

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Arduino IDE в вопросах и ответах

Сообщение Martian »

OKF писал(а):Ардуино может быть на чём хош. На AVR, PIC, STM, x86 даже, ага?
Это точно также касается и одного пина, и чего угодно. Один фиг необходима прослойка для привязки общего к частному. Поэтому и удивлен, что для одного пина есть, всего порта - нет.
Аватара пользователя
ART_ME
Друг Кота
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

Re: Arduino IDE в вопросах и ответах

Сообщение ART_ME »

[uquote="Martian",url="/forum/viewtopic.php?p=4395534#p4395534"]Поэтому и удивлен, что для одного пина есть, всего порта - нет.[/uquote]
Я как то интересовался этим вопросом, ответ такой, что это просто не нужно. И это касается не только ардуино, и не только AVR, а вообще всех МК.
Martian
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32
Контактная информация:

Re: Arduino IDE в вопросах и ответах

Сообщение Martian »

это кто-то дал очень глупый ответ.
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Arduino IDE в вопросах и ответах

Сообщение OKF »

Конечно, можно работать напрямую без прослойки, что многие и делают. Только по красивому, в скетче нужно указывать с чем должно работать и стопориться через #error если это не так.
Аватара пользователя
ART_ME
Друг Кота
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

Re: Arduino IDE в вопросах и ответах

Сообщение ART_ME »

[uquote="Martian",url="/forum/viewtopic.php?p=4395546#p4395546"]это кто-то дал очень глупый ответ.[/uquote]Точно! Эти же дураки зачем-то "порвали" порты на многих МК. :)))
veso74
Поставщик валерьянки для Кота
Сообщения: 1903
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: Arduino IDE в вопросах и ответах

Сообщение veso74 »

[uquote="OKF",url="/forum/viewtopic.php?p=4395523#p4395523"]Это не Ардуино.
...
uint8_t j = digitalRead(pin4)<<3 | digitalRead(pin3)<<2 | digitalRead(pin2)<<1 | digitalRead(pin1);
[/code][/uquote]
Это тоже не Arduino :).

Код: Выделить всё

byte J = digitalRead(A4) << 3 | digitalRead(A3) << 2 | digitalRead(A2) << 1 | digitalRead(A1);
Шучу. Может по-разному, даже на asm.
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Arduino IDE в вопросах и ответах

Сообщение OKF »

Понятно, что скетч - это набросок. Поэтому можно писать как непопадя. И J для переменной можно с заглавной, и пины можно непосредственно в самом скетче указывать.) И так сойдёт. Вот только как с малого привыкнешь, так и дальше будешь писать.
AVS95
Родился
Сообщения: 2
Зарегистрирован: Вс апр 02, 2023 21:43:33

Re: Arduino IDE в вопросах и ответах

Сообщение AVS95 »

Всем спасибо. Действительно, оптимальная реализация получилась путем: назначения переменной = считывание состояния каждого пина + склеивание результатов побитно. :)
veso74
Поставщик валерьянки для Кота
Сообщения: 1903
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария
Контактная информация:

Re: Arduino IDE в вопросах и ответах

Сообщение veso74 »

AVS95, не заблуждайтесь: способ не быстрее по скорости, не занимает меньше используемой памяти и не "параллелен" (все выходные данные не читаются вместе). Наверное второй способ только более понятен как действие для исполнение. Пишу это из-за того, что писали зачерненным шрифтом - в этом нет необходимости. Вероятно через какое-то время при писании кодов будете писать по первому варианту :).
OKF
Это не хвост, это антенна
Сообщения: 1385
Зарегистрирован: Вт июн 07, 2011 08:03:18

Re: Arduino IDE в вопросах и ответах

Сообщение OKF »

А нужна ли скорость? А если нужна, то лучше оформить отдельно через макро или инлайн:

Код: Выделить всё

#define get_data() PINC>>1 & B00001111
// а тогда:
uint8_t j = get_data();
и в get_data() пиши что хош. Как тебе кажется быстреe.
Аватара пользователя
ART_ME
Друг Кота
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

Re: Arduino IDE в вопросах и ответах

Сообщение ART_ME »

Здравствуйте.
Есть необходимость выставить предделитель входа захвата в таймере для bluepill, но в штатном пакете такой оказался не предусмотрен.
Судя по инету существует возможность портирования с CubeMX настроечных строк в arduino IDE, но как конкретно это можно сделать мне найти не удалось.
Не, я понимаю, что в таких случаях надо отказываться от ардуино, но в данном случае мне может оказаться проще поставить предделитель в отдельном корпусе.
По идее должна существовать возможность прямого управления регистрами, но из этой затеи у меня тоже ничего не вышло. :(
Есть у кого-нибудь опыт решения проблемы?
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15543
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Arduino IDE в вопросах и ответах

Сообщение BOB51 »

Прямой доступ к регистрам вполне возможен и выполним (по крайней мере в отношении АВРок я им при необходимости пользуюсь).
Однако там надо учитывать и уже заложенное "ядро программы", чтобы не навредить.....
Т.е. использовать только не задействованные в ядре и применяемых функциях регистры.
Доступ как и в обычном Си через соответствующие заголовочники/ файлы описаний.
У портабле версии IDE их проще отыскать. Вероятно таковые есть и для STM платформ...
:roll:
Аватара пользователя
ART_ME
Друг Кота
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

Re: Arduino IDE в вопросах и ответах

Сообщение ART_ME »

[uquote="BOB51",url="/forum/viewtopic.php?p=4418691#p4418691"]Вероятно таковые есть и для STM платформ...
:roll:[/uquote]
Ну так вот на основе опыта общения с avr я и пытаюсь это сделать!
Напрашивается подключение библиотеки. Но какой? :shock:
К примеру, цитата из: https://github.com/stm32duino/Arduino_Core_STM32
STM32Cube MCU Packages including:
The HAL hardware abstraction layer, enabling portability between different STM32 devices via standardized API calls

Гугль-перевод:
Пакеты MCU STM32Cube, включая:
Уровень аппаратной абстракции HAL, обеспечивающий переносимость между различными устройствами STM32 с помощью стандартизированных вызовов API.

Что надо сделать, чтобы это работало? :shock:
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15543
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Arduino IDE в вопросах и ответах

Сообщение BOB51 »

Где-то в файлах компилятора есть файлы описания "io" и регистров.
Для АВРок в портале варианте я их могу указать, а вот для STM...там надо того, кто компиляторы STMок знает к поиску подключить...
:dont_know:
Аватара пользователя
ART_ME
Друг Кота
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

Re: Arduino IDE в вопросах и ответах

Сообщение ART_ME »

Пишем:

Код: Выделить всё

htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
Получаем:
'htim2' was not declared in this scope
--------------------
Пишем:

Код: Выделить всё

 timer_ic.TIM_ICPrescaler = TIM_ICPSC_DIV1;
Получаем:
'timer_ic' was not declared in this scope
---------------------
Пишем (от балды):

Код: Выделить всё

GPIOA->BSRR = 0x20;
Получаем:
'struct gpio_dev' has no member named 'BSRR'
----------------------
Пишем (от балды):

Код: Выделить всё

bool pin5 = !!(GPIOA->IDR & (1<<5));  // read pin via input data register.
Получаем(от балды):
'struct gpio_dev' has no member named 'IDR'

Что он просит? :shock:
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15543
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Arduino IDE в вопросах и ответах

Сообщение BOB51 »

Не подключены соответствующие файлы описания в файле *.ino текущего проекта.
А где их искать и как подключать - то надо знать компилятор, применяемый для данной платформы.
Теоретически где искать я могу копнуть(для портале на ПК с ХР х32) по аналогии с АВРками..
Но у STM там дела чуток понавороченнее могут быть...
:dont_know:
Аватара пользователя
ART_ME
Друг Кота
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

Re: Arduino IDE в вопросах и ответах

Сообщение ART_ME »

Нашел!!! :))
Запись должна быть вот такая:

Код: Выделить всё

TIMER2_BASE->CCMR1 |= (1<<2);
Еще не знаю работает оно или нет, но ошибок при компиляции не дает.
:roll:

Добавлено after 1 hour 3 minutes 39 seconds:
Не работает. Т.е. не делит.
Даю на вход 1000 Гц, но при любых значениях делителя измерение показывает всё те же 1000 Гц. :dont_know:
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15543
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Arduino IDE в вопросах и ответах

Сообщение BOB51 »

Программно можно задавать все кроме того, что задается комплектом фуз (это относительно АВРок - как у STM не ведаю).
:dont_know:
Аватара пользователя
ART_ME
Друг Кота
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

Re: Arduino IDE в вопросах и ответах

Сообщение ART_ME »

Попробовал вместо штатного:

Код: Выделить всё

Timer1.setPrescaleFactor(72);
применить:

Код: Выделить всё

TIMER1_BASE->PSC = 72;
Работает... :solder:
Аватара пользователя
ART_ME
Друг Кота
Сообщения: 3011
Зарегистрирован: Вс окт 02, 2016 07:34:45

Re: Arduino IDE в вопросах и ответах

Сообщение ART_ME »

Задал этот вопрос буржуинам, а пока поставлю триггер.
В принципе есть и компромиссный вариант: каскадное включение таймеров, т.е. когда входной сигнал делится одним таймером, выход которого подается на второй, который и подсчитывает период.
Ответить

Вернуться в «Arduino»