Например TDA7294

Форум РадиоКот :: Просмотр темы - Соревнование "свободных художников" по мини-хелловорду
Форум РадиоКот
https://radiokot.ru/forum/

Соревнование "свободных художников" по мини-хелловорду
https://radiokot.ru/forum/viewtopic.php?f=57&t=181932
Страница 1 из 4

Автор:  ARV [ Пт мар 25, 2022 10:13:14 ]
Заголовок сообщения:  Соревнование "свободных художников" по мини-хелловорду

есть желающие просто помериться письками? :)))

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

идея навеяна многократными вопросами о размерах и постоянном упоминании размеров прошивки практически в любой теме о МК.

вот, пока идея такая:
1. условия:
- код на С/С++, любой доступный компилятор Си/С++;
- запрещается ассемблер, ассемблерные вставки (ключевое слово asm), кроме входящих в "стандартный" комплект компилятора (aka libc);
- запрещаются любые "хаки" с использованием линкера типа линковки готового бинарного файла;
- разрешаются любые документированные и недокументированные фичи компилятора/линкера, которые можно повторить "стандартными" методами, т.е. командной строкой или makefile;
- разрешается использование любых фьюзов и т.п. аппаратных нюансов МК, которые могут быть повторены каждым без спец-приспособлений;
- МК тактируется только от любого доступного внутреннего источника тактирования.

2. задача:
- код генерации меандра 1 Гц для микроконтроллера attiny13

3. оценка результата:
- предлагаю оценивать результат в баллах по формуле:
(2048 + 64) / ((size + ram) * max(1, F)/min(1, F)), где:
size - размер прошивки в байтах;
ram - количество байт статически занятой памяти;
F - частота генерируемого сигнала.

max и min - это, соответственно, наибольшее и наименьшее из двух значений. это для того, чтобы оценить точность формирования меандра

посоревнуемся? кто первый, у кого меньше? ;) если будут другие идеи - предлагайте.

проверять можно в протеусе

Автор:  astrahard [ Пт мар 25, 2022 10:32:17 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

Здравая идея. Еще хочу хелловорд для ASIC.

Автор:  ARV [ Пт мар 25, 2022 10:36:46 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

astrahard писал(а):
хочу хелловорд для ASIC
если это то, о чем написано в вики, то это не для раздела AVR

Автор:  veso74 [ Пт мар 25, 2022 10:45:39 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

Можно поставить и "весовой коэффициент" за: количество строк в программе
(с указание того, что следует принимать за строку, или за все строки?).

(часто для внутр. алгор. тестов мне важен не размер памяти, а "скорость" написания кода для тестового кода,
потому что потом идет еще один тест, потом еще... до бесконечности :) ).

Автор:  ARV [ Пт мар 25, 2022 11:06:11 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

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

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

Автор:  veso74 [ Пт мар 25, 2022 11:14:05 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

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

Автор:  ARV [ Пт мар 25, 2022 11:26:07 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

лучше бы выложили свои достижения в этом соревновании :) я свои вечером выложу.

Автор:  pyzhman [ Пт мар 25, 2022 11:34:58 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

В сторону: -Сейчас полгода будут мурыжить условия...

Автор:  DX168B [ Пт мар 25, 2022 12:10:59 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

Здравая идея. Еще хочу хелловорд для ASIC.

ASIC не только лишь все могут себе позволить. Мало кто может себе позволить. :)))

Давай хотя-бы ПЛИС.
Код:
module Generator();
    input wire sig_in;
    output wire sig_out;
    assign sig_out = !sig_in;
endmodule


Пять строк верилога, две ноги ПЛИС, один логический элемент.
Или даже ни одного, если блоки ввода/вывода уже содержат нужную функциональность.
Так как у большинства ПЛИС нет встроенного генератора, нужен внешний.
Подаем на вход меандр 1Гц, получаем на выходе меандр 1Гц (со сдвигом фазы) и вуаля! Кто может еще проще? :))) :))) :)))

Автор:  ARV [ Пт мар 25, 2022 12:16:17 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

DX168B писал(а):
Подаем на вход меандр 1Гц, получаем на выходе меандр 1Гц (со сдвигом фазы) и вуаля! Кто может еще проще?
еще проще могу я: проводок от места, из которого подаем, до места, в котором смотрим.

только раздел посвящен микроконтроллерам AVR, и было бы здорово придерживаться темы.

Автор:  veso74 [ Пт мар 25, 2022 12:17:26 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

Начнем с Blink. Attiny13, через Arduino IDE, Microcore для ATtiny13A.

выход 4, pin 3, 1 Hz
Код:
// ATtiny13A
//         _____
// RST/5 -|  ^  |- VCC
//     3 -|     |- 2
//     4 -|     |- 1
//   GND -|_____|- 0

void setup() {
  pinMode(4, OUTPUT);  // ATtiny13a pin 3
}

void loop() {
  digitalWrite(4, HIGH);
  delay(500);
 
  digitalWrite(4, LOW);
  delay(500);
}

Код:
Скетч использует 90 байт (8%) памяти устройства. Всего доступно 1024 байт.
Глобальные переменные используют 0 байт (0%) динамической памяти, оставляя 64 байт для локальных переменных. Максимум: 64 байт.


Вложения:
blink.zip [853 байт]
Скачиваний: 413
attiny13_blink.gif [30.34 KiB]
Скачиваний: 82

Автор:  ARV [ Пт мар 25, 2022 12:22:11 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

отлично, первый пошёл! :))) теперь просимулируйте в протеусе и рассчитайте свои баллы по упомянутой в первом посте формуле.

Автор:  veso74 [ Пт мар 25, 2022 12:24:54 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

От симуляции смысла нет, даже "вживую" проверял (на бредборде) :). Оставляю другим вычислять.
(точно понятия не имею, что имеете в виду под этим: "max и min - это, соответственно, наибольшее и наименьшее из двух значений. это для того, чтобы оценить точность формирования меандра")

Автор:  >TEHb< [ Пт мар 25, 2022 13:05:48 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

Ну блин, и машинные коды нельзя? Ладно, сейчас на С накропаю...

Автор:  GoldenAndy [ Пт мар 25, 2022 13:50:24 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

А как оценить max min в протеусе, если протеус "тактирует" МК по частоте согласно ДШ?
Да и в железе если, то на одном экземпляре МК и тактовая будет одна. соответственно, и погрешность будет константная...

Автор:  ARV [ Пт мар 25, 2022 14:04:49 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

GoldenAndy писал(а):
А как оценить max min в протеусе, если протеус "тактирует" МК по частоте согласно ДШ?
протеус тактирует не по ДШ, а по той частоте, что вручную введена. так и тестировать: вводим в протеусе частоту из ДШ (или какая там выбрана фьюзами), и при помощи осциллографа или построения графиков определяем точное значение периода меандра, а уж частоту по периоду понятно как узнать.

затем подставляем в формулу меньшее-большее значение и вычисляем. например, протеус показал, что меандр имеет частоту 1,015 Гц - значит, там где min ставим 1, а там где max ставим 1,015

veso74 писал(а):
Оставляю другим вычислять.
доберусь до протеуса, просимулирую ваш код, раз вам лень.
надеюсь, там в архиве есть готовый hex?

Добавлено after 1 minute 7 seconds:
само собой, принимаем, что встроенный RC-генератор даёт строго частоту по даташиту

Автор:  astrahard [ Пт мар 25, 2022 14:15:01 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

А вот инженеры Apple посчитали, что исключения, множественное наследование, шаблоны, динамическая идентификация типа данных (typeid), виртуальное наследование и спецификатор класса хранения в стандартном C++ либо недостаточны, либо недостаточно эффективны для использования в высокопроизводительном многопоточном ядре.

P.S. Бьёрн Страуструп сразу же стал кричать и топать ногами желая похоронить всех инженеров Apple.

Автор:  Martian [ Пт мар 25, 2022 14:26:47 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

Код:
// ATtiny13A
//         _____
// RST/5 -|  ^  |- VCC
//     3 -|     |- 2
//     4 -|     |- 1
//   GND -|_____|- 0

//void setup() {
//  pinMode(4, OUTPUT);  // ATtiny13a pin 3
//}

void loop() {
  pinMode(4, OUTPUT);  // ATtiny13a pin 3
  delay(500);
 
  pinMode(4, INPUT);  // ATtiny13a pin 3
  delay(500);
}


я не знаю AVR, но где-то так... выкинуть как минимум один вызов функции уже плюс

Автор:  astrahard [ Пт мар 25, 2022 14:31:35 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

Да да, как сказали некие инженеры "ручками, ручками, не надорветесь"

Автор:  ARV [ Пт мар 25, 2022 14:34:00 ]
Заголовок сообщения:  Re: Соревнование "свободных художников" по мини-хелловорду

Martian писал(а):
но где-то так
вообще-то так не честно... я предлагаю каждому желающему выносить на обсуждение свой вариант с исходником, hex-ом, примечаниями и т.п., в том числе с расчетом баллов.

а вот это вот "как-то так" - всего лишь догадки, и дают они что-то или нет - никто не знает.

Страница 1 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/