Мигать светодиодом. ARM или не-ARM?

Флейм в чистом виде - все что угодно...
Но - в рамках закона :)
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

oleg110592 писал(а):чип, работающий с более чем миллионом микрорефлекторов на ARM или не-ARM?
это не имеет значения, так как система совершенно тупорылая, не несущая никакой полезной функции. на сколько я знаю, во многих странах подобные видеоэффекты запрещены в принципе. но маркетологов это не смущает.

судя по всему вы окончательно потеряли берега в желании загадить серверы Радиокота спамом, раз постите уже чисто автомобильные фишки. жду новостей из мира пошива трусов с заключительной фразой "производство 100 миллионов трусов в год обходится без ARM или нет?"
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Нашел транзистор. Понюхал.
Сообщения: 196
Зарегистрирован: Пн фев 05, 2018 18:03:00

Сообщение linuxdude »

[uquote="SIM31",url="/forum/viewtopic.php?p=3325217#p3325217"]Может Raspberry Pi и "странный", но система на порядок надежней и отлаженней китайских поделок, Orange Pi и прочих.[/uquote] Да ну бросьте. Китайцы отлично работают и ломаться там особо нечему. Если уметь их готовить. Главное не борзеть с частотами и вольтажами, использовать хороший питальник (единственное что реально имеет перспективы умереть, из-за обычного опухания кондеров). И помнить что китайцы любят себя переоценивать на предмет MHz. Ну и образ системы нормальный компоновать. Китайский кот - кривой он, вот! Но многие чипы в том или ином объеме поддерживаются официальным линуксным кернелом. Там плохой кот - не пройдет.

А у Pi - поганая сеть, на убогом usb-ethernet чипе. И весь на все порты и сеть - делит один несчастный 480Мбит контроллер на всю ораву через хаб (они любят характерный чип хаб+адаптер ethernet). Работает это понятно как. Греется этот чип, насколко я помню, покруче любых китайцев. Менеджмент питания? В броадкомовском убожестве его нет! У китайцев в половине этих штук настоящий менеджер питания, очень крутая программируемая синхронная понижайка, многоканальная, с кучей LDO. По сравнению с схемой питания RasPi - космический хайтек. Особенно если с ранними raspi сравнить где ламерский линейный стаб вообще. Никакой made in и горбатый маркетинг ТАКОЙ разрыв в технологиях не лечат. Это ж в основном всякие околомобилочные решения, там конкуренция, поэтому технологически оно очень даже. А броадком придумал куда паять чипы от чего-то типа DVD плееров, которые резко стали всем не нужны. Отсюда и разница в технологиях - побочная пайка чипов vs слив мусора. И даже в самых дешевых копеечных orange китайцы придумали наглый хак однорежимного step-down для Vcore проца. Когда они GPIO могут резисторы коммутировать, тем самым делая примитивный двухуровневый DVFS. Для броадкома даже этот дешевый хак - недостижимый хайтек, оказывается. Потому что там нет даже такого. Вообще прикольное инженерное решение - двухуровневое питание проца из дешевого одноуровневого stepdown. Др того как валить на повышенную частоту, чип зажимает GPIO, подключая резюк, напруга повышается, проц может безопасно выставить высокую частоту.

Еще есть реально рабочий аппаратный вачдог. Я проверял, работает. И вообще, олимекс на этом промышленные варианты добра наворачивает. И их реально применяют в системах управления. И никого не пугают там китайские чипы. А вот распи ставить в промавтоматику я бы пожалуй не стал. Слишком уж дерьмовая схемотехника.
Самый глючный вариант перепрошитые роутеры, чуть другая ревизия и глюк на глюке.
Опять же - вопрос выбора железа и прошивки. Навалом отличного стабильного железа по цене мусора. И прошивки хорошие есть. Вопрос пряморукости того кто систему реализует.
Китайцы могут и остановить производство своих поделок и перейти на новую несовместимую ни с чем версию, и все наработки пропадут. Такая массовость Raspberry Pi в чем-то круче промышленного исполнения, так как сообществом найден каждый глюк, сюрпризов не будет.
Поэтому есть штуки от олимекса, например. Те же чипы, но с гарантиями доступности. От фирмы которая профессионально занимается встраиваемыми решениями, а не рубит деньги на хламе используя дешевый пиар. В отличие от броадкома и их дружков делающих пи, которые вообще-то никому ничего не обещали. И если они завтра снимут - то это никак не оспоришь.

Ну и между нами, для лично меня не сложно перекатать мою систему на соседний чип. Это буквально бутлоадер другой взять, кернел может быть пересобрать. Или даже опять же чужой готовый взять. Остальное вообще не изменится. Ну может DVFS перенастроить (броадкому это вообще не грозит, за его отсутствием) и GPIO/IIO. Какие к черту "наработки пропадут"? Это прикол такой?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

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

искусственные глаза - Lidar (импульсы лазерного света отражается от объекта обратно в детектор и время измеряется):
* Разрешение хуже, чем камеры DV
* Он не может «видеть» 2D дорожной разметки
* По той же причине он не может «читать» дорожные знаки
* Известный электромеханические аппаратно до сих пор было очень дорого
* Выходная мощность лазера ограничена длиной волны света 600-1000nm может вызвать повреждение глаз для других участников дорожного движения. В будущем возможно использовать менее разрушительный длину волны 1550 нм

искусственные глаза - Radar
* Радар не имеет разрешения для идентификации объекта, только обнаружение
* 24-29GHz полоса радара не способен различать множественные цели надежно
* FMCW РЛС требует сложной обработки сигнала в приемнике

Lidar, Radar и DV камеры требуют невероятно мощных компьютеров , чтобы превратить свои выходные сигналы в 3D карту мира вокруг автомобиля со статическими объектами , которые идентифицируются и отслеживаются в режиме реального времени. Такая вычислительная мощность становится доступна в формате одноплатных компьютеров, достаточно малых и достаточно дешевых. NVIDIA DRIVE PX Pegasus, например, не только обеспечивает функции 320 TOPS обработки AI с датчиком слияния, но она также сертифицирована для автомобильной функциональной безопасности стандарта ISO 26262 ASIL-D. Есть еще Renesas R-Car H3Модуль SiP с восемью ARM Cortex-A57 и A53 ядер и с ядром безопасности Cortex-R7. Может работать восемь камер и управлять информационно-развлекательной системе автомобиля - все в ISO 26262 ASIL-B!
https://www.nvidia.com/en-us/self-drivi ... /drive-px/
https://www.renesas.com/en-us/solutions ... ar-h3.html
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

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

ни к чему этому данный вброс не имеет отношения, и является вольным изложением заказных рекламных статей и анонсов.

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

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

уже вопрос рассматривался, повтор:
Вы можете пообщаться на Форуме с единомышленниками о вещах, беспокоящих любого электронщика. Для этого есть множество технических разделов. Форум - место для приятного и полезного общения.

я - любой электронщик - меня автомобильная электроника беспокоит, хочу общаться.
Реклама
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18783
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

oleg110592 писал(а):повтор
вот-вот, и я об этом: постоянно одно и то же.
форум у нас - тематический, в нем есть разделы по темам. для рекламы, на сколько я понимаю, раздела отдельного вообще нет. для общения на разные волующие граждан вопросы есть МЯЯЯУ. кстати, есть и темы беспокойных автолюбителей.

ваша тема по содержанию - открытая реклама, т.к. (на глазок) в 90% случаев посты содержат ссылки на сайты в домене .com, единственный смысл существования которых - продажи. остальные ваши ссылки только на заказные (подчеркиваю это!!!) статьи с восхваляющими какие-то продукты материалами (т.е. рекламные статьи). крайне редкое исключение - это сообщения "мне на зло", когда ссылки ведут на иностранные сайты или видео с демонстрацией якобы любительских проектов, что как-то попадает в тематику сайта Радиокот.

и, что удивительно, всё это терпит администрация... что я могу конспирологически объяснить только существованием каких-то взаимовыгодных отношений между вами и ими, неочевидных простым смертным.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

дык и я все время об том же - если считаете что мои посты реклама (я так не считаю - новости с головы не выдумываю) - жалуйтесь модераторам, скажут - тут же будем прекращать безобразия нарушать.
з.ы. никого больше "реклама" не волнует
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

уже вопрос рассматривался, повтор:
Вы можете пообщаться на Форуме с единомышленниками о вещах, беспокоящих любого электронщика. Для этого есть множество технических разделов. Форум - место для приятного и полезного общения.

я - любой электронщик - меня автомобильная электроника беспокоит, хочу общаться.




Почистил тему от оффтопа.
aen


Добавлено after 1 hour 36 minutes 51 second:
Re: Мигать светодиодом. ARM или не-ARM?
офф (удалю позже) спасибо, радикально, теперь можно с чистого листа
Нашел транзистор. Понюхал.
Сообщения: 196
Зарегистрирован: Пн фев 05, 2018 18:03:00

Сообщение linuxdude »

На мой вкус, STM32 не настолько уж и запредельно сложен, даже без HALов и чего там еще. Периферия конечно навороченная, но без нее ... было бы еще сложнее. Програмить микрочип? Я лучше яду выпью. AVR - цены какие-то не от мира сего, периферия никакая, а 8 битов все испортят если надо хоть немного посчитать. Их такие только в фонарики за 10 долларов с али ставить в виде 6-8 лапых тинек.
Друг Кота
Аватара пользователя
Сообщения: 25518
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="linuxdude",url="/forum/viewtopic.php?p=3326628#p3326628"]Програмить микрочип? Я лучше яду выпью.[/uquote]
Микрочип (речь о 8 и 16-разрядных платформах) и не рассчитан на "программеров". Он рассчитан на разработчиков железа. Поэтому вопросы программирования и его трудоемкости стоят там на десятом месте.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Взволновало, как электронщика, сие событие:
Компания Giada анонсировала компактную плату AP23-N3350.
СпойлерИзображение
Представленное решение выполнено в форм-факторе Pico-ITX: габариты составляют всего 100 × 72 мм. Основой служит аппаратная платформа Intel Apollo Lake. В частности, применён 14-нанометровый процессор Celeron N3350. Этот чип содержит два вычислительных ядра и графический ускоритель Intel HD Graphics 500. Номинальная тактовая частота составляет 1,1 ГГц, форсированная — 2,4 ГГц.
Плата несёт на борту 2 Гбайт оперативной памяти DDR3L-1600. Накопитель может быть подключен к стандартному порту SATA; кроме того, есть коннектор mSATA для твердотельного модуля.
Новинка оборудована сетевым контроллером Gigabit Ethernet с соответствующим разъёмом для подключения кабеля. Есть аналоговый интерфейс D-Sub для вывода изображения и два порта USB 3.0.
Новинка может быть оборудована модулем беспроводной связи Wi-Fi. Заявленный диапазон рабочих температур простирается от минус 20 до плюс 70 градусов Цельсия. Возможна работа с операционными системами Windows и Linux.
з.ы. Сейчас доделываю одну электронную поделку на Малинке, но такая платка, думаю, будет удобнее для будущих поделок - твердотельный модуль понадежнее SD имхо будет.
Нашел транзистор. Понюхал.
Сообщения: 196
Зарегистрирован: Пн фев 05, 2018 18:03:00

Сообщение linuxdude »

Микрочипу привет. Если уж только мигать светодиодом и прочая замена логических элементов, атмелы хотя-бы не такие инопланетные. Програмятся по людски. И кстати у младших PIC насколько я помню машинное слово толи 12, толи 14 битов. И крайне изврашенская и неэффективная работа с константами в программной памяти этой самой разрядности, через retlw. А так все МК так или иначе между железом и софтом - как процессоры в чистом виде они ни о чем.

А у интела есть кой-какие проблемы. Наиболее суровая из них - все что интел обычно стоит как килограмм бананов и ежевики. После чего оно оказывается не нужно хоть так хоть хоть сяк, потому что эта же денежка гораздо приятнее хрустит в своем кармане.
Друг Кота
Аватара пользователя
Сообщения: 25518
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

[uquote="linuxdude",url="/forum/viewtopic.php?p=3327582#p3327582"]насколько я помню[/uquote]
В этом и беда. Тут ключевое слово "насколько". Впрочем и обозначенный характер проблем выдает типичного "программера", круг проблем которого вращается вокруг системы команд и особенностей адресации памяти.
Однако есть практически бесконечный по объему класс задач, где периферия важнее вычислений.
Нынче 16-разрядная платформа Микрочипа ушла в ценовую нишу 1...2,5 доллара при весьма удобном аналоговом фронтэнде и прочем периферийном хозяйстве, да и ОЗУ за эти деньги дают очень много.
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

[uquote="linuxdude",url="/forum/viewtopic.php?p=3327582#p3327582"]и неэффективная работа с константами в программной памяти этой самой разрядности, через retlw[/uquote]
RETLW Возврат из подпрограммы с загрузкой константы в W - дело привычки. Вот переключение банков напрягало.
Зато вся память в PIC16 это регистры - большинство команд работает напрямую с этими регистрами (не надо загружать в рабочий регистр W). В AVR из RAM load/store (и в ARM вроде тоже). Переносил поделки когда то с PIC16 на AVR, показалось в PIC один и тот же код поплотнее размещался. Для поделок в основном PIC16F676 использовался ( Program Memory 1.75 KB), AVR - Mega48 (Program Memory 4 KB).
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Волнительно. Наш коллега электронщик Ted Yapo утверждает что придумал замену радиоактивным газообразным тритиевым источникам света (GTLS). RTILED - это светодиодные световые индикаторы с питанием от батареи, предназначенные для общего использования в ночное время. Используя достижения в области эффективности светодиодов, емкости аккумулятора и технологии микроконтроллеров, TritiLEDs работают от 1 до 25 лет в зависимости от выбора батареи и, в то же время, больше, чем обычные GTLS и могут заменить дорогостоящее, а иногда и незаконное тритиевое освещение в различных приложениях. Версия 3.0 проекта завершена и выпущена под лицензией MIT.
GitHub: https://github.com/tedyapo/tritiled
TritiLEDs - это оптимизированные светодиодные индикаторы, рассчитанные на несколько лет работы на одной литиевой ячейке. Их можно использовать везде, где вам нужно отметить что-то в темноте - первое приложение автора обозначало ноги треноги телескопа. Теперь доступна версия 3.0. Эта версия настраивается для работы от 1 до 10 лет (и, возможно, до 20) на ячейке CR2032, в качестве корпуса можно использовать недорогие полистирольные косметические банки для защиты от атмосферных воздействий.
Используется как раз «улучшенный», в принципе не дорогой PIC12LF1571, где с таймерами хорошо:
*2x 8-bit Timers (TMR0/TMR2)
*1x 16-bit Timer (TMR1)
*Three additional 16-bit Timers available using the 16-bit PWMs
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Заинтересовал ностальгический проект коллеги Aidan Lawrence - музыкальный плеер на синтезаторном чипе YM2151 FM.
Основной мозг установлен на "Blue Pill" платочке - это широко распространенный STM32F103C8.
все для повторения, изучения на GitHub:
https://github.com/AidanHockey5/YM2151_VGM_STM32
исходники вроде без ХАЛа и СПЛя, но на C++
демонстрационный видосик:
https://www.youtube.com/watch?v=VlT8aX9 ... e=youtu.be
з.ы. у меня в древние времена на ПК (типа i80286) была плата AdLib тоже с FM правда YM3812 - очень чудно играла (на то время) в играх DOS от Sierra, Wolfenstein 3D и даже в каких то шахматах.
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

oleg110592 писал(а):исходники вроде без ХАЛа и СПЛя, но на C++
Для ардуиноИДЕ. :dont_know:
Лучше был бы HAL или SPL. :)
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

глянул - не совсем Ардуино, а PlatformIO, но похоже:
можно запускать компиляцию и загрузку программ на несколько семейств микроконтроллеров (Atmel AVR, Atmel SAM, ST STM32, TI MSP430 и другие). При этом поддерживаются разные наборы библиотек(на сайте PlatformIO называются фреймворками): Arduino, Energia, mbed, а также нативный код для Atmel AVR, espressif, MSP430.
PlatformIO изначально ориентирована на работу из командной строки, также есть плагины для интеграции с текстовыми редакторами и IDE: Atom, CLion, Eclipse, Emacs, NetBeans, Qt Creator, Sublime Text, Vim и Visual Studio
глядел исходник main - вроде как "нативный код" - ничего лишнего:
#include "LTC6903.h"
#include "YM2151.h"
#include "SdFat.h"
#include <U8g2lib.h> - ну да ардуиновская дисплейная библиотека
иногда встречались вполне приличные (имхо) ардуиновские библиотеки
Друг Кота
Аватара пользователя
Сообщения: 3385
Зарегистрирован: Пн окт 11, 2010 19:00:08

Сообщение Мурик »

oleg110592 писал(а):глядел исходник main - вроде как "нативный код"
Это "нативный код"? :shock:
Спойлер

Код: Выделить всё

411	void setup()
412	{
413	    pinMode(prev_btn, INPUT_PULLUP);
414	    pinMode(rand_btn, INPUT_PULLUP);
415	    pinMode(next_btn, INPUT_PULLUP);
416	    pinMode(loop_btn, INPUT_PULLUP);
417	    pinMode(shuf_btn, INPUT_PULLUP);
418	    ltc.SetFrequency(3579545); //Init clock @ colorburst frequency.
419	    Serial.begin(9600);
420	    ym2151.Reset();
421	
422	    u8g2.begin();
423	    u8g2.setFont(u8g2_font_fub11_tf);
424	    u8g2.clearBuffer();
425	    u8g2.drawStr(0,16,"Aidan Lawrence");
426	    u8g2.drawStr(0,32,"YM2151, 2018");
427	    u8g2.sendBuffer();
428	    delay(3000);
429	
430	    if(!SD.begin())
431	    {
432	        Serial.println("Card Mount Failed");
433	        u8g2.clearBuffer();
434	        u8g2.drawStr(0,16,"SD Mount");
435	        u8g2.drawStr(0,32,"failed!");
436	        u8g2.sendBuffer();
437	        return;
438	    }
439	    RemoveSVI();
440	    File countFile;
441	    while ( countFile.openNext( SD.vwd(), O_READ ))
442	    {
443	      countFile.close();
444	      numberOfFiles++;
445	    }
446	    countFile.close();
447	    SD.vwd()->rewind();
448	    StartupSequence(FIRST_START);
449	
450	
451	
452	}
453	
454	
455	bool buttonLock = false;
456	void loop()
457	{
458	  while(Serial.available())
459	  {
460	    bool USBorBluetooh = Serial.available();
461	    char serialCmd = Serial.read();
462	    switch(serialCmd)
463	    {
464	      case '+': //Next song
465	        StartupSequence(NEXT);
466	      break;
467	      case '-': //Previous Song
468	        StartupSequence(PREVIOUS);
469	      break;
470	      case '*': //Pick random song
471	        StartupSequence(RNG);
472	      break;
473	      case '/': //Toggle shuffle mode
474	        playMode == SHUFFLE ? playMode = IN_ORDER : playMode = SHUFFLE;
475	        playMode == SHUFFLE ? Serial.println("SHUFFLE ON") : Serial.println("SHUFFLE OFF");
476	        DrawOLEDInfo();
477	      break;
478	      case '.': //Toggle loop mode
479	        playMode == LOOP ? playMode = IN_ORDER : playMode = LOOP;
480	        playMode == LOOP ? Serial.println("LOOP ON") : Serial.println("LOOP OFF");
481	        DrawOLEDInfo();
482	      break;
483	      case 'r': //Song Request, format:  r:mySongFileName.vgm - An attempt will be made to find and open that file.
484	      {
485	        String req = Serial.readString();
486	        req.remove(0, 1); //Remove colon character
487	        StartupSequence(REQUEST, req);
488	      }
489	      break;
490	      case '?': //Send back information about the track
491	        Serial.println(trackTitle);
492	      break;
493	    }
494	  }
495	  if(!digitalRead(next_btn))
496	    StartupSequence(NEXT);
497	  if(!digitalRead(prev_btn))
498	    StartupSequence(PREVIOUS);
499	  if(!digitalRead(rand_btn))
500	    StartupSequence(RNG);
501	  if(!digitalRead(shuf_btn) && !buttonLock)
502	  {
503	    playMode == SHUFFLE ? playMode = IN_ORDER : playMode = SHUFFLE;
504	    DrawOLEDInfo();
505	    playMode == SHUFFLE ? Serial.println("SHUFFLE ON") : Serial.println("SHUFFLE OFF");
506	    buttonLock = true;
507	  }
508	  if(!digitalRead(loop_btn) && !buttonLock)
509	  {
510	    playMode == LOOP ? playMode = IN_ORDER : playMode = LOOP;
511	    DrawOLEDInfo();
512	    playMode == LOOP ? Serial.println("LOOP ON") : Serial.println("LOOP OFF"); 
513	    buttonLock = true;
514	  }
515	  if(loopCount >= nextSongAfterXLoops)
516	  {
517	    if(playMode == SHUFFLE)
518	      StartupSequence(RNG);
519	    if(playMode == IN_ORDER)
520	      StartupSequence(NEXT);
521	  }
522	
523	  if(buttonLock)
524	  {
525	    if(digitalRead(loop_btn) && digitalRead(shuf_btn))
526	      buttonLock = false;
527	  }
528	
529	  unsigned long timeInMicros = micros();
530	  if( timeInMicros - startTime <= pauseTime)
531	  {
532	    // Serial.print("timeInMicros"); Serial.print("\t"); Serial.println(timeInMicros);
533	    // Serial.print("DELTA"); Serial.print("\t"); Serial.println(timeInMicros - startTime);
534	    // Serial.print("startTime"); Serial.print("\t"); Serial.println(startTime);
535	    //Serial.print("pauseTime"); Serial.print("\t"); Serial.println(pauseTime);
536	    //delay(150);
537	    return;
538	  }
539	  
540	  cmd = GetByte();
541	  switch(cmd)
542	  {
543	    case 0x54:
544	    {
545	      uint8_t addr = GetByte();
546	      uint8_t data = GetByte();
547	      ym2151.SendDataPins(addr, data);
548	      break;
549	    }
550	
551	    case 0x61:
552	    {
553	      //Serial.print("0x61 WAIT: at location: ");
554	      //Serial.print(parseLocation);
555	      //Serial.print("  -- WAIT TIME: ");
556	      uint32_t wait = 0;
557	      for ( int i = 0; i < 2; i++ )
558	      {
559	        wait += ( uint32_t( GetByte() ) << ( 8 * i ));
560	      }
561	
562	
563	    startTime = timeInMicros;
564	    pauseTime = ((1000.0 / (sampleRate/(float)wait))*1000);
565	    //delayMicroseconds(cachedWaitTime61);
566	    //delay(cachedWaitTime61);
567	    break;
568	    }
569	    case 0x62:
570	    startTime = timeInMicros;
571	    pauseTime = WAIT60TH;
572	    //delay(16.67);
573	    //delayMicroseconds(WAIT60TH); //Actual time is 16.67ms (1/60 of a second)
574	    break;
575	    case 0x63:
576	    startTime = timeInMicros;
577	    pauseTime = WAIT50TH;
578	    //delay(20);
579	    //delayMicroseconds(WAIT50TH); //Actual time is 20ms (1/50 of a second)
580	    break;
581	    case 0x70:
582	    case 0x71:
583	    case 0x72:
584	    case 0x73:
585	    case 0x74:
586	    case 0x75:
587	    case 0x76:
588	    case 0x77:
589	    case 0x78:
590	    case 0x79:
591	    case 0x7A:
592	    case 0x7B:
593	    case 0x7C:
594	    case 0x7D:
595	    case 0x7E:
596	    case 0x7F:
597	    {
598	      //Serial.println("0x7n WAIT");
599	      uint32_t wait = cmd & 0x0F;
600	      //Serial.print("Wait value: ");
601	      //Serial.println(wait);
602	      startTime = timeInMicros;
603	      pauseTime = preCalced7nDelays[wait];
604	      //delay(preCalced7nDelays[wait]);
605	    break;
606	    }
607	    case 0x66:
608	      if(loopOffset == 0)
609	        loopOffset = 64;
610	      loopCount++;
611	      vgm.seek(loopOffset);
612	      FillBuffer();
613	      bufferPos = 0;
614	      break;
615	    case 0xB5: //Ignore common secondary PCM chips
616	    case 0xB6:
617	    case 0xB7:
618	    case 0xB8:
619	    case 0xB9:
620	    case 0xBA:
621	    case 0xBB:
622	    case 0xBC:
623	    case 0xBD:
624	    case 0xBE:
625	    case 0xBF:
626	    GetByte();GetByte();
627	    break;
628	    case 0xC0: //Ignore SegaPCM:
629	    case 0xC1:
630	    case 0xC2:
631	    case 0xC3:
632	    GetByte();GetByte();GetByte();
633	    break;
634	
635	      default:
636	      // Serial.print("Defaulted command: "); Serial.println(cmd, HEX);
637	      // Serial.print("At: "); Serial.println(vgm.position()-1, HEX);
638	      break;
639	
640	  } 
641	}
Это 100%-ная ардуина! :dont_know:
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

ну вроде по тексту выглядит как C++
типа ym2151.Reset():
Reset() вроде как метод класса ym2151. По мне так читабельнее выглядит чем ХАЛ или СПЛ.
На главной страничке гитхаба автора указано - C++, там еще есть ESP8266_VGM_Player_PSG_YM2612 на Objective-C.
Теперь увидел - в файлике platformio.ini указана платформа и фреймворк:
platform = ststm32
board = genericSTM32F103C8
framework = arduino

з.ы. Интересненько - тут https://platformio.org/platforms/ststm32
фреймверков пишут завались:
...
SPL
STM32Cube
CMSIS
Ответить

Вернуться в «МЯЯЯУ!»