Страница 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в :nono:
поставил родные пины всё нормально стало

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

Отправлено спустя 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