Ну опять я не так выразился. Конечно микропрограмма для микроконтроллера проста, так как это довольно короткий код. Она сложна именно для меня как программиста поскольку на Паскале и PHP я пишу без особых проблем а вот Ассемблером давно уже не занимался, и опять всё это нужно вспоминать и учится заново.
Вообще-то, программирование, - это сродни езде на велосипеде: раз научился, и забыть потом невозможно! Я последний раз программировал микроконтроллеры по работе лет 12-15 назад. Однако это не помешало мне несколько лет назад разработать и сделать (для себя, любимого!) синтезатор частоты на DDS с управлением микроконтроллером, который выдавал частоты от 0,01 Гц до 15 МГц с разрешением в те же 0,01 Гц. Микроконтроллер PIC18, а нужна была для обеспечения соответствующей точности 64-х битная арифметика. Сам процессор такого не поддерживает и стандартных библиотек в Си тоже таких не было. Пришлось всё разрабатывать самому. Да ещё и оптимизировать по быстродействию! Поскольку если клавиатура - это довольно медленное устройство ввода, то валкодер со 128 импульсами (512 смен кода) на оборот - вещь достаточно быстрая. Даже при одном обороте в секунду на ВСЮ арифметику вместе с записью управляющих слов в DDS должно тратиться не более 2 мс, а ведь ручку-то крутнуть можно и гораздо быстрее! А сбои не допускаются, иначе какой это измерительный прибор, который выдаёт неизвестно что? Ведь этот синтезатор использовался для измерения параметров прецизионных кварцевых резонаторов в домашних условиях. На всё ушло примерно год, но это вместе со слесарно-сверлильными работами - ведь нужно было сделать корпус, переднюю и заднюю панели, я уже молчу про изготовление и монтаж печатных плат!
Сейчас вот очередной домашний проект начал: есть старый усилок - "Романтика 15У-120" и колонки к нему - "S90", и есть современный телевизор, тонкий до невозможности - 15 мм. Звук конечно, никакой, ну как из телевизора! Вот и решил я подключить к телевизору этот усилок с колонками. Сейчас пока через выход с телевизора на наушники. Но ведь это же не серьёзно! Да и при просмотре фильма если что-то нужно порегулировать в звуке, приходится вставать с дивана. А ведь я уже старый и ленивый! Но ведь у телевизора есть выход HDMI с возможностью обратного аудио канала (Audio Return Channel), вот и захотелось, чтобы старенький усилитель понимал цифровой звук! В том числе и с оптического входа. Схема уже практически готова, к тому же пришлось разбираться с интерфейсом HDMI и входящим в него однопроводным интерфейсом CEC - управления потребительской электроникой, поскольку с помощью этого интерфейса все устройства, соединённые вместе с помощью HDMI, могут управляться с одного пульта! В общем, морока ещё та, поскольку прежде всего чрезвычайно трудно было найти собственно стандарт HDMI, дело-то ведь в том, что в этом стандарте описаны способы защиты контента с авторскими правами. Плюс пришлось этот стандарт (конечно же не весь!) переводит на русский, поскольку там очень много специальных терминов и жаргонизмов, в результате слова по отдельности вроде бы понятны, а их смысл - ускользает! Я к чему это, - к тому, что управлять всем этим безобразием будет тоже микроконтроллер - PIC18 и программу к нему придётся писать тоже мне. Но это будет ещё по-видимому не скоро, скорее всего ближе к концу года.
Кроме того ещё ведь и "железо" необходимо. Я уже готовлюсь к тому чтобы протравливать дорожки на соответствующем текстолите и покупать необходимый чип в промэлектронике.
А не рановато-ли? Ты сначала с процессором определись, какой к тебе ближе, или на котором есть опыт программирования, посмотри какие есть средства для разработки и отладки программ, а также для записи их в проц. Может проще будет перейти на другой, незнакомый тебе проц, но для которого есть соответствующие средства и бесплатно. Я ведь уже писáл, что для того же PIC'а есть бесплатная среда разработки и отладки программ - MPLAB.
Ну никто ведь и не спорит, но это при условии постоянной занятости и повышения квалификации в соответствующих центрах разработки. Я же вынужден всем этим заниматься почти что в условиях кружка "очумелые ручки".
Ты знаешь, - это так знакомо! Ведь я сейчас тоже все эти домашние поделки делаю практически на коленке! И платы делаю по лазерно-утюжной технологии, травлю в ванной, и сверлю в кабинете и т.д. Конечно, очень неудобно, когда нет хотя бы маленькой мастерской, поскольку механику на коленке качественно не сделаешь. Но платы по ЛУТ получаются вполне приличные - двухсторонние и с шириной дорожки и зазора между ними в 0,32 мм вполне себе получаются!
Вот сегодня вечером и рисую эту блок-схему, даже специальную софтинку инсталлировал для рисования блок схем. Так что по возможности в течении пары часов постараюсь выложить сюда изображение, по крайней мере эта блок схема действительно достаточно проста.
Вообще-то, никакая специальная софтинка для это не нужна. Всё можно сделать в Оффисовском Ворде, хотя и несколько неудобно. Гораздо более удобно в Microsoft Visio. Но это, как говорится, дело вкуса. Однако, я так полагаю, что за два часа ты сможешь выложить лишь укрупнённую блок-схему, по которой программу микроконтроллера писать ещё нельзя. Для полностью функциональной блок-схемы, чтобы с неё сразу можно было бы программировать, а точнее кодить, нужно несколько больше времени, даже для такой элементарной программы.
Да конечно - нужен чёткий план работы. Я как старый программист и просто компьютерщик/информационщик/интернетчик являюсь по совместительству многозадачным шизофреником.
Вообще-то, человек в силу обстоятельств своей жизни
просто обязан работать в многозадачном режиме! Рассмотрим обычный рабочий день, даже без подробностей: начало с прерывания - будильник. Затем нужно встать, умыться, приготовить завтрак и позавтракать. Одеться, пойти или поехать на работу. На работе тоже многозадачный режим, - по крайней мере у меня, в силу должности, постоянно идут люди с вопросами технического характера. И нужно с каждым разобраться и подсказать верное решение, или хотя бы указать, в каком направлении двигаться. Очередное прерывание - обед. Опять целая куча действий, связанная с этим мероприятием. Затем продолжение трудовой деятельности. Опять прерывание - окончание рабочего дня, затем дорога домой. Дома к тому же часто бывают внуки, а им не откажешь в общении. Ну, и крохи оставшегося до сна времени - это хобби, домашние поделки. Я уже молчу про общение в интернете - которое тоже по прерыванию, но в фоновом режиме.
А что касается шизофрении, - так у каждого свои тараканы в голове! Но, как говорится, одно другому не мешает.
Кстати, насчёт, как ты пишешь, старого программиста. Позволено ли будет мне полюбопытствовать, какие крупные проекты были реализованы тобой или при твоём существенном участии? Мне бы не хотелось меряться письками, да я в общем-то не считаю себя таким уж опытным программистом, те не менее на моём счету довольно много больших проектов, это и давнишние, о которых я уже писал - автоматизация контроля движения пассажирских автобусов, асучивание птицефабрики, - кормление, поение, вентиляция и помётоудаления, плюс закат/рассвет в птичнике для повышения яйценоскости. Кстати, прицефабрика асучивалась на спарке - центральная ЭВМ "Электроника-60", а процессоры в птичниках - собственной разработки и изготовления на базе старинной 580 серии. Более современные работы - это оборудование, работающее в составе унифицированного пульта машиниста (на железной дороге) там пришлось осваивать интерфейс CAN и протокол CANOpen, который предназначен для высоконадёжного управления распределёнными сетями различного оборудования, на основе этого протокола работает множество автомобилей зарубежных фирм. Надеюсь, не нужно объяснять, к чему может привести ошибка в работе оборудования, которое используется в автомобилях или на железнодорожном транспорте. И если с автомобилями всё довольно просто в плане электромагнитной совместимости, то этого нельзя сказать с локомотивами, - микропроцессорное оборудование должно надёжно работать, когда рядом работает мощное оборудование с напряжениями в единицы - десятки киловольт и токами в килоамперы! Кровушки они нам попили немало, пришлось изгаляться как схемотехнически, конструктивно, так и программно. Ну, последние разработки - это диагностическое оборудование, скрещенное с интернетом вещей, т.е. когда устройство диагностики, установленное на оборудовании, имеет свой IP адрес и работает по WI-Fi, т.е. без проводов. И доступ к этому оборудованию можно получить с любого компьютера, имеющего выход в интернет, причём это может быть как настольный компьютер, так и планшет или смартфон. Таким образом можно контролировать работу оборудования, расположенного за тысячи километров! А до этого ещё были комплексные системы управления качеством ремонта в цехах, где также диагностическое и измерительное оборудование в цехах (вплоть до штангенциркулей) объединялись в сеть, и все действия персонала протоколировались, вплоть до составления заявок на комплектующие для ремонта оборудования.
Что вообще свойственно программистам ведь им приходится удерживать в мозгах взаимоисключающиее процессы/явления/параметры. И как многозадачному шизофренику мне порой сложно фокусировать внимание на специализированных задачах. Но я стараюсь. А иногда даже приходит вдохновение и прогресс. Так что не всё ещё потеряно
Насколько я могу судить, основываясь на своём достаточно большом опыте, программистам (в правильном смысле этого слова) свойственно как раз чёткое мышление, умение разбить большую задачу на множество мелких и элементарно решаемых, предвидеть все возможные ситуации в поведении программы. Ведь на самом деле в программировании нет ничего сложного, причём совершенно независимо от того, какой язык ты используешь!
Самое сложное в программирование, - это обработка ошибок и интерфейс с человеком! Потому что ошибки, аппаратные прежде всего, и поведение человека совершенно не предсказуемы. Но всё это нужно обработать, причём так, чтобы сохранилось функционирование конечного изделия и не дай бог, не случилось какой-либо аварии по этой причине.
Ну так в КБ (Конструкторском Бюро) или в АСУ конечно работать лучше - сами стены таких учреждений дисциплинируют! А в условиях хоум-офиса слишком много соблазнов фигнёй разной заниматься типа просмотра сериалов про гиков/компьютерщиков/хакеров/спецагентов или чтения википедии/лурка. Или даже монстров гонять в халфлайфе. Да признаю дисциплины мне не хватает увы но я стараюсь самтаймс.
Да-а-а, вот фильмы за компьютером я точно никогда не смотрю! Что касается игрушек, то это бывает, но крайне редко! Когда уже дойдёшь до полного отупения, вот тогда ещё могу сыграть в какую-нибудь простенькую игрушку, которая совершенно не требует напряжения мозгов, например в Арканоид или его модификации.
Да, да - делаю.
Ждём-с!
Область применимости открывает НОВОЕ КАЧЕСТВО - по настоящему НОСИМЫЙ КОМПЬЮТЕР по мощности сравнимый с типичными РАБОЧИМИ СТАНЦИЯМИ, а уже это открывает пути к развитию ДОПОЛНЕННОЙ РЕАЛЬНОСТИ (в противоположность ВИРТУАЛЬНОЙ реальности от которой уже порой тошнит).
Вообще-то, это опять не так! Ведь твоя клавиатура не имеет никакого отношения ни к виртуальной реальности, ни уж тем более, к дополненной! И тем более, что я тебе сразу предлагал разрабатывать клавиатуру именно в дополненной реальности! Тогда бы и кнопки бы не понадобились, и микропроцессор и программа для него.