Например TDA7294

Форум РадиоКот • Просмотр темы - Котуинко
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт фев 19, 2026 21:29:56

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2383 ]     ... , , , 50, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср июн 03, 2020 14:38:54 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1502
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15470
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
И хорошо и плохо одновременно.
Показатель того, как мало информации о новых изделиях...
И соответственно отставание, которое вероятнее всего уже не наверстать...
(или весьма сложно догнать будет)
Там только главный даташит "Preliminary" на АVR128 в 619 страничек, не включая еррат и дополнений...
А ведь это не единственная новинка...
:(
Хорошо в смысле таки продвижения "старых знакомых", пусть даже уже в совершенно незнакомом виде.
8)
А вот насчет "единой IDE"... тут уже кто к чему привык.
Замена только стиля оформления документации уже штука малоприятная.
Потребуется некоторое время для того, чтобы приспособиться.
:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср июн 03, 2020 14:55:50 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18472
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
BOB51 писал(а):
соответственно отставание, которое вероятнее всего уже не наверстать...
а нужно ли наверстывать? кто все время бежит, лишь помрет вспотевшим.
BOB51 писал(а):
А вот насчет "единой IDE"...
меня лишь заинтересовало, как они реализовали доступ к периферии вида PORTA.DIR - явно не gcc-шный вариант.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср июн 03, 2020 15:01:41 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1502
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15470
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Воть потому, что не охота вечно бежать и грызу старые компиляторы да замшелые МК.
:twisted:
У микрочипа СВОЙ компилятор... Иногда платный...
Там разница с GCC достаточно существенная - обусловлена особенностями ПИКовых...
8)
У нас по ПИКовым больше информации у КРАМ получить можно.
:roll:


Последний раз редактировалось BOB51 Ср июн 03, 2020 23:40:03, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср июн 03, 2020 22:34:40 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
BOB51 писал(а):
"The AVR128DA28/32/48/64 microcontrollers of the AVR-DA family are using the AVR® CPU with hardware multiplier,running at up to 24 MHz, with 128 KB of Flash, 16 KB of SRAM, and 512B of EEPROM in 28-, 32-, 48- or 64-pinpackages.
МК как МК. Ничего особенного. Тактовая низкая. Памяти относительно не много. Сколько они стоят?

BOB51 писал(а):
Показатель того, как мало информации о новых изделиях
На них нет даташита?

BOB51 писал(а):
Воть потому, что не охота вечно бежать и грызу старые компиляторы да замшелые МК.
Никто не заставляет. Пишите дальше под ATmega8.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Ср июн 03, 2020 23:36:21 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1502
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15470
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Речь не о наличии/отсутствии даташита, а о том, что особо никто просмотром сайтов производителей не занимается.
И обзоры новинок АВР МК не наблюдаются.
Цена, ежли успели посетить сайт по ссылке, там указана - базовая от производителя.
Об осоденностях аппараьной начинки разговор отдельный (ибо до.... страничек).
Да и не одна там "новинка" - это всего лишь для примера взято.
8)
Кстати... мегой 8 я не увлекаюсь - не слишком удобный кристалл, хотя в любительских конструкциях весьма распиаренный...
:wink:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт июн 04, 2020 00:52:10 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
BOB51 писал(а):
И обзоры новинок АВР МК не наблюдаются.
Видимо никому они не нужны. :dont_know:

BOB51 писал(а):
стати... мегой 8 я не увлекаюсь
Ну 328. На такая уж большая разница.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт июн 04, 2020 07:57:26 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18472
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Мурик писал(а):
Видимо никому они не нужны
мода...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт июн 04, 2020 10:13:51 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1502
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15470
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Скорее не мода, а черезмерное усложнение периферии...
Ядро то осталось прежним, а разбираться с аппаратными вкусностями детально да в полном объёме...
Это при нынешнем объёме документации весьма сложно.
Вторая причина - изменение структуры сайта производителя и собственно оформления самой документации.
Третье - малое распространение на отдельных территориях.
8)
Причина слабой востребованности в радиолюбительском обиходе супернашпигованных аппаратной периферией МК также имеет место.
Ведь большинство рутинных бытовых задач такого обилия средств не требует.
В то же время как минимум необходимо неиспользуемые модули в обязательном порядке корректно отключать при запуске МК.
Да и цены ессно повыше.
:roll:
Относительно наиболее удачной концепции ядра...
Из имеющихся вариантов я бы отдал предпочтение подвиду PIC24, ёжли бы те МК были "более демократичны" по ценам/доступности.
:hunger:
Мурик
Я ведь не кристалл atmega328 использую, а ""DIP-микросборку" марки ардуино нано или ардуино про-мини".
Это не совсем одно и то же.
По сути такое применение равноценно использованию некоего МК с собственным набором команд и собственным компилятором.
Также кстати как и применение той же "синей пилюльки" или иных "DIP-микросборок", входящих в комплект, обрабатываемый "arduinoIDE "компилятором"".
:wink:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт июн 04, 2020 14:24:14 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
BOB51 писал(а):
черезмерное усложнение периферии
Даташит не читал, но судя по описанию, периферия не такая сложная. Бывает сложнее. Но какой смысл в сложной периферии при слабом ядре? Оно не успеет обрабатывать все запросы. Это все равно что в комп поставить мощную видеокарту и самый слабый процессор и 128 МБ ОЗУ. Толку от видеокарты?
Непопулярность новых PIC и AVR из-за их слабого 8-ми битного ядра. Сейчас хватает МК с более производительным ядром и периферией и при этом стоимость на уровне и дешевле новых AVR. Кто хочет платить больше, а получать меньше?

BOB51 писал(а):
Ядро то осталось прежним
И это большой минус МК! Представьте что вы из мотоцикла сделали гоночный автомобиль, а двигатель остался тот же. Что получится?

BOB51 писал(а):
Третье - малое распространение на отдельных территориях.
Потому что упустили рынок. На нем появились дешевые производительные МК, а у микрочипа и Atmel таких не оказалось.

BOB51 писал(а):
Причина слабой востребованности в радиолюбительском обиходе супернашпигованных аппаратной периферией МК также имеет место.
Если радиолюбителям нужен мощный МК, они используют STM32. Потому что дешево, много статей, много IDE включая бесплатные. С доставаемостью сложностей нет. Очень дешевый отладчик и многое другое.

BOB51 писал(а):
Ведь большинство рутинных бытовых задач такого обилия средств не требует.
У всех задачи разные. Вот к примеру если нужно решить простую задачу я возьму копеечный (0.30$) STM32, а не PIC или AVR. И многие поступят также. Почему? Во первых лучше хорошо знать МК одного производителя чем посредственно разных. Во вторых, отладка. Она экономит время. В дешевых и простых PIC и AVR ее нет. В третих IDE. Когда есть выбор примерно из 20 IDE подбираешь ту что больше подходит, а не ту что предоставил производительно МК и без альтернатив! Тоже касается компиляторов.

BOB51 писал(а):
В то же время как минимум необходимо неиспользуемые модули в обязательном порядке корректно отключать при запуске МК.
Они при запуске должны быть отключены. Их необходимо включать если используются. Если это не так, то в топку такие МК!

BOB51 писал(а):
Из имеющихся вариантов я бы отдал предпочтение подвиду PIC24, ёжли бы те МК были "более демократичны" по ценам/доступности.
До 32-ух бит не дотягивают, а это влияет на производительность.

BOB51 писал(а):
Я ведь не кристалл atmega328 использую, а ""DIP-микросборку" марки ардуино нано или ардуино про-мини".
В чем разница? Это МК с обвязкой и не более того! Или хотите сказать что ATmega328 в ардуине отличается от оригинальной?

BOB51 писал(а):
По сути такое применение равноценно использованию некоего МК с собственным набором команд и собственным компилятором.
Чего? :shock: :facepalm: Хотите скачать что в ардуине не оригинальный ATmega328 и что компилятор на GCC? :))) :facepalm:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт июн 04, 2020 14:30:08 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18472
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
понеслось говно по трубам!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт июн 04, 2020 14:44:32 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1502
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15470
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
:music:
Надоело уже повторять - подход к ардуиноподобным с точки зрения используемого МК в корне неверен -
мы имеем дело с DIP микросборкой имеющей выводы и определенную в референсе возможность выполнения набора команд.
А что там внутри - это уже вторично "черный ящик".
Дело пользователя - определить чего необходимо делать внешним выводам платки.
При таком подходе каждая платка/платформа всего лишь еще одна разновидность элементной базы.
8)
Второй подход - использование платки как уже изготовленного фрагмента конструкции с разработкой программы под конкретный МК, установленный на платке это уже не ардуина, а стандартная работа с обычным МК (минуя стадию первичного монтажа деталюшек).
Этот вариант и так в других темах достаточно проработан. И ничем от стандартной работы не отличается.
Но то уже не работа под ардуино, а использование заранее собранного фрагмента конструкции будет.
:beer:


Последний раз редактировалось BOB51 Чт июн 04, 2020 20:28:39, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт июн 04, 2020 15:04:25 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
ARV писал(а):
понеслось говно по трубам!
Если с чем-то не согласны - конкретизируйте.
Я не то что ругаю 8-ми битники. Просто они устарели по сегодняшним меркам. Да, они позволяют решать задачи, но есть МК позволяющие их решить проще и эффективнее.

BOB51 писал(а):
мы имеем дело с DIP микросборкой имеющей выводы и определенную в референсе возможность выполнения набора команд.
Это просто отладочная плата! Набор команд - асм инструкции МК.

BOB51 писал(а):
А что там внутри - это уже вторично "черный ящик".
Это неэффективно. Вы не всможете использовать все возможности ограничиваясь только определенным набором команд когда платформа поддерживает значительно больше! Но дело ваше. Вы себя этим ограничиваете.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт июн 04, 2020 16:19:25 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18472
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Мурик писал(а):
Вы себя этим ограничиваете
самый несчастный человек тот, перед которым бесконечный выбор вариантов. человек, который сам себя ограничил в выборе гораздо ближе к счастью.

если вы этого не понимаете, то уверен, с возрастом это пройдет (или придёт, как посмотреть). но, пытаясь причесать всех своей гребенкой, вы постоянно оказываете медвежью услугу. хотя бы это вы можете понять, что выбор - дело добровольное? любой выбор под давлением - это не выбор, а сдача на милость победителя!

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт июн 04, 2020 19:55:22 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
Я прошел через PIC и AVR. Писал на асме и я четко понимаю все достоинства и недостатки 8-ми битников. Переход на 32-ух битные МК значительно облегчил разработку. Так то я не просто так пишу про ограниченность и про топтание на месте. Нужно двигаться дальше, а не вцепится в МК 20-ти летней давности и отвергать современные.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт июн 04, 2020 20:25:24 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1502
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15470
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Никто более навороченное не отвергает - каждому изделию свое применение.
8)
Однако не делать же простейшую автоматику на многоядерном процессоре.
:tea:
Насчет ограничений при работе с платками адуринки...
Если для решения задачи достаточно имеющегося в "черном ящике" набора средств - то это и будет оптимальным решением.
Не хватит имеющегося - тогда и будут рассматриваться иные варианты.
На сегодня я еще даже всеми заложенным в ассемблере средствами не пользовался - только из интереса пробы сделал...
Смысл доказывать преимущество, если необходимости в его применении еще не возникла?
8)
Да и как уже ранее выяснили ардуино IDE все-таки имеет элементы С++...
:wink:
Насчет "те же команды ассемблера"...
Дело тут несколько иначе рассматривать надо.
Вы ведь сторонник новых подходов, и освоения?
В случае с ардуиноподобными к сожалению многие пали жертвой стереотипа.
Возможно в немалой степени из-за "двойственности" самой идеи дуинки (недаром это в ее незвании читается).
можно с теми платформами по старинке на низкоуровневом программировании работать, а можно и иначе - отбросив начинку и низкоуровневое программирование - принять модель "черного ящика" с системой команд соответствующей референсу IDE.
Да, с точки зрения ассемблера или чистого Си в отношении конкретного МК на конкретной платке это значительное ограничение возможностей.
Но у нас ведь и подход другой. А значит никаких ограничений относительно "черного ящика" в принципе не наблюдается, как и необходимости знать что у него внутри (и как те потроха настраиваются).
Так что без лишнего фанатизма причисляем ардуиноподобные к новому "кубику" в арсенале имеющейся элементной базы.
Вопрос где и что из имеющихся ресурсов использовать - решается по мере необходимости.
:beer:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт июн 04, 2020 21:52:47 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
BOB51 писал(а):
Однако не делать же простейшую автоматику на многоядерном процессоре.
Многоядерные МК конечно есть, но они пока не перешли в массовый сегмент. :dont_know: Так что подождите немножко. :)

BOB51 писал(а):
Если для решения задачи достаточно имеющегося в "черном ящике" набора средств - то это и будет оптимальным решением.
Решение может быть оптимальным, а может быть "так что лишь бы работало". :facepalm: На ардуинах обычно получается второе. Чтобы было первое, нужно перейти от функций ардуины к регистрам. Не нужно привыкать к стилю "тяп-ляп и работает". Обычно это крайне не оптимально. :dont_know:
Например загляните в библиотеку работы с сервоприводами. Она требует много ресурсов МК. И это вместо того чтобы по нормальному использовать несколько десятков ШИМ в современных МК что вообще не требует участия процессора. Разницу замечаете? С остальными библиотеками также.

BOB51 писал(а):
Смысл доказывать преимущество, если необходимости в его применении еще не возникла?
Не все теоретики. У многих задачи превышают возможности ардуины и начинается былосборка - несколько адруин там где при оптимальном написании кода хватило бы одной.

BOB51 писал(а):
Да и как уже ранее выяснили ардуино IDE все-таки имеет элементы С++
Вообще-то если не знали у ардуины компиль GCC, т. е. язык C/C++.

BOB51 писал(а):
Но у нас ведь и подход другой. А значит никаких ограничений относительно "черного ящика" в принципе не наблюдается, как и необходимости знать что у него внутри
Если писать для ARM или ESP как для AVR, в итоге получим возможности как у авра. Это так к сведению если не знали.
Проще вместо ардуины взять современные 32-ух битные МК и они станут универсальным инструментом для решения задач. Т. е. использовать одну мощную платформу по полной, чем несколько на 10%.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пт июн 05, 2020 05:02:35 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2559
Рейтинг сообщения: 0
Мурик писал(а):
Видимо никому они не нужны
мода...

Конкуренция!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пт июн 05, 2020 06:56:35 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18472
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Конкуренция это лишь приличное оправдание безумию моды.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пт июн 05, 2020 08:04:57 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1502
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15470
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Мурик
Вот как раз "стандартное" восприятие адуринки как "просто МК на платке" при работе в рамках среды так же как и в рамках стандартного GCC "в чистом виде" и приводит к большинству ошибок.
Собственно в состав IDE введены функции использующие аппаратные модули "по собственному усмотрению" авторов IDE.
Если в такой ситуации не зная внутреннего обустройства тех настроек гнать привычный для применения в рамках "чистого GCC" код, использующий аппаратные модули по усмотрению автора конкретной конструкции конфликты неизбежны.
У большинства пользователей ессно нет необходимого опыта для подобного "глубококопания".
Вторая частовстречающаяся ошибка - отсутствие учета специфики схемотехники.
Это правда и обычных конструкций сплошь и рядом касается, но в случае "DIP-микросборки" особо заметно.
Дополнительные сложности накладывают установленные на многих платках системы распределения питания (особо в случае устаноывки USB-TTL мостов "на борту").
Описаний данных тонкостей найти весьма сложно - приходится собирать из разрозненных источников по крупицам...
Тем более, что у каждой из платформ свои нюансы, относящиеся к аппаратной начинке используемых там МК - это на случай, ежли внезапно какой "выпендреж" захочется сотворить за рамками референса.
Ежли уж о компиляторах, применяемых в ардуиноIDE вести речь, то высказывание
"...
BOB51 писал(а):
Да и как уже ранее выяснили ардуино IDE все-таки имеет элементы С++
Вообще-то если не знали у ардуины компиль GCC, т. е. язык C/C++.

BOB51 писал(а):
Но у нас ведь и подход другой. А значит никаких ограничений относительно "черного ящика" в принципе не наблюдается, как и необходимости знать что у него внутри
Если писать для ARM или ESP как для AVR, в итоге получим возможности как у авра. Это так к сведению если не знали.
..."
противоречит самому себе - ибо в arduinoIDE для каждого семейства применяется соответствующий компилятор и дополнительные инструменты - т.е. для АРМ платформ используются АРМ компиляторы, для ESP - свои инструпенты (и весьма навороченные).
В рамках IDE ВСЕ платформы оцениваются КАК РАЗНОВИДНОСТЬ УСТРОЙСТВА (платформы, DIP-микросборки) семейства АРДУИНО, а не как АВР, АРМ или иные МК в рамках разницы между семействами МК имеющейся.
Поэтому де факто во всех случаях мы должны получить результат с ВОЗМОЖНОСТЯМИ КАК У АРДУИНО, а не "как у АВР"или "как у АРМ" или иных МК, в рамках ПЛАТФОРМ использующихся.
Это более аналогия универсальной ОС, одинаково работающей на разных ПК, ноутах и прочих устройствах.
8)
Кстати... а чего Вы можете высказать насчет моих мыслей по работе с директивами условного ассемблирования (avrasm2/c51asm)?
Диапазон видимости, разница между директивами с префиксами в виде точки(.) и слэша(#)?
Это начиная отсюда
https://radiokot.ru/forum/viewtopic.php ... 3#p3849033
и по
https://radiokot.ru/forum/viewtopic.php ... 3#p3849603
включительно?
Возможно приходилось встречаться с подобными вопросами при работе под ассемблером с "большими проектами"...
:roll:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пт июн 05, 2020 13:23:58 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3382
Рейтинг сообщения: 0
BOB51 писал(а):
Вот как раз "стандартное" восприятие адуринки как "просто МК на платке" при работе в рамках среды так же как и в рамках стандартного GCC "в чистом виде" и приводит к большинству ошибок.
Все наоборот. Незнание МК и компилятора приводит к ошибкам и не оптимальному коду. Но вы можете верить в свою правоту если хотите, но правы от этого вы не станете. :dont_know:

BOB51 писал(а):
Собственно в состав IDE введены функции использующие аппаратные модули "по собственному усмотрению" авторов IDE.
Куча кривых и не оптимальных функций. Смотрите как устроена функция digitalWrite. :shock:
Код:
const uint8_t PROGMEM digital_pin_to_timer_PGM[] = {
   // TIMERS      
   // ----------      
   NOT_ON_TIMER   , // PE 0 ** 0 ** USART0_RX   
   NOT_ON_TIMER   , // PE 1 ** 1 ** USART0_TX   
   TIMER3B   , // PE 4 ** 2 ** PWM2   
   TIMER3C   , // PE 5 ** 3 ** PWM3   
   TIMER0B   , // PG 5 ** 4 ** PWM4   
   TIMER3A   , // PE 3 ** 5 ** PWM5   
   TIMER4A   , // PH 3 ** 6 ** PWM6   
   TIMER4B   , // PH 4 ** 7 ** PWM7   
   TIMER4C   , // PH 5 ** 8 ** PWM8   
   TIMER2B   , // PH 6 ** 9 ** PWM9   
   TIMER2A   , // PB 4 ** 10 ** PWM10   
   TIMER1A   , // PB 5 ** 11 ** PWM11   
   TIMER1B   , // PB 6 ** 12 ** PWM12   
   TIMER0A   , // PB 7 ** 13 ** PWM13   
   NOT_ON_TIMER   , // PJ 1 ** 14 ** USART3_TX   
   NOT_ON_TIMER   , // PJ 0 ** 15 ** USART3_RX   
   NOT_ON_TIMER   , // PH 1 ** 16 ** USART2_TX   
   NOT_ON_TIMER   , // PH 0 ** 17 ** USART2_RX   
   NOT_ON_TIMER   , // PD 3 ** 18 ** USART1_TX   
   NOT_ON_TIMER   , // PD 2 ** 19 ** USART1_RX   
   NOT_ON_TIMER   , // PD 1 ** 20 ** I2C_SDA   
   NOT_ON_TIMER   , // PD 0 ** 21 ** I2C_SCL   
   NOT_ON_TIMER   , // PA 0 ** 22 ** D22   
   NOT_ON_TIMER   , // PA 1 ** 23 ** D23   
   NOT_ON_TIMER   , // PA 2 ** 24 ** D24   
   NOT_ON_TIMER   , // PA 3 ** 25 ** D25   
   NOT_ON_TIMER   , // PA 4 ** 26 ** D26   
   NOT_ON_TIMER   , // PA 5 ** 27 ** D27   
   NOT_ON_TIMER   , // PA 6 ** 28 ** D28   
   NOT_ON_TIMER   , // PA 7 ** 29 ** D29   
   NOT_ON_TIMER   , // PC 7 ** 30 ** D30   
   NOT_ON_TIMER   , // PC 6 ** 31 ** D31   
   NOT_ON_TIMER   , // PC 5 ** 32 ** D32   
   NOT_ON_TIMER   , // PC 4 ** 33 ** D33   
   NOT_ON_TIMER   , // PC 3 ** 34 ** D34   
   NOT_ON_TIMER   , // PC 2 ** 35 ** D35   
   NOT_ON_TIMER   , // PC 1 ** 36 ** D36   
   NOT_ON_TIMER   , // PC 0 ** 37 ** D37   
   NOT_ON_TIMER   , // PD 7 ** 38 ** D38   
   NOT_ON_TIMER   , // PG 2 ** 39 ** D39   
   NOT_ON_TIMER   , // PG 1 ** 40 ** D40   
   NOT_ON_TIMER   , // PG 0 ** 41 ** D41   
   NOT_ON_TIMER   , // PL 7 ** 42 ** D42   
   NOT_ON_TIMER   , // PL 6 ** 43 ** D43   
   TIMER5C   , // PL 5 ** 44 ** D44   
   TIMER5B   , // PL 4 ** 45 ** D45   
   TIMER5A   , // PL 3 ** 46 ** D46   
   NOT_ON_TIMER   , // PL 2 ** 47 ** D47   
   NOT_ON_TIMER   , // PL 1 ** 48 ** D48   
   NOT_ON_TIMER   , // PL 0 ** 49 ** D49   
   NOT_ON_TIMER   , // PB 3 ** 50 ** SPI_MISO   
   NOT_ON_TIMER   , // PB 2 ** 51 ** SPI_MOSI   
   NOT_ON_TIMER   , // PB 1 ** 52 ** SPI_SCK   
   NOT_ON_TIMER   , // PB 0 ** 53 ** SPI_SS   
   NOT_ON_TIMER   , // PF 0 ** 54 ** A0   
   NOT_ON_TIMER   , // PF 1 ** 55 ** A1   
   NOT_ON_TIMER   , // PF 2 ** 56 ** A2   
   NOT_ON_TIMER   , // PF 3 ** 57 ** A3   
   NOT_ON_TIMER   , // PF 4 ** 58 ** A4   
   NOT_ON_TIMER   , // PF 5 ** 59 ** A5   
   NOT_ON_TIMER   , // PF 6 ** 60 ** A6   
   NOT_ON_TIMER   , // PF 7 ** 61 ** A7   
   NOT_ON_TIMER   , // PK 0 ** 62 ** A8   
   NOT_ON_TIMER   , // PK 1 ** 63 ** A9   
   NOT_ON_TIMER   , // PK 2 ** 64 ** A10   
   NOT_ON_TIMER   , // PK 3 ** 65 ** A11   
   NOT_ON_TIMER   , // PK 4 ** 66 ** A12   
   NOT_ON_TIMER   , // PK 5 ** 67 ** A13   
   NOT_ON_TIMER   , // PK 6 ** 68 ** A14   
   NOT_ON_TIMER   , // PK 7 ** 69 ** A15   
};

const uint8_t PROGMEM digital_pin_to_bit_mask_PGM[] = {
   // PIN IN PORT      
   // ----------      
   _BV( 0 )   , // PE 0 ** 0 ** USART0_RX   
   _BV( 1 )   , // PE 1 ** 1 ** USART0_TX   
   _BV( 4 )   , // PE 4 ** 2 ** PWM2   
   _BV( 5 )   , // PE 5 ** 3 ** PWM3   
   _BV( 5 )   , // PG 5 ** 4 ** PWM4   
   _BV( 3 )   , // PE 3 ** 5 ** PWM5   
   _BV( 3 )   , // PH 3 ** 6 ** PWM6   
   _BV( 4 )   , // PH 4 ** 7 ** PWM7   
   _BV( 5 )   , // PH 5 ** 8 ** PWM8   
   _BV( 6 )   , // PH 6 ** 9 ** PWM9   
   _BV( 4 )   , // PB 4 ** 10 ** PWM10   
   _BV( 5 )   , // PB 5 ** 11 ** PWM11   
   _BV( 6 )   , // PB 6 ** 12 ** PWM12   
   _BV( 7 )   , // PB 7 ** 13 ** PWM13   
   _BV( 1 )   , // PJ 1 ** 14 ** USART3_TX   
   _BV( 0 )   , // PJ 0 ** 15 ** USART3_RX   
   _BV( 1 )   , // PH 1 ** 16 ** USART2_TX   
   _BV( 0 )   , // PH 0 ** 17 ** USART2_RX   
   _BV( 3 )   , // PD 3 ** 18 ** USART1_TX   
   _BV( 2 )   , // PD 2 ** 19 ** USART1_RX   
   _BV( 1 )   , // PD 1 ** 20 ** I2C_SDA   
   _BV( 0 )   , // PD 0 ** 21 ** I2C_SCL   
   _BV( 0 )   , // PA 0 ** 22 ** D22   
   _BV( 1 )   , // PA 1 ** 23 ** D23   
   _BV( 2 )   , // PA 2 ** 24 ** D24   
   _BV( 3 )   , // PA 3 ** 25 ** D25   
   _BV( 4 )   , // PA 4 ** 26 ** D26   
   _BV( 5 )   , // PA 5 ** 27 ** D27   
   _BV( 6 )   , // PA 6 ** 28 ** D28   
   _BV( 7 )   , // PA 7 ** 29 ** D29   
   _BV( 7 )   , // PC 7 ** 30 ** D30   
   _BV( 6 )   , // PC 6 ** 31 ** D31   
   _BV( 5 )   , // PC 5 ** 32 ** D32   
   _BV( 4 )   , // PC 4 ** 33 ** D33   
   _BV( 3 )   , // PC 3 ** 34 ** D34   
   _BV( 2 )   , // PC 2 ** 35 ** D35   
   _BV( 1 )   , // PC 1 ** 36 ** D36   
   _BV( 0 )   , // PC 0 ** 37 ** D37   
   _BV( 7 )   , // PD 7 ** 38 ** D38   
   _BV( 2 )   , // PG 2 ** 39 ** D39   
   _BV( 1 )   , // PG 1 ** 40 ** D40   
   _BV( 0 )   , // PG 0 ** 41 ** D41   
   _BV( 7 )   , // PL 7 ** 42 ** D42   
   _BV( 6 )   , // PL 6 ** 43 ** D43   
   _BV( 5 )   , // PL 5 ** 44 ** D44   
   _BV( 4 )   , // PL 4 ** 45 ** D45   
   _BV( 3 )   , // PL 3 ** 46 ** D46   
   _BV( 2 )   , // PL 2 ** 47 ** D47   
   _BV( 1 )   , // PL 1 ** 48 ** D48   
   _BV( 0 )   , // PL 0 ** 49 ** D49   
   _BV( 3 )   , // PB 3 ** 50 ** SPI_MISO   
   _BV( 2 )   , // PB 2 ** 51 ** SPI_MOSI   
   _BV( 1 )   , // PB 1 ** 52 ** SPI_SCK   
   _BV( 0 )   , // PB 0 ** 53 ** SPI_SS   
   _BV( 0 )   , // PF 0 ** 54 ** A0   
   _BV( 1 )   , // PF 1 ** 55 ** A1   
   _BV( 2 )   , // PF 2 ** 56 ** A2   
   _BV( 3 )   , // PF 3 ** 57 ** A3   
   _BV( 4 )   , // PF 4 ** 58 ** A4   
   _BV( 5 )   , // PF 5 ** 59 ** A5   
   _BV( 6 )   , // PF 6 ** 60 ** A6   
   _BV( 7 )   , // PF 7 ** 61 ** A7   
   _BV( 0 )   , // PK 0 ** 62 ** A8   
   _BV( 1 )   , // PK 1 ** 63 ** A9   
   _BV( 2 )   , // PK 2 ** 64 ** A10   
   _BV( 3 )   , // PK 3 ** 65 ** A11   
   _BV( 4 )   , // PK 4 ** 66 ** A12   
   _BV( 5 )   , // PK 5 ** 67 ** A13   
   _BV( 6 )   , // PK 6 ** 68 ** A14   
   _BV( 7 )   , // PK 7 ** 69 ** A15   
};

const uint8_t PROGMEM digital_pin_to_port_PGM[] = {
   // PORTLIST      
   // ----------      
   PE   , // PE 0 ** 0 ** USART0_RX   
   PE   , // PE 1 ** 1 ** USART0_TX   
   PE   , // PE 4 ** 2 ** PWM2   
   PE   , // PE 5 ** 3 ** PWM3   
   PG   , // PG 5 ** 4 ** PWM4   
   PE   , // PE 3 ** 5 ** PWM5   
   PH   , // PH 3 ** 6 ** PWM6   
   PH   , // PH 4 ** 7 ** PWM7   
   PH   , // PH 5 ** 8 ** PWM8   
   PH   , // PH 6 ** 9 ** PWM9   
   PB   , // PB 4 ** 10 ** PWM10   
   PB   , // PB 5 ** 11 ** PWM11   
   PB   , // PB 6 ** 12 ** PWM12   
   PB   , // PB 7 ** 13 ** PWM13   
   PJ   , // PJ 1 ** 14 ** USART3_TX   
   PJ   , // PJ 0 ** 15 ** USART3_RX   
   PH   , // PH 1 ** 16 ** USART2_TX   
   PH   , // PH 0 ** 17 ** USART2_RX   
   PD   , // PD 3 ** 18 ** USART1_TX   
   PD   , // PD 2 ** 19 ** USART1_RX   
   PD   , // PD 1 ** 20 ** I2C_SDA   
   PD   , // PD 0 ** 21 ** I2C_SCL   
   PA   , // PA 0 ** 22 ** D22   
   PA   , // PA 1 ** 23 ** D23   
   PA   , // PA 2 ** 24 ** D24   
   PA   , // PA 3 ** 25 ** D25   
   PA   , // PA 4 ** 26 ** D26   
   PA   , // PA 5 ** 27 ** D27   
   PA   , // PA 6 ** 28 ** D28   
   PA   , // PA 7 ** 29 ** D29   
   PC   , // PC 7 ** 30 ** D30   
   PC   , // PC 6 ** 31 ** D31   
   PC   , // PC 5 ** 32 ** D32   
   PC   , // PC 4 ** 33 ** D33   
   PC   , // PC 3 ** 34 ** D34   
   PC   , // PC 2 ** 35 ** D35   
   PC   , // PC 1 ** 36 ** D36   
   PC   , // PC 0 ** 37 ** D37   
   PD   , // PD 7 ** 38 ** D38   
   PG   , // PG 2 ** 39 ** D39   
   PG   , // PG 1 ** 40 ** D40   
   PG   , // PG 0 ** 41 ** D41   
   PL   , // PL 7 ** 42 ** D42   
   PL   , // PL 6 ** 43 ** D43   
   PL   , // PL 5 ** 44 ** D44   
   PL   , // PL 4 ** 45 ** D45   
   PL   , // PL 3 ** 46 ** D46   
   PL   , // PL 2 ** 47 ** D47   
   PL   , // PL 1 ** 48 ** D48   
   PL   , // PL 0 ** 49 ** D49   
   PB   , // PB 3 ** 50 ** SPI_MISO   
   PB   , // PB 2 ** 51 ** SPI_MOSI   
   PB   , // PB 1 ** 52 ** SPI_SCK   
   PB   , // PB 0 ** 53 ** SPI_SS   
   PF   , // PF 0 ** 54 ** A0   
   PF   , // PF 1 ** 55 ** A1   
   PF   , // PF 2 ** 56 ** A2   
   PF   , // PF 3 ** 57 ** A3   
   PF   , // PF 4 ** 58 ** A4   
   PF   , // PF 5 ** 59 ** A5   
   PF   , // PF 6 ** 60 ** A6   
   PF   , // PF 7 ** 61 ** A7   
   PK   , // PK 0 ** 62 ** A8   
   PK   , // PK 1 ** 63 ** A9   
   PK   , // PK 2 ** 64 ** A10   
   PK   , // PK 3 ** 65 ** A11   
   PK   , // PK 4 ** 66 ** A12   
   PK   , // PK 5 ** 67 ** A13   
   PK   , // PK 6 ** 68 ** A14   
   PK   , // PK 7 ** 69 ** A15   
};

const uint16_t PROGMEM port_to_output_PGM[] = {
   NOT_A_PORT,
   (uint16_t) &PORTA,
   (uint16_t) &PORTB,
   (uint16_t) &PORTC,
   (uint16_t) &PORTD,
   (uint16_t) &PORTE,
   (uint16_t) &PORTF,
   (uint16_t) &PORTG,
   (uint16_t) &PORTH,
   NOT_A_PORT,
   (uint16_t) &PORTJ,
   (uint16_t) &PORTK,
   (uint16_t) &PORTL,
}

#define pgm_read_byte(addr) (*(const unsigned char *)(addr))

#define digitalPinToTimer(P) ( pgm_read_byte( digital_pin_to_timer_PGM + (P) ) )
#define digitalPinToBitMask(P) ( pgm_read_byte( digital_pin_to_bit_mask_PGM + (P) ) )
#define digitalPinToPort(P) ( pgm_read_byte( digital_pin_to_port_PGM + (P) ) )
#define portOutputRegister(P) ( (volatile uint8_t *)( pgm_read_word( port_to_output_PGM + (P))) )

static void turnOffPWM(uint8_t timer)
{
   switch (timer)
   {
      #if defined(TCCR1A) && defined(COM1A1)
      case TIMER1A:   cbi(TCCR1A, COM1A1);    break;
      #endif
      #if defined(TCCR1A) && defined(COM1B1)
      case TIMER1B:   cbi(TCCR1A, COM1B1);    break;
      #endif
      #if defined(TCCR1A) && defined(COM1C1)
      case TIMER1C:   cbi(TCCR1A, COM1C1);    break;
      #endif
      
      #if defined(TCCR2) && defined(COM21)
      case  TIMER2:   cbi(TCCR2, COM21);      break;
      #endif
      
      #if defined(TCCR0A) && defined(COM0A1)
      case  TIMER0A:  cbi(TCCR0A, COM0A1);    break;
      #endif
      
      #if defined(TCCR0A) && defined(COM0B1)
      case  TIMER0B:  cbi(TCCR0A, COM0B1);    break;
      #endif
      #if defined(TCCR2A) && defined(COM2A1)
      case  TIMER2A:  cbi(TCCR2A, COM2A1);    break;
      #endif
      #if defined(TCCR2A) && defined(COM2B1)
      case  TIMER2B:  cbi(TCCR2A, COM2B1);    break;
      #endif
      
      #if defined(TCCR3A) && defined(COM3A1)
      case  TIMER3A:  cbi(TCCR3A, COM3A1);    break;
      #endif
      #if defined(TCCR3A) && defined(COM3B1)
      case  TIMER3B:  cbi(TCCR3A, COM3B1);    break;
      #endif
      #if defined(TCCR3A) && defined(COM3C1)
      case  TIMER3C:  cbi(TCCR3A, COM3C1);    break;
      #endif

      #if defined(TCCR4A) && defined(COM4A1)
      case  TIMER4A:  cbi(TCCR4A, COM4A1);    break;
      #endif               
      #if defined(TCCR4A) && defined(COM4B1)
      case  TIMER4B:  cbi(TCCR4A, COM4B1);    break;
      #endif
      #if defined(TCCR4A) && defined(COM4C1)
      case  TIMER4C:  cbi(TCCR4A, COM4C1);    break;
      #endif         
      #if defined(TCCR4C) && defined(COM4D1)
      case TIMER4D:   cbi(TCCR4C, COM4D1);   break;
      #endif         
         
      #if defined(TCCR5A)
      case  TIMER5A:  cbi(TCCR5A, COM5A1);    break;
      case  TIMER5B:  cbi(TCCR5A, COM5B1);    break;
      case  TIMER5C:  cbi(TCCR5A, COM5C1);    break;
      #endif
   }
}

void digitalWrite(uint8_t pin, uint8_t val)
{
   uint8_t timer = digitalPinToTimer(pin);
   uint8_t bit = digitalPinToBitMask(pin);
   uint8_t port = digitalPinToPort(pin);
   volatile uint8_t *out;

   if (port == NOT_A_PIN) return;

   // If the pin that support PWM output, we need to turn it off
   // before doing a digital write.
   if (timer != NOT_ON_TIMER) turnOffPWM(timer);

   out = portOutputRegister(port);

   uint8_t oldSREG = SREG;
   cli();

   if (val == LOW) {
      *out &= ~bit;
   } else {
      *out |= bit;
   }

   SREG = oldSREG;
}
Как считаете не слишком много кода чтобы изменить стояние вывода? По нормальному это требует пары асм инструкций. А код ардиуны потребует на несколько порядков больше! Но вы можете и дальше твердить про "черный ящик" совершенно не представляя какой былокод в нем! :dont_know: :facepalm:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2383 ]     ... , , , 50, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y