Обсуждаем контроллеры компании Atmel.
Ответить

Re: Проблема с Atmega328P

Сб сен 18, 2021 07:40:51

Аппаратные модули в большинстве случаев подгоняются под стандартное применение.
Посему либо избыточны для конкретных конструкций либо не соответствуют частным применениям любительской практики.
Тот же I2C не рассчитывается на оперативное переключение режимов мастер/слэйв - обычно устройство или ведущий шины или ведомый.
Помимо того не все семейства/МК, имеющиеся в наличии под лапой, имеют одинаковые модули (а некоторые "малолапые" былых времен их вообще не содержат).
Посему в первую очередь применяется программный вариант и далее при жесткой необходимости уже аппаратный.
Описания на мегу 328ю вполне достаточно - только для реальной работы нужна "распечатка с самолапными заметками на полях".
Делать подобное для нынешних условий, когда основное применение данный МК получил в рамках платформ ардуино (нанка и про-мини), где разработку в основном проводят под Си/С++ с упором на имеющиеся библитоеки, как-то вломушки...
В то же время подход полноформатного разбора даташита (и использование ассемблера) для типовых "малолапых" МК, используемых в качестве "периферии с мозгом" в "смешанных" конструкциях вполне обоснован.
Касательно установки модулей в начальное состояние - аппаратная реализация данного процесса в документации не рассматривается - обычно указано в отдельных таблицах как содержимое Регистров Специальных Функций после аппаратного сброса и/или после выхода из состояния сна/пониженного энергопотребления/отработки "собаки" или BOD.
8)
Программная реализация частенько упрощает требования к закладываемому в конструкцию аппаратному содержимому (применяемым МК и "микросхемам сопровождения"
https://radiokot.ru/forum/viewtopic.php?f=62&t=156720)
:beer:

Re: Проблема с Atmega328P

Сб сен 18, 2021 20:06:07

По поводу "аппаратная реализация данного процесса в документации не рассматривается - обычно указано в отдельных таблицах как содержимое Регистров Специальных Функций после аппаратного сброса и/или после выхода из состояния сна/пониженного энергопотребления/отработки "собаки" или BOD." :

Вы немножко не поняли. Как это сделано внутри никого не интересует. Интересует как програмно выполнить сброс \ сделать инициализацию в исходное состояние \ привести к состоянию аналогичному аппаратному сбросу - называйте это действие как угодно, смысл от этого не меняется. Если нет программной реализации этого ( всякие вач доги и пауэр даун детекторы - это не этот случай и служат для своей цели ), то девайс является ущербным. Если этот функционал всё же есть (некая последовательность программных действий ) но она не оговаривается напрямую в даташите - девайс тоже является ущербным. Посколько этим функционалом не удасться воспользоватся. И вообще всё то что может быть применено, но не описано в даташите является багом а не фичей. забудут написать что есть команда для пересылки между регистрами MOV, и всё - наличие этой команды на практическом кристалле - баг.
Прикладываю переработанную версию софта. Реализована пересылка пакета длинной 16 байт от mega8L к mega328P, вывода текущего времени из ds1307 и части (12 байт - у меня пока больше не влезает на экран) данных принятого пакета на дисплей.
мега 328 занимается опросом ds1307 и выводом на экран. мега8L шлёт по таймеру к меге328 пакеты. У меги328 совмещены режимы работы master и slave.

Добавлено after 5 minutes 13 seconds:
ЗЫ: в составе исходника для мега8L есть реализация USART для COM c кольцевыми буферам. Может кому надо. Для отладки использую.
Вложения
asm.zip
(18.79 KiB) Скачиваний: 59

Re: Проблема с Atmega328P

Вс сен 19, 2021 09:01:03

Простейшая программная реализация - заводим "волшебну лапку" одного из протов на вывод "сброс".
Дополнительные варианты с BOD, WDT и программный сброс специальной командой, если данное предусмотрено в определенном кристалле (есть и такие как у атмела так и у микрочипа).
Только вот "зачем?"...
Допустим у котуинки такой вариант оправдан (и то "под вопросом") режимом оперативной загрузки новой программы - но ведь для обычного МК подобное изменение содержимого основной программы (перезапись флэш на ходу) никогда не требуется.
В крайнем случае идет загрузка через бутлоадер при полном останове исполнения ранее установленной программы.
Касательно "ущербности" - не всякий МК может быть оптимален для конкретной конструкции (тем более не существует чего-то "абсолютно универсального") - в этом смысле наличие в семействе "упрощенных вариантов" с минимальным набором аппаратных модулей для практики вполне оправдано.
Выбираем тот кристалл и то семейство, что во первых максимально изучено и проработано и во вторых наиболее преемлемо в данной конструкции. Третий критерий цена и наличие в доступной продаже определен лишь для простолюбителя.
Для АВРок единственный упрек можно сделать лишь относительно отсутствия явного указания в маркировке (как на кристалле, так и в байтах сигнатуры) номера ревизии кристалла. Остальное вполне удобоваримо - собираем ВСЕ даташиты, включая ерраты и имеем полное представление о конкретном МК.
8)

Пы.Сы.
Если есть желание показать программу и/или продемонстрировать собственную конструкцию - то уж надо и схемы и описание всего устройства выкладывать.
Или конкретный алгоритм, действительно оригинальный (https://radiokot.ru/forum/viewtopic.php?f=62&t=78185).
Простой кусманчик исходника (тем более "крупноформатный") не слишком удобен для простого читателя.
Предпочтение выделению оригинального алгоритма в отдельный файл, с возможностью его применения вне рамок конкретного проекта в виде подключаемой библиотеки (хтоя-бы в "слэнговом" варианте).
:beer:

Re: Проблема с Atmega328P

Пн сен 20, 2021 19:28:47

Касательно "Простейшая программная реализация - заводим "волшебну лапку" одного из протов на вывод "сброс"."
Ну гланды, как известно, обычно через задницу удаляют. :) И где там у модуля TWI "волшебная лапка" - поясните плз аудитории.
Я вам про одно, а вас всё время куда-то в сторону уносит.
Выбирать элементную базу нужно исходя имеющихся условий задачи и возможностей (финансовых, временных, наличия опыта и т.п.).

Устройство ещё в разработке. Часть модулей не готово. Тут обсуждаю только возможности интерконнекта по i2c шине.
Схема в этом случае сводится к двум проводкам и двум подтягивающим резисторам. Смысла рисовать её нет. все обсуждаемые устройства на физическом уровне подключаются исключительно одинаково.

Re: Проблема с Atmega328P

Пн сен 20, 2021 20:00:47

Одна из главных ошибок - не видеть изначально всех возможных задач задуманной конструкции, упираясь в "перешедшие дорогу мелочевки".
Никогда и никто не разрабатывает "персональный сброс" для каждого в отдельности из аппаратных модулей МК - системы сброса едины для ВСЕЙ начинки.
А уж ежли автору программы охота изголяжа - на то существует программная последовательность из определенных действий, которая приводит заданный аппаратный модуль в исходное состояние - обычная рутина для тех, кто под ассемблером работает.
Возможность обмена данными определяется задачами заложенными в каждом из блоков.
Оценить "что эффективнее применять?" не имея представления об устройстве в целом - практически равноценно шаманизьму со бубеном.
8)
Ответить