Страница 2 из 3
Работа с портами ввода и вывода Ардуино.
Добавлено: 23 окт 2021, 15:50
aidar_i
Ingwar писал(а): 23 окт 2021, 13:10
Но у Айдара чуть экономнее в используемой памяти
Все эти библиотеки созданы тоже в прямом обращении портам, но там библиотека, поэтому они больше памяти занимают. Быстрее и легче только ассемблер.
Эти блоки я создал для души, знал что такое есть и давно хотел сделать, новый редактор позволил. Что то грандиозное творить нет желания и возможность. Я так потихоньку, помаленьку

А вообще эти блоки можно применять в своих проектах вместо штатных без проблем.
И применяйте!
Работа с портами ввода и вывода Ардуино.
Добавлено: 23 окт 2021, 16:23
Dryundel
aidar_i писал(а): 23 окт 2021, 15:50
Эти блоки я создал для души, знал что такое есть и давно хотел сделать, новый редактор позволил. Что то грандиозное творить нет желания и возможность. Я так потихоньку, помаленьку
Любой грамотно созданный ПБ является в первую очередь примером и учебным пособием для других.
Камрады! Если у вас есть чем поделиться, потратьте немного времени. Сделайте мир лучше!
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 23 окт 2021, 20:18
edyapd
aidar_i писал(а): 20 окт 2021, 13:17
Пример, где контроллер,если не ATmega328, в блоке пропишется рекомендация сменить контроллер на ATmega328
А почему бы блок не дополнить кодом и для других МК? Мне кажется, что должно получиться.
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 23 окт 2021, 20:27
aidar_i
edyapd писал(а): 23 окт 2021, 20:18
aidar_i писал(а): 20 окт 2021, 13:17
Пример, где контроллер,если не ATmega328, в блоке пропишется рекомендация сменить контроллер на ATmega328
А почему бы блок не дополнить кодом и для других МК? Мне кажется, что должно получиться.
Если кто то возьмётся было бы хорошо!
Но отдельными блоками.
Для ЕСП особо нет смысла.
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 23 окт 2021, 21:16
ecoins
edyapd писал(а): 23 окт 2021, 20:18
А почему бы блок не дополнить кодом и для других МК? Мне кажется, что должно получиться.
-------------------------
ecoins писал(а): 20 окт 2021, 19:46
Есть еще нюансы при реализации комплексного решения - в блоках ecoins это реализовано.
Так же реализован быстрый дискретный ввод в т.ч. и с защитой от дребезга (работает без "тормозов").
Все блоки реализованы с определением номера пина на входе блока - это позволяет реализовать простой переход от между контроллерами разных типов без переделки проекта.
Уже писал - реализовано для всех контроллеров, поддерживаемых библиотекой ecoins RT_HW_BASE.h.
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 24 окт 2021, 18:57
Di123
[ref=#000080]aidar_i[/ref], 12 как выход работает нормально
11 и 10 выдают на выходе 0,7в
поставил родные пины всё нормально стало
пол дня убил пока нашол проблему думал неправильно спаял перелопатил всё
Отправлено спустя 13 минут 33 секунды:
PHOTO_20211024_225514.jpg
Точнее 1.8в
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 24 окт 2021, 20:00
aidar_i
Удалил
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 24 окт 2021, 20:45
Di123
я мерил на пине
попробовал повыдёргивать платы с проекта в поисках ошибки и на этой стадии наоборот 10 и 11 норм а 12 выдаёт теперь 2,58в на выходе
попробуйте загрузить а на 12 порт повесить светодиод и померить напругу хотя там по свечению видно что ему плохо
тест.rar
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 24 окт 2021, 22:06
ecoins
Di123 писал(а): 24 окт 2021, 20:45
я мерил на пине
попробовал повыдёргивать платы с проекта в поисках ошибки и на этой стадии наоборот 10 и 11 норм а 12 выдаёт теперь 2,58в на выходе
попробуйте загрузить а на 12 порт повесить светодиод и померить напругу хотя там по свечению видно что ему плохо
Так обычно бывает, когда pinMode() не сработал... (или аналог прямого доступа к регистрам не сработал)...
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 25 окт 2021, 08:07
Sancho
ecoins писал(а): 24 окт 2021, 22:06
Di123 писал(а): 24 окт 2021, 20:45
я мерил на пине
попробовал повыдёргивать платы с проекта в поисках ошибки и на этой стадии наоборот 10 и 11 норм а 12 выдаёт теперь 2,58в на выходе
попробуйте загрузить а на 12 порт повесить светодиод и померить напругу хотя там по свечению видно что ему плохо
Так обычно бывает, когда pinMode() не сработал... (или аналог прямого доступа к регистрам не сработал)...
Так обычно бывает, когда на выходе импульсы, а не фикс. уровень.
Отправлено спустя 17 секунд:
Гляньте осликом.
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 25 окт 2021, 14:28
Dryundel
[ref=#000080]aidar_i[/ref], подтверждаю, есть такая ерунда.
Без нагрузки вроде все норм.
Если есть нагрузка, то:
При использовании одноименных портов B2 и B3 напряжение падает.
Если использовать разные порты к примеру B3 и D4 то снова все норм.
Ослика сейчас нет, поэтому только по тестеру.
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 25 окт 2021, 16:55
Di123
нормальная там осцилограма
остальные порты не тестил кроме этих трёх
возможно они все с болячками такими
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 25 окт 2021, 17:25
Dryundel
[ref=#000080]aidar_i[/ref], кажись понял в чем причина неправильной работы.
Назначение выхода у тебя делается сдвигом.
DDRB = 1<<PB5;
А надо записью бита, так же как сделано присваивание состояния.
В противном случае при объявлении второго и последующих пинов уже установленные биты регистра сдвигаются.
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 25 окт 2021, 17:36
aidar_i
Удалил
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 25 окт 2021, 17:41
Sancho
[ref=#000080]aidar_i[/ref], это правильное замечание:
Dryundel писал(а): 25 окт 2021, 17:25
Назначение выхода у тебя делается сдвигом.
DDRB = 1<<PB5;
А надо записью бита, так же как сделано присваивание состояния.
т.е. по или
DDRB |= 1<<PB5;
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 25 окт 2021, 17:45
Di123
[ref=#000080]aidar_i[/ref], у меня готовый спаяный проект в котором реле не включались потомучто вместо 12в на них падало около 5в из за полу открывании транзистора
на макетке потом собрал
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 25 окт 2021, 17:56
Dryundel
Sancho писал(а): 25 окт 2021, 17:41
т.е. по или
DDRB |= 1<<PB5;
Возможно и так. Я в этом немного плаваю.
Можно попробовать так:
DDRD |= 1<<5;
Отправлено спустя 5 минут 9 секунд:
aidar_i писал(а): 25 окт 2021, 17:36
Прогнал Ваш тест на Ардуино Уно с резисторами 220 ом и светодиодами. Сперва глючило, оказалось контакты ненадежные были, нормально сделал, все работает как надо.
Не надо гонять тест. Попробуй задействовать сразу два пина с одного порта в проекте и подключи к ним светодиоды обязательно.
Без нагрузки напряжение норм показывает. А с нагрузкой сразу падает.
Если же с одного порта задействован только один пин, то все нормально, напряжение не падает.
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 25 окт 2021, 19:08
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 писал.
Если применяется знаки |= происходит суммирование , а не затрагиваются состояние соседних пинов.
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 25 окт 2021, 20:25
aidar_i
Исправил
БЛОК ВЫХОДА и добавил блок выхода с установкой состояния при старте.
Работа с портами ввода и вывода Ардуино через регистры.
Добавлено: 27 окт 2021, 02:50
aidar_i
Блок выхода ШИМ 14,15,16 бит для теста.
Тесты Шим.flp