MicroVGA conio/text user interface library на Pinboard II (AVR). Демо пример. Часть 1

AVR
MicroVGA на Pinboard II (AVR)

Аннотация


Показан демонстрационный пример работы с библиотекой MicroVGA conio/text user interface library на Pinboard II + AVR в стандартной комплектации (ATmega16 @ 16 МГц). Выполнен небольшой его обзор. Библиотека предназначена для работы в связке с периферийным модулем, с помощью которого можно напрямую выводить информацию на монитор из контроллера (через SVGA). В данном примере библиотека в качестве терминала использует программу на ПК и работа осуществляется по последовательному порту. Т.о. с её помощью, к примеру, можно реализовать удобный (дружелюбный) отладочный пользовательский интерфейс, либо организовать на её основе конфигурирование устройства (по аналогии с BIOS).

Исходники


Исходники проекта доступны тут.

Документация


1. Кто не знает что такое Pinboard II и с чем его едят, то вам сюда.
2. Описание быстрого старта при работе с Pinboard II AVR: Быстрый старт. AVR.
3. Сайт проекта Micro VGA: Cost-effective Microcontroller VGA Interface.
4. Описание библиотеки MicroVGA conio/text user interface library: uvga-conio-lib.pdf.
5. Описание используемых ESC-последовательностей для эмуляции ANSI терминала: ANSI Terminal Emulation ESCape sequencies.
6. FAQ по библиотеке MicroVGA conio/text user interface library и их модулю uVGA, который является простой графической карточкой: FAQ.

Инструменты


1. Полное описание инструментария приведено в файле проекта: readme.txt.
2. Программа терминал (будет использоваться ZOC/Pro 5.05 (rus)).
3. Желателен монитор COM портов. Я использую Serial Monitor 3.15.
4. Среды разработки (отладки): VS2008, AVR Studio 4.18, WinAVR.

Описание


Блуждая по просторам сети, набрёл на библиотеку MicroVGA conio/text user interface library для встраиваемых систем. Очень понравилась она и решил я немного протестировать прилагающийся там демо-проект. В качестве отладочной платы, как всегда, использую Pinboard II (AVR). Думая о том как подать материал, решил просто записать весь процесс на видео. На самом интересном месте забылся и нажал F10 (это окончание записи в рекордере), поэтому будет две части. Что из этого получилось смотрите по ссылке ниже.

MicroVGA на Pinboard II (AVR). Демо пример. Часть 1

Предупреждение. Длительность видео около 55 минут. Если вы профи, то вам скорее всего будет достаточно взглянуть на сами исходники и pdf, где описаны интерфейсные функции библиотеки. Библиотека написана на Си. Ресурсы, примерно: 4 КБайт флеш и около 300 Байт ОЗУ, но это всё очень зависит от полноты использования. Оригинальный демопроект выполнен для ATmega128 с использованием WinAVR на AVR Studio 4.
Для работы проекта достаточно иметь мк ATmega16 с драйвером RS-232 для подключения к последовательному порту ПК. Это минимум, которого будет вполне достаточно, чтобы освоить библиотеку.

Поскольку вторую часть я ещё не записал, то мне интересно чего бы туда включить и как подать этот материал. Замечания и предложения по улучшению подачи материала приветствуются.
  • +6
  • 14 ноября 2012, 04:07
  • uni

Комментарии (114)

RSS свернуть / развернуть
Ссылки на сайт нет.
Видео на час почти… Просто закрыл.
+3
Добавил чуть-чуть описания.
0
с скриншота ничего не ясно, что оно такое и для чего, схемы тоже нету.
+3
Ну, там вообще-то и нет схемы как таковой. Для этого проекта нужно только питание и связь по последовательному порту. Поэтому я и использую отладочную плату со стандартными настройками по умолчанию, о чём сказал в начале видео.
Хорошо, я допишу это текстом и дам ссылку на руководство DIHALT'а по первоначальной настройке.
0
А можно хоть парой предложений описать, что это за хрень и что она делает? Нам догадаться из названия?
Вот уже в который раз попадаются топики, где автор полагает, что все только и делают, что занимаются тем же, что и он.
+4
Извините, мне показалось, что это очевидно с первого листа pdf доки и сайта библиотеки. Там написано, что это библиотека консольного ввода/вывода с элементами текстового пользовательского интерфейса.
0
Нда. А по названию я думал что оно картинку через VGA выводит.
+4
Да и это тоже. Откровенно говоря, я хотел такую платку как расширение к Pinboard II. Когда я тут делал пост про вывод видео, DIHALT'а это заинтересовало.
Этим постом я хочу ему также показать как это могло бы выглядеть как часть его платы, к сожалению, данная конкретная реализация видеоплаты существенно увеличила бы стоимость комплекта, но такими вещами нужно интересоваться, так как при наличии это существенно увеличило возможности платы. Был бы миникомпьютер.
0
Аналогично, не понятно тоже, почему упомнается VGA, которого по ходу нет.
0
Очевидно было после заголовка и скриншота, что эта вещь выводит на экран монитора то, что у вас на картинке с AVR-ки. И первая мысль — «нихрена себе, как такое возможно?».
0
А вы считаете что читатель должен прочитать все pdf-ки и посмотреть час видео лишь для того понять нужно или не нужно ему это? Мне бы как-то час жалко было...))
0
микро-Vga же :D
0
Зачётная библиотечка. Особенно прикололо описание на сайте «MicroVGA saves a lot of energy. Unlike traditional graphics cards it only requires 150mA!» :)
Но пост — это полный пздц. Тут один кадр, на форуме, предлагал Хальту видео уроки по программированию и электронике делать, это не вы?
0
Я слышал такую пословицу, что лучше один раз увидеть, чем сто раз прочитать.
Нет, это не я. Мне казалось, что он сам не плохо справляется с видеоуроками, разве нет?
0
У любой пословицы есть границы применимости. Если надо глянуть на процесс в динамике, то видео тут конечно спасет.
В остальных случаях видео абсолютно бесполезно.
0
Т. е., другими словами, видеообзоры по компьютерным тематикам и сфере это что-то обычно бесполезное? Особенно в части обучения, так?
Вот мне лично давно хотелось посмотреть на то кто каким инструментарием пользуется. Ведь все пользуются разным и на то у каждого свои причины, каждый видит свои удобства, а это результат выбора и многолетнего опыта. Очень интересно было бы, если каждый опытный программер поделился хотя бы частью опыта работы со своим джентельменским набором в процессе его использования.
0
Текст за всегда удобней. Листать удобней, искать, просматривать, копировать, сохранять, распечатывать. Да и скорость восприятия намного выше. Говорят у вас там час видео. Думаю если сделать текст + иллюстрации, то ознакомиться можно будет за 10 минут.
Хотя подготовка такой статьи, конечно будет больше часа.
+1
Принято для включения во вторую часть обзора.
0
Гыыы, vvzvlad жжот :)
0
Как инженера меня на любой лекции по любому техническому девайсу учили: это список минусов, это список плюсов. Девайс или технология используется потому, что количество плюсов перевешивает количество минусов в данном конкретном применении.

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

Если же человек выдаёт только одни плюсы или только одни минусы, то я отношусь к этому настороженно, тем более, когда у него в тегах раскрывается тема сисек.
0
Считай, что список плюсов (для данного применения) пуст.
0
Вот уж «всем известного» я бы точно записал в примеры «почему видеоуроки плохо». DI же видео или как дополнительный материал снимает, или там, где без видео не обойтись. Остальные не видел.
Да неужели ;) ты у нас авторитет?
Я всего лишь излагаю свое мнение. Оно не более, но и не менее веско, чем твое.
0
Правда, стоит отметить, что bsvi хотя бы не мычит в микрофон, а говорит четко и не тормозя. И вообще с технической стороны его видеоуроки сделаны хорошо.
+2
Вот уж «всем известного» я бы точно записал в примеры «почему видеоуроки плохо»
зато он охуенный пивец!
0
Да неужели ;) ты у нас авторитет?
Не знаю как для других, но лично для меня – Vga действительно авторитет. И к его мнению (которое, неожиданно, совпадаем с мнением других людей в сообществе), стоит прислушаться.
0
У меня иное мнение на этот счёт. Ничего «авторитетного» по теме он пока не написал, а приводить ссылку на любителя сисек в качестве аргумента — это очень низкий уровень компетентности. Несерьёзный человек.

Своего опыта в теме видеоруководств у него я пока не видел, а для меня более интересно мнение не комментатора, а практика в этом вопросе. Мир не стоит на месте и медиа контент заполняет всё пространство сети. Нужно учиться этим пользоваться и если нет желания у самого, то не надо транслировать его на всех.
0
Мнение потребителя продукции (видеоурока) для тебя, значит, ничего не значит? Ну, впрочем, это заметно :)
а приводить ссылку на любителя сисек в качестве аргумента — это очень низкий уровень компетентности. Несерьёзный человек.
Критиковать контент не по его содержанию, а по «сиськолюбительству» автора — вот это несерьезно.
Своего опыта в теме видеоруководств у него я пока не видел
Естественно, потому что в большинстве случаев они не нужны. Одно у меня, правда, есть — там видеоурок проще и осмысленней. Но оно довольно поганенькое.
0
Мнение потребителя продукции (видеоурока) для тебя, значит, ничего не значит? Ну, впрочем, это заметно :)
Сравни с этим:
Поскольку вторую часть я ещё не записал, то мне интересно чего бы туда включить и как подать этот материал. Замечания и предложения по улучшению подачи материала приветствуются.
У тебя либо неадекватное восприятие информации, либо ты просто не посчитал нужным обратить на это внимание. Печалька.

Критиковать контент не по его содержанию, а по «сиськолюбительству» автора — вот это несерьезно.
Ещё раз повторяю. У всех технических решений есть достоинства и недостатки. Одни только достоинства есть только в рекламе, а одни только недостатки описывают либо близорукие, либо люди без опыта в том что они комментируют. Это банальность и я ещё раз это повторяю как критику на суть того мнения.

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

Вот мне интересно, как я должен относиться после их прочтения к содержанию? Серьёзно? А у меня появилось два варианта отношения:
1. Автор просто стебётся (это в лучшем случае).
2. Многочисленные хабра-эффекты вызвали хабра-контузию автора с хроническим хабра-заболеванием, что выливается у него в такого рода отношение к тегам.

Пренебрежительное отношение к тегам — это тоже отношение к потребителям. У тебя двойные стандарты? Это тоже заметно. Теги используются, чтобы по ним вести фильтрацию и поиск. Автор тот заведомо сделал свою статью сетевым мусором. Вот это и называется — содержание вытекает из мировоззрения. Написал он статью, нужно добавить теги. Что было в голове на момент написания, то он и добавил.
0
У тебя либо неадекватное восприятие информации, либо ты просто не посчитал нужным обратить на это внимание.
Я-то как раз обратил. Это скорее у тебя неадекватное восприятие, т.к. я прямо поддерживаю предложение «в топку видео (особенно такое), давай вторую часть текстом».
Это банальность и я ещё раз это повторяю как критику на суть того мнения.
ОК, принято. Хотя это нормально для топика, чья цель именно указать на недостатки конкретного решения. Это не обзор, чтобы приводить и взвешивать и плюсы, и минусы.
Вот ты дал ссылку, я её прочитал до конца и обратил внимание на вот эти вот теги, которыми снабдил автор своё творение:
Похоже на стеб. Не слишком уместный, но я на него внимания не обратил. В принципе, лишние теги не сильно мешают, они только замусорят выдачу по тегу «сиська» (хотя врядли есть смысл искать по этому тегу на хабре что-то кроме такого стеба) и другим лишним. Никакой существенный тег он не замусорил, первые теги вполне по теме.
Так можно отметить и fine print в самом начале на тему «желтого заголовка».
0
P.S. Ты бы посты так подробно писал.
0
Серьёзно — это когда ты не только содержанием интересуешься, но и тем кто является автор, его мировоззрением, потому что содержание определяется этим самым мировоззрением

ИМХО, Вы слишком идеализированно походите к данному вопросу. Меня в технических статьях интересует, в первую очередь, качество изложенного материала и подача материала. Внутренний мир автора, его мировоззрение, данном случае, меня мало интересует (главное, чтобы этот мир не мешал автору излагать материал).

Да, от автора зависит подача материала, он может заинтересовать читателя данной тематикой, либо, наоборот, вызвать боязнь (ой, как здесь все сложно) или отвращение. Но это лишь способ подачи материала.
+2
Серьёзно — это когда ты не только содержанием интересуешься, но и тем кто является автор, его мировоззрением, потому что содержание определяется этим самым мировоззрением.
я не намерен интересоваться мировоззрением автора пока он адекватно и компетентно подает актуальную инфу.
хотя признаться, сама идея видеоблоггинга мне сильно далека. проще пробежаться по простыне текста, чем смотреть видушку. особенно в запущенных случаях. я и дейва-то смотрю с трудом. не говоря уже о.
+1
Слушай, treasure, давай завязывай с этим делом. Не хочешь не смотри, я не заставляю.

Если тебе нужно описание, то вот: Это примитивный аналог Turbo Vision. Для опытного программера этого одного предложения должно быть достаточно, чтобы понять что к чему и никаких портянок для этого не нужно. Когда я увидел этот сайт, мне хватило только скринов, чтобы понять что это такое и как оно могло быть реализовано. Описывать три функции как-то несерьёзно. Если же ты их не понимаешь, то тебе не поможет и часовое видео.

Описание я сделаю, когда переделаю их код до цивилизованного вида, т.е. в идеале это должна быть библиотека Micro Turbo Vision для реализации простых текстовых интерфейсов.

Видео же содержит демонстрацию комплексной работы с проектом на C++. Начинающим пользователям, я думаю, было бы интересно как выглядит живьём полноценная работа (отладка) с использованием современных средств разработки. Там есть:
— код на C++;
— работа с SVN;
— использование VS2008;
— работа с терминалом;
— работа с монитором COM порта;
— работа с отладчиком HappyJTAG2 и AVR Studio 4;
— краткое описание Makefile;
— указание на набор инструментария;
— описания одного шаблонного проекта;
— краткое описание трёх модулей самой библиотечки.

Всего по чуть-чуть в виде живого обзора. А ещё этот проект одновременно компилируется в IAR и GCC. Кому будет интересно, тот посмотрит. Кому-то это может быть актуально, а для кого-то это давно пройденный этап.

Их код, так скажем, не совсем нормальный. Он больше похож на прототип или тестовый проект, потому демкой и называется. К примеру, там везде используются тип int вместо uint8_t. Там используется американская досовская кодовая страница для вывода, что, очевидно, не подходит для проектирования под русскоязычную винду. Все строки хранятся в ОЗУ. Я уж молчу про форматирование исходников. Это какой-то ужас.

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

а вот это описание, и в пост. хоть как описалку к видео. а еще лучше всю текстовку с пояснениями и скриншотами в пост как тело статьи, а киношка — как приятное приложение.
+1
Если я начну это всё описывать, то могут найтись товарищи, которые подумают, что так и надо составлять проекты.
кстати. а вот эта отдельная тема для очень хорошей статьи. взять что-нить открытое и описать бока и объяснить, почему это плохо. да, это большая работа, не спорю. но будет очень и очень полезно.
+1
Ты сам подумай, зачем мне твой отзыв, если ты осилил только 50 секунд из 53 минут? Это ни о чём :)
Так тогда и пиши: «мой отзыв о первых 50 секундах видео».

И я не зря упомянул о мировоззрении, о достоинствах и недостатках. Помнишь такое: «не читал, но осуждаю»? Так вот тут большинство написало прямо: «не смотрели, не собираются и осуждают». Был только один положительный отзыв на фоновую музыку.

А про то как оформлять код есть очень хорошая книжка, где всё уже написано до меня. Так и называется: «Совершенный код» Макконнелла.
0
ну вот сам подумай: мб таким отзывам есть причина? и проблема (раз только один положительный отзыв, и тот о музыке) совсем не в «тупости» здешней публики? мб это как раз тот случай, когда проблема не в зрителях, а...? ;)

Так тогда и пиши: «мой отзыв о первых 50 секундах видео».
и кстати, я прямо так и написал. какие претензии? да, я посмотрел 50сек, понял, что остальное — будет просто выброшенное из жизни время. о чем и сказал.

А про то как оформлять код есть очень хорошая книжка, где всё уже написано до меня. Так и называется: «Совершенный код» Макконнелла.
угу. есть. и подозреваю, что ее читали чуть более чем все здесь. (ну, очень многие).
но ведь дело не в книжках. вон, в соседнем топике перец ваяет «систему автоматизации здания» (или как-то так) и спрашивает про элементарные вещи из учебника. какой ему «Совершенный код»?.. %)
+1
Да, нет. Тут очевидно народ не настолько стар, чтобы помнить Turbo Vision и вообще тот стиль текстовых интерфейсов на его основе. Раньше всё текстовое выглядело однообразно, эта библиотека существенно облегчала жизнь рядовому программеру, т.к. основывалась на ООП.

Вот кто это дело видел и работал с этим, тому вообще не надо пояснять что к чему, а вот для тех, кто не застал эту эпоху или начал с Delphi, тому придётся разжёвывать не просто три функции, а вообще про терминалы, про то, что когда-то всё было на модемах и были такие штуки как bbs. Вот там-то эта технология потокового управления и применялась. Тогда зародился ANSI escape code и стандарт ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals in alphabetic order by mnemonic.

Это очень много писанины, я, всё-таки, надеялся, что многие тут застали те времена и достаточно будет беглого взгляда на демку. Но я ошибся — хорошо забытое старое хорошо забылось.
0
сильно удивишься, но ее многие помнят.
но ведь речь не об этом? ;)
+1
Пренебрежительное отношение к тегам — это тоже отношение к потребителям.
пренебрежительное отношение к звуковому ряду — еще более отношение к потребителям.
сюда и громкость, за которую уже пнули, и все эти томные охи-вздохи, и паузы.
осилил 50 секунд. на большее меня не хватило.
а терять час времени на это — увольте.
+1
а смысл заменять этим самым медиаконтентом более удобные методы подачи материала? ради него (контента) самого? фтопку.
и, кстати, лично я все эти видушки «всем известного» смотрю даже не через одну. часто проста потеря времени. когда статью можно пробежать по диагонали и понять интересна тема или нет, видушку приходится смотреть всю.
+1
Ех автор, я уже вошол во вкус читая, а статья взяла и закончилась.
Названия конечно очевидное, но я думал что статья как минимум текста на 3 листа А4.
0
У автора все статьи такие.
0
Да нет, там было бы гораздо на большее количество листов А4, если бы я всё начал разжевывать со скринами. Но будем считать, что это только первая часть, как я написал и во второй я буду придерживаться конструктивных советов. Пока вижу тут по комментам, что ох да ах и видео — это не торт.
Я, честно говоря, наивно полагал, что видеоурок или видеоруководство (видеообзор) куда нагляднее длинной портянки с текстом. Надеюсь, простите меня за мою наивность.
0
У нас на работе Youtube закрыт наглухо. Только текст и картинки.
0
Печалька. У нас на работе мы как-то находили общий язык с админом, если это касалось работы. Тут не знаю как помочь. Я мог бы выложить на свой ftp, но вряд ли, судя по комментам, кто-то будет качать оригинальное видео в 150 метров.
0
… у меня тоже ютуб закрыт, прийдется дома взглянуть, если вспомню. Пара картинок бы явно спосла положение статьи :) Она то конечно может и полезна, но читая её этого не видно. Допишите её что ли ;)
0
Будет вторая часть. Собираю пожелания.
0
Я, честно говоря, наивно полагал, что видеоурок или видеоруководство (видеообзор) куда нагляднее длинной портянки с текстом.
Как по мне, то нет. And i approve this message :)
Только текст и картинки.
только хардкор. +1

Кстати, либа стоит денег?
0
Денег там стоит кое-что другое, на чём я не стал акцентировать внимания. На самом деле библиотека идет как freeware, о чём написано в исходниках, если посмотреть по ссылке, которую я дал.
Но если бы я стал описывать видеоплату, которую нужно покупать, то это уже была немного другая статья. Я же увидел пользу в использовании библиотеки как ещё одного инструмента отладочного вывода. Может быть в каких-то случаях она будет частью встроенного ПО, но это уже по желанию.
0
Видео — это слишком долго, мне всегда лень смотреть видео, если это не требуется очень сильно. В тексте сразу видно, про что это, что рассказывается и надо ли тебе оно =)
В видео это вовсе не очевидно. Может получиться так, что посмотрев полчаса чего-нибудь, понимаешь, что потерял это время зря — или тебе это не нужно, или это уже знаешь, или подача материала такая, что пользы никакой.

К тому же его не посмотришь при плохом интернете или с мобильного устройства, не всегда найдёшь по контексту поиском, и его очень сложно исправить и дополнить. В общем, я считаю, что в данной области (примеры работы с библиотеками, разработка ПО и т.д.) видео может идти как бонус к тексту, а не замещать его =)
0
Пожалуй поддержу комментарии выше. Видео — неплохо, но всё же краткое описание того, что это и для чего оно, не помешало. Хотя бы чтобы знать, смотреть видео или оно [пока] мне не интересно. PDF'ка тоже ясности никакой не вносит. Хотя бы какой терминальный протокол используется.
И по видео. Очень тихий звук! Можно конечно громкость увеличить, но есть риск потом поиграть в кирпичный заводик, когда кто-то в аську неожиданно напишет. На ютубе при аплоаде видео нет возможности нормализовать громкость? Или обработать звук перед загрузкой.
0
  • avatar
  • ACE
  • 14 ноября 2012, 11:04
Ничего нового там нет, обычные ESC-последовательности, которые оформлены в виде набора процедур для интерактивного взаимодействия через удалённый терминал. Это протокол со времён MS-DOS, когда был такой специальный драйвер, который поддерживал управление посредством управляющих символов. Наверняка есть специальный документ RFC где этот интерфейс подробно описан, если найду, то приложу. С ходу не получилось.
Звук тихий, это да. Я ещё не совсем освоил работу с видеоредакторами, в следующий раз попробую это исправить.
0
И по видео. Очень тихий звук!
Это мягко сказано. Я ничего не слышу даже выкрутив звук на максимум.
0
И это, к видеолекции тоже нужно готовиться и сперва написать текст. А не как на видео, час вздохов и пауз — «Здравствуйте… Я расскажу… О… Библиотеке...».
0
  • avatar
  • Vga
  • 14 ноября 2012, 11:30
А мне очень понравилась музыка из ролика, уж извините =) Что это за приятная вещь?
0
Это из известного фильма Ink. Там все треки такого стиля: www.kinopoisk.ru/film/399103/
0
Вот спасибо! Заодно и кино гляну
0
Забавно — на кинопоиске, в трейлере идёт музыка, которая в оригинале была написана Carly Comando для вот этого ютюубовского ролика: www.youtube.com/watch?v=6B26asyGKDo
0
ЧТото посмотрел я ссылки и не понял — там есть генерация видеосигнала или нет ?!

Если есть, и в цвете — то хотелось бы узнать подробности (я писал библиотеку генерации видеосигнала, но до цвета не дошел… хотя находит в инете проект на mega8 в котором генерилось цветное изображение)

вообще пост какой то не понятно зачем написанный :-( ни содержания, ни описания, ни толковой рекламы :-)
0
Я умышленно не писал о модуле. Да, конечно, он есть. И он гораздо продвинутей, чем вот этот: Pinboard II (AVR) формирование ч/б видеосигнала

Существуют и другие реализации с разными подходами, то не везде эмулируется ANSI терминал. Но именно эта фишка меня заинтересовала. Библиотеку можно использовать отдельно от непосредственно самого модуля.

Я могу привести примеры как можно использовать библиотеку, если с первого захода никто не понял:
1. Вывод отладочной информации из контроллера на терминал ПК в более эргономическом виде без программирования специального ПО. Это типо как то, есил мы используем броузер для конфигурирования роутера. Весь интерфейс внутри девайса, а мы используем обычный броузер для его настройки.
2. Конфигурирование (удалённое) девайса как я описал в п.1. Как известно, конфигуратор может быть внешним в виде отдельного ПО, который связывается по модбасу, а может быть и внутренний, как веб-сервер, либо вот таким способом можно организовать что-то типа доски объявлений, как раньше было.
3. Можно сделать игрушки на такой основе типа там тетриса, клавиатурного тренажёра или что-то в таком духе для обучения программированию на мк.
… и т.д. ну и где ваше воображение? Все на Ethernet пересели?
0
Воображению нужна пища, а из твоего описания никто даже не понял о чем ты вообще пишешь.
И уточни в заголовке, что речь идет не о MicroVGA, а о ее библиотеке MicroVGA CONIO.
0
Уточнил полнее как написано в pdf'ке с документацией к библиотеке. Думаю, что теперь вопросы отпадут.
0
понятно, тогда нужно было и писать что это просто терминальный модуль, а не микроVGA

у меня есть проект подобный DIHalt'овскому, я к сожалению не знаю на чем он писал свой, мой написан на асме… и я там поизгалялся с генерацией КСИ — получилось очень просто и легко подстраиваемо…

по горизонтали с телека много не выжмешь — около 44-45 символов максимум…

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

у вас увидел посте цветную картинку терминала — и подумал что будет описание генерации композитного видео с цветом… — вот это было бы очень и очень для меня интересно
0
у вас увидел посте цветную картинку терминала — и подумал что будет описание генерации композитного видео с цветом… — вот это было бы очень и очень для меня интересно
А ПЦТС не генерирует даже эта видеокарточка. Цвет только в VGA — он компонентный, а компонентный цветной сигнал генерировать просто (правда, довольно накладно).
Генерировать программно PAL сигнал достаточно сложно, хотя примеры есть. Вот, например. Но нужен весьма специальный кварц, разрешение очень низкое и генерация сигнала съедает практически все ресурсы.
Можно сделать аппаратный генератор ПЦТС (например как в спектруме), можно задействовать преобразователь RGB в PAL (в теме про Deogen я спрашивал про такой и какую-то симпатичную микросхемку мне там посоветовали).
0
С описанием и теорией можно посмотреть вот эти два проекта: Phasor и Craft.

Если взять мк чуть помощнее, то можно туда и эмуляцию ANSI терминала засунуть. В одном интересном проекте в качестве видеокарточки используется вообще отдельная ATmega128. Поищите поиском в сети ZX Spectrum на AVR. Это нечто.
0
даа, сильная вещь… я как то задумывался об эмуляторе Z80 на AVR (16 мгц такта достаточно для этого)… но собрать весь комп — это прикольно…
0
Там всё на голимом ассемблере, проект из двух ATmega128, но даже он пока только ч/б видеоизображение выводит. Все его исходники доступны и можно собрать всё самому. Там на AVR Studio 4 всё.
0
это я понял, на avr на асме можно писать (сам люблю на avr на ассемблере писать)…

но собирать как то не актуально…
раньше были дискеты в каком то невобразимом количестве, постоянный приток инфы в виде zx-ревю и книг того же Родионова, писал программы на ассемблере например как то для себя написал дизассемблер который не только метки расставлял но и определял где код в исходной программе а где данные… сейчас конечно все простым кажется… а в 15 лет это был просто прорыв для моего мозга…
потом проект решающий задачки по геометрии (с выводом формул для решения), потом шашки… эхх!!! вот была романтика!
0
uVGA — видеокарточка для МК, аппаратная. Работает в текстовом режиме 80х25 16 цветов, управляется обычным терминальным интерфейсом (как консоль — текст и управляющие esc-последовательности). uni использует только ее библиотеку текстового вывода, которая генерирует эти самые esc-последовательности и выдает результаты ее работы в обычный терминал.
Инфа о аппаратной части судя по всему полностью закрыта.
0
жаль… хотя там наверняка ПЛИС (например есть реализация на сайте марсохода)…

эхх… интересно на AVR было бы! при 16-20 мгц тактовой частоты! — вот это задачка…
0
Не обязательно. Возможно МК вроде пропеллера.
0
Хорошо бы автору вначале структурную схему нарисовать о чем будет рассказывать, что к чему и как подключается!
Чуть мозг не сломал, еще и видео чуть ли не на час, пока не нашел на сайте pdf-ку
MicroVGA — Device Overview, тогда стало понятно, что есть некоторый девайс к которому подключается микроконтроллер, клавиатура и дисплей.
0
Вообще говоря, кто понял о чём речь, знает, что вариант подключения для работы описываемой библиотеки однозначно определён и тут без вариантов — это ввод и вывод по последовательному каналу. Никак по-другому имеющийся функционал использовать не получится и голову тут ломать совершенно не над чем.
Никакого device overview тут не нужно, тут вообще можно одним Протеусом обойтись и не зацикливаться на железе. Так и сделаю во второй части, наверное. Тогда уж думаю все вопросы по отладочным платам, схемам и прочему отпадут, когда на листе в окне будет один или два корпуса :) и можно будет сосредоточится на функционале, а не на примитивной обвязке.
0
Интересно, сколько народу просмотрело ролик до конца и полностью?
0
  • avatar
  • PRC
  • 14 ноября 2012, 20:31
Обновил код в репозитории до ревизии 2. Чуть там прибрался и добавил проект для IAR 6. Теперь исходники одинаково компилируются на обоих компиляторах:

IAR Universal Linker V5.2.3.14 
Copyright 1987-2011 IAR Systems AB. 
 
 11 212 bytes of CODE memory (+             44 range fill ) 
    921 bytes of DATA memory (+ 19 absolute ) 
 
Errors: none 
Warnings: none 

avr-gcc (WinAVR 20100110) 4.3.3
Copyright (C) 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

AVR Memory Usage
----------------
Device: atmega16
Program:   11758 bytes (71.8% Full)
(.text + .data + .bootloader)
Data:        902 bytes (88.1% Full)
(.data + .bss + .noinit)
-------- end --------


Хотел отвязаться от отладочной платы и смоделировать всё в Протеус 7.10 для второй части описания, но это оказалось не так просто в отличие от реального железа. Зря наверное снёс старый Протеус, там работало.
0
  • avatar
  • uni
  • 15 ноября 2012, 17:18
Точнее говоря, до ревизии 3. IAR'овский проект пока только процентов на 80 работает также как gcc, там нужно немного над логикой поработать. Мне не нравится как осуществляется работа по вводу, как-то это сделано ненормально в библиотеке. Ну и 11 Кбайт кода что-то слишком много для исходников. Надо тоже посмотреть откуда такие размеры взялись.
0
Обновил код до ревизии 4 (версия 0.0.0.217 (gcc) и 0.0.0.218 (iar)).

Добавил поддержку кодовой страницы CP866. Как оказалось, у меня есть версия терминала 5.06, у которой есть возможность выбора этой кодовой страницы (у новых версий тоже есть такая возможность, но они не настолько «бесплатны» пока). Т.о. теперь можно выводить полноценную псевдографику в стиле MS-DOS. Написать, к примеру, простой файловый менеджер а-ля Volkov Commander. Как раз на Pinboard 2 есть флешка.

Теперь выглядит окошко так:

uVGA, демо-проект, поддержка CP866

Здесь на картинке я применил комплексный подход: по умолчанию вывожу в CP866, а если нужна CP1251, то специально это указываю. Поскольку разрабатываем мы в Windows, то иначе никак. Также выяснилось, что код не работает на низких скоростях, из-за этого, видимо, я не могу промоделировать это дело в Протеусе, где нужны как раз малые скорости для моделирования в реальном времени. Пока выводится мусор. Придётся переделывать код.
0
  • avatar
  • uni
  • 16 ноября 2012, 20:15
Как оказалось, у меня есть версия терминала 5.06, у которой есть возможность выбора этой кодовой страницы (у новых версий тоже есть такая возможность, но они не настолько «бесплатны» пока).

Попробуйте putty – очень толковый и бесплатный эмулятор терминала.
0
Попробовал уже, к сожалению, не такой уж толковый оказался. Там две проблемы появились: первая — настройка цветов, вторая — не смог победить неадекватное поведение (съезжает заголовок на середину окна). Если первую проблему ещё можно как-то решить, то со второй справиться я не смог.

Вот как это выглядит при настройках по умолчанию:

uVGA, демо-проект, работа с PuTTy

Так что ZOC — это пока единственный терминал, который абсолютно меня устраивает. Без всяких танцев с бубном, кроме регистрации.
0
Честно говоря, странно. putty – наверное самый «кошерный» терминал признанный многими сисадминами. Подозреваю, что проблема в несогласованности стандартов (коих много – VT100, VT400, Xtetm, и т. д.).
0
Что касается цветов, то они различаются у разных терминалов. Вот тут внизу есть даже табличка с настройками различных терминалов: ANSI escape code. Правда в терминалах есть возможность изменить первоначальный набор, но это придётся каждому пояснять, если я буду использовать PuTTy. Что же касается ESC последовательностей, то я везде ставлю использование эмуляции ANSI терминала и они должны работать одинаково. Такая настройка есть и в ZOC, и в PuTTy.
0
Обновил код до ревизии 8 (версия 0.0.0.390 (gcc) и 0.0.0.391 (iar)). Отшлифовал код, привёл в человеческий вид. Оба проекта теперь работают где-то на 95% идентично (в iar'е ещё осталось несколько косяков).

Добавил одну мелодию для проверки пищалки:

uVGA, демо-проект, проверка пищалки

Проблему с малыми скоростями так и не решил пока, не пойму в чём дело. Кроме того никак не могу отловить проблему с приёмом пакета из байт, а это нужно для работы с курсорами. Как только эти две проблемы порешаю можно писать Тетрис и делать вторую часть обзора. Тетрис будет вот такой:

Тетрис из DN

В принципе его уже сейчас можно делать, но я хочу, чтобы клавиши-стрелки работали и в Протеусе можно было пример прогнать.
0
  • avatar
  • uni
  • 18 ноября 2012, 07:03
Обновил код до ревизии 8 (версия 0.0.0.430 (gcc) и 0.0.0.431 (iar)).

Как известно, у avr-gcc есть проблема с декларацией расположения строк во флеш. Частично она решается при помощи PSTR(). Я изменил кое-что в исходнике, чтобы применять технику умных указателей и PSTR() для декларации строк внутри функций как расположенных во флеш.

Примеры нужно смотреть в модуле ui.cpp. Хочу заметить, что форма метода сделана таким способом, чтобы это одновременно компилировалось в IAR и GCC (это работает).

Возьмём, к примеру, функцию вывода приглашения в интерпретаторе. Выглядит она так:


void Command() {

    FLASHSTR_DECLARE( char, szInterpreterName, "Интерпретатор, версия " );
    FLASHSTR_DECLARE( char, szBuildDate, "Дата сборки проекта: " );
    FLASHSTR_DECLARE( char, szInterpreterCopyright, "\r\nАвтор: Мезенцев Вячеслав\r\n\r\n" );
    FLASHSTR_DECLARE( char, szCommandPrompt, "[ATmega16]$ " );
    FLASHSTR_DECLARE( char, szAvailableCommands, "\r\nДоступные команды:\r\n" );
    FLASHSTR_DECLARE( char, szHelpDescription, " - (help) вывод подсказки.\r\n" );
    FLASHSTR_DECLARE( char, szQuitDescription, " - (quit) выход.\r\n" );
    FLASHSTR_DECLARE( char, szCommandIsNotSupported, "\r\nКоманда не поддерживается. Введите " );
    FLASHSTR_DECLARE( char, szForHelp, " (help) для помощи.\r\n" );

    char * cmd;

    CConsole::SetTextAttr( LIGHTGRAY );
    CConsole::ClearScreen();

    CConsole::GotoXY( 1, 25 );

    CConsole::WriteString( szInterpreterName, CConsole::cp1251 );
    CConsole::WriteString( Version );
    CConsole::WriteString( "\r\n" );

    CConsole::WriteString( szBuildDate, CConsole::cp1251 );
    CConsole::WriteString( CVersion::GetBuildDateString(), CConsole::cp1251 );

    CConsole::WriteString( szInterpreterCopyright, CConsole::cp1251 );

Выглядит это так:

uVGA, демо-проект, умные указатели

В GCC нельзя в отличие от IAR напрямую указать, что строка должна быть во флеш, но это можно сделать через промежуточную декларацию строки внутри функции. Это делается при помощи определения FLASHSTR_DECLARE(), оно по-разному определено для gcc и avr в Defines.h.

Методика разбита на 2 этапа:
1. Декларация при помощи FLASHSTR_DECLARE().
2. Использование перегруженных функций типа CConsole::WriteString(), которые принимают тип с умным указателем.

Это немножко сложно выглядит, зато использование достаточно прозрачное. C++ всю остальную работу выполняет автоматически.
0
Ох, ревизии 9. Я специально указываю ревизии, т.к. из svn можно вытащить проект на разных этапах его истории. Так можно увидеть как изменялся код с течением времени. Ну и кроме того, мои комментарии относятся к конкретной ревизии и чтобы не было конфуза нужно скачивать соответствующий проект.
0
Рассматривалась ли возможность встраивания Форт в качестве интерпритатора?
0
Это демка, туда можно встроить всё что душе угодно в зависимости от ресурсоёмкости. У меня есть несколько отладочных плат, одна из них Pinboard2. К этой плате идёт стандартно мк ATmega16, поэтому практически все местные демки я делаю именно для этого мк и этой отладочной платы (это дань DI HALT'у за его труды по содержанию этой площадки в рунете).

Как правило, ресурсов хватает. В принципе, можно туда поставить и ATmega32 и вообще всё, что есть в DIP40. Видел даже ATmega128 в этом корпусе, поэтому каких-то особых ограничений нет. Мне без разницы какой будет проект, просто я бы хотел расширить количество людей, использующих объектный Си в своих проектах. Для этого я пишу свои шаблоны и демонстрирую какие-нибудь не тривиальные проекты на их основе.

У меня уже есть несколько шаблонов для 4-х атмег: atmega48, atmega16, atmega32 и atmega128. Они на разной стадии завершённости. Самый разработанный шаблон на С++ для ATmega16 пока. Он находится вот здесь: mysvn.ru/avr/templates/
Там же будут и другие шаблоны, если они как-то покажут себя на практике. Для этого я разыскиваю в сети интересные небольшие проекты и портирую их на С++ с использованием своего шаблона (иногда это сделать достаточно трудно из-за их нетривиальности, как например с интерпретатором Basic, который я показывал где-то месяц назад, я не смог пока полностью переделать его под себя и переписать более красиво).
Этот проект тоже такая попытка. Каждый раз я узнаю что-то новое и пытаюсь что-то улучшить. В этот раз я наконец решил одну мучающую меня проблему по локальной декларации строк во флеш для компилятора GCC.
0
По поводу часовых видео и курсов: Walid Balid, Master in Electronic Engineering
Embedded System Microcontroller Interactive Course using BASCOM-AVR
www.bascom.info/index.php?option=com_content&task=view&id=254&Itemid=67

m.youtube.com/user/walido81
В Сирии похоже это никого не смущает.
-1
  • avatar
  • uni
  • 20 ноября 2012, 02:05
Да, да, Россия опять отстаёт от остального мира:
www.youtube.com/user/humanHardDrive
www.youtube.com/user/anajonesr

Ну и там полно ещё похожих руководств, причём, многие уже довольно смело используют Atmel Studio 6. Кстати, хорошая практика для восприятия английского на слух.
-1
Понимаете, проблема не сколько в самом видео (как в формате подачи материала, хотя здесь тоже есть вопросы), а в способе подачи материала. Записать видеоролик – это не значит сделать хороший видеоурок.
Вот, для примера, Вам 2 ролика, каждый из них это упрощенное описание алгоритма диффи-хеллмана. Сравните качество подачи материала.



+1
Некоторые начинающие товарищи спрашивают, а как учатся программировать? Мм?
Я не говорил, что профессионал в плане видеоруководств, но в плане опыта использования C++ на AVR, я могу кое-что рассказать и показать и даже одновременно на двух компиляторах.

Это местные комментаторы очень требовательные, но это ведь не означает, что пытаться не надо? Не будем идти на поводу у тех, кто комментирует, не имея опыта в том, что они комментируют. Вместо того, чтобы писать как всё плохо, применили бы мозг и написали бы список того что по их мнению должно применяться из методик по созданию такого рода руководств. Вот это было бы гораздо более интересным.

Пока я делаю это самостоятельно, а значит у меня постепенно будет в этом опыта больше, чем у простого комментатора. Вот выше два ролика, а почему бы не составить список, как я указал, того что приемлемо, а что не очень?

Есть же дока Как правильно задавать вопросы. Учитывая современные технологии, вполне пора написать доку как правильно создавать видеоруководство. Я привёл достаточно ссылок на источники видео по встраиваемым системам и глупо отрицать, что их делают не только частники, но и сами производители, тот же Atmel. А всё из-за того, что ПО становится более сложным и комплексным, достаточно сравнить AVR Studio первых версий и последней. Я тут на днях загрузил очередные 700 метров (вроде) нового билда от Atmel. Мне запускать даже этого монстра страшно, хотя я имею опыт в работе с VS.

Всё усложняется и чтобы описать работу с конкретным ПО скоро или уже не достаточно будет одной статики. Заметили, что большинство современных сред уже вовсю требует работы с сетью, где находится сообщество, шаблоны, проекты. Загрузите новую Atmel Studio и посмотрите что у неё на первой страничке, это уже целые курсы прямо не выходя из среды.
0
Я был не точен, 799 Мб: as6installer-6.0.1996-net.exe
Понимаю, что не многие тут используют AVR или пишут в Atmel Studio, и ещё меньше захотят грузить 800 метров, потому вот картинки (кликабельно):

Atmel Studio 6.0.1996-net

Кликаем и получаем доступ ко всем руководствам:

Atmel Studio 6.0.1996-net

Согласитесь, что это уже совершенно другой подход и вообще вхождение в тему.
0
Нет, Вы не поняли. Я не говорю, что видеоуроки это плохо в принципе. Хотя я не читаю данный подход панацеей. Здесь есть свои полюсы и минусы. ИМХО, наиболее удобным является сочетаете видеуроки + текстовое описание.

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

Не будем идти на поводу у тех, кто комментирует, не имея опыта в том, что они комментируют.

Не нужно быть коровой, чтобы разбираться в молоке. Кто должен оценивать качество видеоурока, если не целевая аудитория? Ели многие говорят, что выключили ролик через несколько минут – значит Вы не сумели заинтересовать зрителя. А Вы пытаетесь сказать что «просто Вы – неправильные зрители».

Если хотите критики по существу, то ИМХО
1. В результате все получилось скучно, нудно, неинтересно
2. Вы захотели рассказать сразу обо всем: «код на C++; работа с SVN; использование VS2008; работа с терминалом; работа с монитором COM порта; и т. д.» Может это слишком много для одного урока, может есть смысл сконцентрироваться на чем-то одном?

Извиняюсь за критику. И я не говорю, что у меня получилось бы сделать видеоурок лучше.
+1
Некоторые тут так не считают и приводят ссылки, что видеоруководства — это как раз таки плохо, перечисляя их минусы, перемежая это словом «ненависть» :)

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

Я принял критику по пунктам:
1. Должны быть отдельные поэтапные ролики, а не часовое видео.
2. Мне нужно поработать над записывателем видео, чтобы уровень звука был выше. Дело в том, что я записывал в наушниках (гарнитуре) и там было всё прекрасно слышно, не оценив как это будет при обычных настройках звука на ПК.
3. Сопровождать каждый ролик дополнительным описанием в виде небольшой статьи.

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

Мои хотелки:
1. Человек опишет как начать open source проект с заливкой на github с отслеживанием ревизий (я, к примеру, до сих пор не знаю как правильно описывать изменения в проекте).
2. Меня интересует код на C++.
3. Человек покажет как ведётся отладка проекта при помощи современных средств, желательно несколько вариантов, если возможно.
4. Проект не должен быть тривиальным типа лампочек и кнопочек (web-сервер бы подошёл или какой-нить usb девайс). Такие проекты не дают возможность почувствовать архитектуру, язык, средства отладки в полной мощи.
5. Мне было бы интересно, как вести автоматическую документацию классов именно для встраиваемых систем, а ещё лучше — какие плагины для конкретных IDE для этого используются (на примере).
6. В идеале бы, конечно, добавить сборку платы под проект и грамотное оформление документации.

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

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

Вот с таких позиций я попытался создать свой ролик. Поэтому он не рассчитан на широкую аудиторию. Это скорее демонстрация, чем обучение.
0
По этой причине я подписан, кстати, на новости от The Code Project. Ко мне приходят регулярные рассылки. Там бывают интересные статьи и с некоторых пор мне приглянулся их раздел Interviews. Из таких интервью я узнаю чем пользуются и чем живут современные разработчики.
0
И, кстати, я не имею ничего против такой формы подачи материала как говорящая голова. Я регулярный слушатель Сути времени и Смысла игры Кургиняна, средняя длительность его лекций-обзоров стала переваливать за полтора часа, а последний выпуск Смысла игры (29) так вообще длится три часа, но мне это гораздо интересней, чемруководства по программированию и я с удовольствием слушаю Кургиняна, хотя у него и своеобразная подача материала.
0
И, кстати, я не имею ничего против такой формы подачи материала как говорящая голова.

Это однозначно лучше, чем ничего. Но, Вы, надеюсь, согласны, что такой подход не лучшее решение для обучающего видео.
Я хотел Вам показать, насколько может быть разной подача одного и того же материала на видео. Ориентироваться в подаче матерела на видео с «говорящей головой» — плохая идея (есть намного более наглядные способы, визуализации материала ).

Я регулярный слушатель Сути времени и Смысла игры Кургиняна, средняя длительность его лекций-обзоров стала переваливать за полтора часа

Это Ваше личное дело, к данному вопросу оно отношения не имеет.
0
"-Ну у вас и запросы! — сказала база данных, и зависла." :)

Вы хотите все и сразу в рамках одного урока. Но, ИМХО, такой подход в обучении не эффективен.

Я даже боюсь предположить содержание ролика «Я пишу код на С++, который был спроектирован с использованием Rational Rose, используя Agile методологию, с использованием средств автоматизированного тестирования и оформляя проектную/эксплуатационную документацию по ГОСТ …». Даже если попробовать написать подобное руководство – получится «каша», там будет обо всем и ни о чем. Мозг просто не справиться с таким потоком информации, независимо от качества и подачи материала.

Лучше разбить это на отдельные направления: проектирование, методы управления проектом, программирование и т.д.
+1
Опытный водитель может, продав одну машину и купив новую, сразу сесть и поехать. Так ведь? Новичка же, куда ни сажай, в город выпускать нельзя.

Я, как опытный водитель со стажем (включая непрерывное вождение на дальняк до 18 часов ~1300 км), могу переварить достаточно многое. То же касается и программирования. Отличие в том, что новичок в городе не знает на что и куда смотреть (про дальняк вообще нечего говорить), его мозг распыляется по нужным и не нужным деталям. Опытный же товарищ знает что взять на вооружение, куда смотреть и как это применить.

Я не против дозированности, т.к. опыт не может прийти сразу только от одного просмотра или одной удачной поездки. Во многих других вещах, не связанных с программированием, я использую классический поэтапный подход. Но те вещи не изменяются через каждые 3-4 года (айкидо, игра на акустике, дворовая гимнастика, история религий).
0
Опытный водитель может, продав одну машину и купив новую, сразу сесть и поехать. Так ведь? Новичка же, куда ни сажай, в город выпускать нельзя.

Я, как опытный водитель со стажем (включая непрерывное вождение на
дальняк до 18 часов ~1300 км), могу переварить достаточно многое. …

Извините, но я не понял суть Ваших аллегорий и метафор. Я рад, за Вас, что Вы опытный водитель, я таким похвастаться не могу.
Только я не понял к чему все это. Я хотел сказать, что учится «всему и сразу» нереально. Все придет со временем, но нереально постичь весь объем материала, просмотрев несколько видеоуроков.
0
А вот мне пришлось понять вашу корову и суть дискретного логарифмирования. Видимо в этом разница, в опыте.
Мне, чтобы понять аллегорию о молоке, пришлось всю жизнь его пить. Я люблю молоко и достаточно хорошо в нём разбираюсь. Чтобы понять вычислительные трюки с mod дело обстоит сложнее. Мне для этого пришлось реализовывать несколько методов шифрования: ЭльГамаля и рюкзачный метод. И, скажу я вам, это было не просто, даже имея обзоры на Вики и некоторые готовые исходники.

Опытный человек содержит в себе образы. Если какая-то тематика ими оперирует, то вхождение в тему будет простое. Человек же без образов должен сначала их внутри себя взрастить. В этом и проблема, это длительная во времени операция. Поэтому, даже если в клипе всё будет разжевано, но слова не понятны (нет образа), то никто ничего не поймёт. Как, например, с клипом без перевода с английского. Нет образа английского слова — нет и результата восприятия, хотя может мужик даёт что-то гораздо вдумчивее, чем картинки, которые озвучивает диктор без понимания происходящего на экране. Это тоже очень большая разница.

Поэтому моё видео может быть непонятно не только от того, что нудное, а ещё и потому, что на данном этапе конкретному слушателю это просто не интересно.
0
Видимо в этом разница, в опыте.
Возможно в этом. Я тоже был молод и жаден к знаниям, когда-то, верил в то, что можно изучить все по принципу «много и сразу». Но это, увы, не так.
0
Есть такие профессии, где нереально постичь материал, читая его, но вполне реально посмотреть живьём, чтобы исполнять возложенную работу. Я как-то работал автоматчиком в прокатном цехе с двухниточным станом. Представляю картину: приходит к нам новый человек и говорим ему — на вот читай доки :) большая часть из которых на английском. Увы, в реальности всё гораздо прозаичней. Если бы человек стал читать доки, то он бы этим занимался до конца своих дней, учитывая то количество материала, которое нужно освоить в самый короткий срок. А это просто охрененное количество доков: от датчиков до АСУ с кучей ПЛК в целом. У нас был специальный винт для всех материалов.

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

Я бы посадил человека за свой стол и показал на свой монитор:

Рабочее место автоматчика

Вот это пять виртуальных машин, которые подключены к промышленной сети. Верхние две картинки показывают работу прокатного стана (по линии B идёт штука, это дублирование мониторов одного из пультов на стане). Нижние три подключены к ПЛК, которые на верхних не обозначены: это печка и бухтоувязчик.

Твоя задача: внимательно следить за сигналами и запоминать их периодичность (потом посмотрим на объекты в реальности). Если стан встанет, то по этим осциллограммам нужно в течении часа определить неисправность и помочь дежурным пересобрать стан (он полностью автоматизирован). Не успеешь, то время будут вычитать из резерва. Кончится резерв, выделенный на месяц, у всего цеха снимут премию.

В реальности, конечно, от обилия инфы глаза разбегаются. Это как в Матрице, потом привыкаешь. Но читать об этом статьи или ещё что-то в этом роде, чтобы понять всё целиком — это вообще нереальная задача. Нужно взять такой монитор (ноут, к примеру), пойти на конкретное место и сравнить то что происходит с тем, что есть на экране. Вот только после этого можно уже что-то начинать читать. Описывать весь процесс работы автоматчика в данном случае просто не имеет смысла, его можно только перенять от человека к человеку. Как там на практике и происходит — от «европейцев» наладчиков к инженерам АСУ, от автоматчиков к электрикам и ниже.

Что касается этой технологии с виртуальными машинами, то эту конкретную реализацию придумал я и не от хорошей жизни. Нам выделяли по одному компу, у меня ещё был один лишний монитор, а «видеть»-то нужно весь стан, размером с футбольное поле. Поэтому нужен был способ как увидеть все нужные сигналы на одном мониторе. Это не просто из-за ограничений в софте. В сети не было чёрного ящика, а алармы там очень ограничены и найти концы за час не так просто, особенно при пуске-наладке. Покумекав немного, я решил разделить свой комп на 5, создал кучу виртуалок, каждую настроил на работу с сетью и подключился к каждой через утилиту удалённого доступа DameWare. Фишка получилась крутой, что даже «еропейские» автоматчики удивлялись, как это у меня на ноуте столько информации и экранов сразу. Жалко только, что начальство потом попросило меня ограничить такой обзор сети из-за возможности перегрузить сеть и обмен данными между ПЛК, что могло бы привести к аварии, хотя такого никогда не было, но это нужно было бы доказывать расчётом трафика.

Так вот, если есть какая-то мудрёная технология, то я лично хотел бы посмотреть как профи пользуется ею живьём, а уже потом разбирать по статьям почему он это сделал так, а не иначе. Я хотел бы увидеть технологию в работе целиком, а уже потом делить её для восприятия по частям. И т.д. Когда же начинаешь это делать по частям и не видишь картину в целом, то многие вещи просто не стыкуются, а то, что не ясно в памяти не отложится.
0
Добавлены ещё два тестовых проекта: HD44780 и Tetris.

В ревизии 17 пока реализовано падение одной фигуры. Может быть интересна реализация двумерного массива для хранения повёрнутых положений фигурок и названий функциональных клавиш: Figures.h и Game.h. А выглядит это так:

Тетрис, падение одной фигуры.
0
  • avatar
  • uni
  • 05 декабря 2012, 11:35
Доработан проект uSD. Теперь в него включён простейший панельный файловый менеджер, который пока умеет только отображать файлы по текущим путям. Для разнообразия покажу iar-овскую прошивку, хотя результат один и тот-же для обоих компиляторов, разве что iar чуть больше использует ОЗУ и меньше флеш, а gcc наоборот.

Проект основан на драйвере Petit FAT File System Module.

Проект uSD с модулем Petit FS
0
Выглядит красиво. Панельный файловый менеджер, тетрис – я так понял Вы задались целью повторить DosNavigator :)
Плохо, что все это привязано к конкретному (+ платному) эмулятору терминала.
Вы можете из MicroVGA выделить минимальный и платформо-независимый код, на котором проявляется баг со съезжанием отображения в разных терминалах? Хочу попробовать его пофиксить.
0
К сожалению, я давно переписал MicroVGA, ибо он убог и содержал ошибки при кодировании ESC-последовательностей. Я его расширил и дополнил, переписав на C++, с поддержкой вывода из флеш при помощи шаблона neiver'а. Теперь он завётся классом: CConsole и находится тут: CConsole.cpp.

Да, это плохо, что есть такая привязка. Мне трудно будет набросать платформо-независимый код, т.к. все команды или их части у меня хранятся во флеш, для экономии ОЗУ, а работа с флеш идёт через шаблон C++ и соответствующее описание. Переделать можно, если посмотреть код, для этого нужно убрать все обёртки в стиле SPSTR() или объявить этот define в виде пустышки.
Есть ещё одна проблема. Я использую CP866 для вывода псевдографики, а код пишу в CP1251, поэтому существует таблица перекодировки из CP1251 в CP866, чтобы я мог текст перекодировать, а графику выводить как есть. Таблица тоже во флеш.

Так что если действительно интересно, то это займёт некоторое время для переделки обращения ко флеш памяти. Есть ещё один момент, мне не нравится как осуществляется ввод. С выводом всё ясно, а вот с вводом не всё просто. Дело в том, что вводные данные могут иметь разную длину: от 1 до 3 символов. Три символа терминал формирует при нажатии клавиш стрелок. Я пока просто одиночные символы обрабатываю и специальным образом ввод ASCIIZ -строки, но по-нормальному это должно работать не так, как сейчас. Это у меня только планируется взять по аналогии из другого проекта.

Если интересует только вывод и ввод одиночных клавиш, то я могу, в принципе, набросать более менее простой вариант того же, что есть сейчас. Возможности класса можно посмотреть в заголовочнике: Console.h.

Файловый менеджер трудно писать из-за того, что ОЗУ очень маленькое. Приходится делать ухищрения. Я надеюсь, что у меня хватит опыта запихнуть туда примитивный просмотрщик и проигрыватель wav-файлов. Больше уже туда ничего не влезет. Так хоть будет интереснее.
0
Надо же, попробовал опять PuTTy и о чудо, почти всё заработало как надо:

uSD, демо-проект, работа с PuTTy
0
Шрифт был не тот, так правильней. Но косяки ещё остались, у меня сначала командная оболочка запускается, так там всё почему-то через строку (наверное где-то дублируется перевод строки). Потом я вызываю менеджер и он почему-то показывается нормально.

uSD, работа с терминалом PuTTy
0
ОК, тогда вопрос снимается.
0
у меня сначала командная оболочка запускается, так там всё почему-то через строку (наверное где-то дублируется перевод строки)
Проверь настройки перевода строки (может, кто-то где-то CR и LF как два отдельных перевода строки воспринимает).
0
6-минутный ролик, демонстрирующий работу простого файлового менеджера на ATmega16 @ 16 МГц. Показана идентичная работа обеих прошивок (iar и avr-gcc): www.youtube.com/watch?v=6OPQV9aZWaE
В качестве отладочной платы используется Pinboard 2. Схема включения типовая. Этот проект можно запустить в Proteus, схема прилагается к исходникам. Правда там будут тормоза, но отлаживать можно.
0
  • avatar
  • uni
  • 07 декабря 2012, 19:39
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.