Работа с портами ввода и вывода Ардуино через регистры.

Создаем свой блок. Вопросы, помощь знатоков.
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 14 раз
Поблагодарили: 100 раз
Контактная информация:

Работа с портами ввода и вывода Ардуино.

Сообщение aidar_i »

Ingwar писал(а): 23 окт 2021, 13:10 Но у Айдара чуть экономнее в используемой памяти
Все эти библиотеки созданы тоже в прямом обращении портам, но там библиотека, поэтому они больше памяти занимают. Быстрее и легче только ассемблер.
Эти блоки я создал для души, знал что такое есть и давно хотел сделать, новый редактор позволил. Что то грандиозное творить нет желания и возможность. Я так потихоньку, помаленьку :)
А вообще эти блоки можно применять в своих проектах вместо штатных без проблем.
И применяйте!
Аватара пользователя
Dryundel
Полковник
Сообщения: 2473
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 10 раз
Поблагодарили: 40 раз

Работа с портами ввода и вывода Ардуино.

Сообщение Dryundel »

aidar_i писал(а): 23 окт 2021, 15:50 Эти блоки я создал для души, знал что такое есть и давно хотел сделать, новый редактор позволил. Что то грандиозное творить нет желания и возможность. Я так потихоньку, помаленьку
Любой грамотно созданный ПБ является в первую очередь примером и учебным пособием для других.

Камрады! Если у вас есть чем поделиться, потратьте немного времени. Сделайте мир лучше!
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение edyapd »

aidar_i писал(а): 20 окт 2021, 13:17 Пример, где контроллер,если не ATmega328, в блоке пропишется рекомендация сменить контроллер на ATmega328
А почему бы блок не дополнить кодом и для других МК? Мне кажется, что должно получиться.
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 14 раз
Поблагодарили: 100 раз
Контактная информация:

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение aidar_i »

edyapd писал(а): 23 окт 2021, 20:18
aidar_i писал(а): 20 окт 2021, 13:17 Пример, где контроллер,если не ATmega328, в блоке пропишется рекомендация сменить контроллер на ATmega328
А почему бы блок не дополнить кодом и для других МК? Мне кажется, что должно получиться.
Если кто то возьмётся было бы хорошо!
Но отдельными блоками.
Для ЕСП особо нет смысла.
ecoins
Полковник
Сообщения: 4020
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 167 раз

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение ecoins »

edyapd писал(а): 23 окт 2021, 20:18 А почему бы блок не дополнить кодом и для других МК? Мне кажется, что должно получиться.
-------------------------
ecoins писал(а): 20 окт 2021, 19:46 Есть еще нюансы при реализации комплексного решения - в блоках ecoins это реализовано.
Так же реализован быстрый дискретный ввод в т.ч. и с защитой от дребезга (работает без "тормозов").
Все блоки реализованы с определением номера пина на входе блока - это позволяет реализовать простой переход от между контроллерами разных типов без переделки проекта.
Уже писал - реализовано для всех контроллеров, поддерживаемых библиотекой ecoins RT_HW_BASE.h.
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение Di123 »

[ref=#000080]aidar_i[/ref], 12 как выход работает нормально
11 и 10 выдают на выходе 0,7в :nono:
поставил родные пины всё нормально стало

пол дня убил пока нашол проблему думал неправильно спаял перелопатил всё :rtfm:

Отправлено спустя 13 минут 33 секунды:
PHOTO_20211024_225514.jpg
Точнее 1.8в
У вас нет необходимых прав для просмотра вложений в этом сообщении.
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 14 раз
Поблагодарили: 100 раз
Контактная информация:

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение aidar_i »

Удалил
Последний раз редактировалось aidar_i 25 окт 2021, 22:12, всего редактировалось 2 раза.
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение Di123 »

я мерил на пине
попробовал повыдёргивать платы с проекта в поисках ошибки и на этой стадии наоборот 10 и 11 норм а 12 выдаёт теперь 2,58в на выходе
попробуйте загрузить а на 12 порт повесить светодиод и померить напругу хотя там по свечению видно что ему плохо
тест.rar
У вас нет необходимых прав для просмотра вложений в этом сообщении.
ecoins
Полковник
Сообщения: 4020
Зарегистрирован: 12 фев 2016, 11:40
Откуда: Шатура
Имя: Энвер
Благодарил (а): 137 раз
Поблагодарили: 167 раз

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение ecoins »

Di123 писал(а): 24 окт 2021, 20:45 я мерил на пине
попробовал повыдёргивать платы с проекта в поисках ошибки и на этой стадии наоборот 10 и 11 норм а 12 выдаёт теперь 2,58в на выходе
попробуйте загрузить а на 12 порт повесить светодиод и померить напругу хотя там по свечению видно что ему плохо
Так обычно бывает, когда pinMode() не сработал... (или аналог прямого доступа к регистрам не сработал)...
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение Sancho »

ecoins писал(а): 24 окт 2021, 22:06
Di123 писал(а): 24 окт 2021, 20:45 я мерил на пине
попробовал повыдёргивать платы с проекта в поисках ошибки и на этой стадии наоборот 10 и 11 норм а 12 выдаёт теперь 2,58в на выходе
попробуйте загрузить а на 12 порт повесить светодиод и померить напругу хотя там по свечению видно что ему плохо
Так обычно бывает, когда pinMode() не сработал... (или аналог прямого доступа к регистрам не сработал)...
Так обычно бывает, когда на выходе импульсы, а не фикс. уровень.

Отправлено спустя 17 секунд:
Гляньте осликом.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Dryundel
Полковник
Сообщения: 2473
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 10 раз
Поблагодарили: 40 раз

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение Dryundel »

[ref=#000080]aidar_i[/ref], подтверждаю, есть такая ерунда.
Без нагрузки вроде все норм.
Если есть нагрузка, то:
При использовании одноименных портов B2 и B3 напряжение падает.
Если использовать разные порты к примеру B3 и D4 то снова все норм.
Ослика сейчас нет, поэтому только по тестеру.
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение Di123 »

нормальная там осцилограма
остальные порты не тестил кроме этих трёх
возможно они все с болячками такими
Аватара пользователя
Dryundel
Полковник
Сообщения: 2473
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 10 раз
Поблагодарили: 40 раз

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение Dryundel »

[ref=#000080]aidar_i[/ref], кажись понял в чем причина неправильной работы.
Назначение выхода у тебя делается сдвигом.
DDRB = 1<<PB5;
А надо записью бита, так же как сделано присваивание состояния.
В противном случае при объявлении второго и последующих пинов уже установленные биты регистра сдвигаются.
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 14 раз
Поблагодарили: 100 раз
Контактная информация:

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение aidar_i »

Удалил
Последний раз редактировалось aidar_i 25 окт 2021, 22:13, всего редактировалось 1 раз.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение Sancho »

[ref=#000080]aidar_i[/ref], это правильное замечание:
Dryundel писал(а): 25 окт 2021, 17:25 Назначение выхода у тебя делается сдвигом.
DDRB = 1<<PB5;
А надо записью бита, так же как сделано присваивание состояния.
т.е. по или
DDRB |= 1<<PB5;
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Аватара пользователя
Di123
Капитан
Сообщения: 828
Зарегистрирован: 03 ноя 2018, 19:38
Имя: Дмитрий

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение Di123 »

[ref=#000080]aidar_i[/ref], у меня готовый спаяный проект в котором реле не включались потомучто вместо 12в на них падало около 5в из за полу открывании транзистора
на макетке потом собрал
Аватара пользователя
Dryundel
Полковник
Сообщения: 2473
Зарегистрирован: 22 май 2017, 23:15
Откуда: Ярославль
Имя: Андрей
Благодарил (а): 10 раз
Поблагодарили: 40 раз

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение Dryundel »

Sancho писал(а): 25 окт 2021, 17:41 т.е. по или
DDRB |= 1<<PB5;
Возможно и так. Я в этом немного плаваю.
Можно попробовать так:
DDRD |= 1<<5;

Отправлено спустя 5 минут 9 секунд:
aidar_i писал(а): 25 окт 2021, 17:36 Прогнал Ваш тест на Ардуино Уно с резисторами 220 ом и светодиодами. Сперва глючило, оказалось контакты ненадежные были, нормально сделал, все работает как надо.
Не надо гонять тест. Попробуй задействовать сразу два пина с одного порта в проекте и подключи к ним светодиоды обязательно.
Без нагрузки напряжение норм показывает. А с нагрузкой сразу падает.
Если же с одного порта задействован только один пин, то все нормально, напряжение не падает.
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 14 раз
Поблагодарили: 100 раз
Контактная информация:

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение aidar_i »

Dryundel писал(а): 25 окт 2021, 17:56 Можно попробовать так:
DDRD |= 1<<5;
Это одно и то же.
Sancho писал(а): 25 окт 2021, 17:41 [ref=#000080]aidar_i[/ref], это правильное замечание:
Dryundel писал(а): 25 окт 2021, 17:25 Назначение выхода у тебя делается сдвигом.
DDRB = 1<<PB5;
А надо записью бита, так же как сделано присваивание состояния.
т.е. по или
DDRB |= 1<<PB5;
Да, дело в этом. Как я упустил?
А нужно то всего поставить черточки перед знаком равно, как Sancho писал.
Если применяется знаки |= происходит суммирование , а не затрагиваются состояние соседних пинов.
Последний раз редактировалось aidar_i 25 окт 2021, 22:18, всего редактировалось 2 раза.
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 14 раз
Поблагодарили: 100 раз
Контактная информация:

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение aidar_i »

Исправил БЛОК ВЫХОДА и добавил блок выхода с установкой состояния при старте.
aidar_i
Полковник
Сообщения: 3360
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 14 раз
Поблагодарили: 100 раз
Контактная информация:

Работа с портами ввода и вывода Ардуино через регистры.

Сообщение aidar_i »

Блок выхода ШИМ 14,15,16 бит для теста.
Тесты Шим.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось aidar_i 30 ноя 2021, 19:47, всего редактировалось 2 раза.
Ответить

Вернуться в «Разработка пользовательских блоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя