Автор Тема: Клавиатура для ношения на руке, идея, (мозговой штурм)  (Прочитано 180519 раз)

Оффлайн digitalman

  • DiG_Man
  • Full
  • ****
  • Сообщений: 1794
  • Репутация: +0/-0
  • DigitalMan[hi is not Cristopher Lambert]
    • http://vkontakte.ru/digital_man
    • Личное сообщение (Оффлайн)

Ещё раз: зачем нужна эта таблица? Так, побаловаться и время потерять?  ;) Ведь программа микроконтроллера должна состоять всего лишь из трёх процедур:
1. Сканирование клавиатуры - получение кода нажатой/отжатой клавиши.
2. Перекодировка полученного кода в стандартный скан-код с учётом выбранного функционала клавиатуры.
3. Временная задержка - защита от дребезга.

Ну, и где там разрабатываемые тобой скан-коды?  :)

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

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

Но в принципе я в успехе уверен поскольку, достаточно хорошо понимаю принципы программирования в ассемблере, и низкоуровневую логику работы микросхем. Кроме того, у меня ещё остается надежда что к этому проекту подключаться заинтересованные АйТишники.
Глобальный Информационный Сервис: Вся информация принадлежит нам...
[DigitalMan/CapRiuS:A1/Цифровой Человек]
(htap://crs)

Оффлайн Новичёк

  • Administrator
  • Hero
  • *****
  • Сообщений: 15347
  • Репутация: +28/-108
    • Личное сообщение (Оффлайн)

Ещё раз: зачем нужна эта таблица? Так, побаловаться и время потерять?  ;) Ведь программа микроконтроллера должна состоять всего лишь из трёх процедур:
1. Сканирование клавиатуры - получение кода нажатой/отжатой клавиши.
2. Перекодировка полученного кода в стандартный скан-код с учётом выбранного функционала клавиатуры.
3. Временная задержка - защита от дребезга.

Ну, и где там разрабатываемые тобой скан-коды?  :)

На словах всё очень просто. Но программа отнюдь не простая

Увы, в том-то и дело, что программа клавиатуры чрезвычайно проста! Всего лишь три процедуры. Ну, и ещё собственно передача скан-кода по интерфейсу PS2. Или у нас с тобой разные понятия насчёт сложности программы? Сложная программа по моим критериям (для микропроцессоров), - это тысячи и десятки тысяч строк кода! Если меньше тысячи строк - это простая программа! Я сомневаюсь, что программа клавиатуры наберёт хотя бы пару сотен строк кода. Кстати, норматив для программиста на ассемблере - 10 команд за рабочий день. Сюда входит разработка алгоритма, написание программы и все виды отладки (статическая, динамическая). Т.е. если принять объём программы в 200 строк кода, то программа должна быть закончена через месяц. Полностью! На самом деле для опытного программиста и с использованием современных языков и средств программирования (MPLAB), эти сроки сокращаются в 3 - 5 раз.

учитывая что я пока ещё не знаю набор команд микроконтроллера PIC. Как я понял этот набор команд ещё проще и ограниченнее процессора Z80, который, по крайней мере, мне хорошо знаком.

Блин, да сколько же можно! При чём здесь набор команд и организация микроконтроллера PIC? Ведь я уже много раз писáл, что начинать нужно не с этого, а с блок-схемы программы! А блок-схема никак не привязана ни структуре микроконтроллера (для столь примитивной программы), ни к системе его команд. Кроме того, тебе же никто не запрещает взять другой микропроцессор, тот, программированием для которого ты владеешь. Ведь схему на PIC контролере я привёл лишь для примера. И её можно легко переделать для любого другого контроллера.

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

Сроки разработки прототипа я уже приводил вот здесь. Это всего лишь одна неделя! Причём достаточно лениво. Ведь я уже писáл, что на разработку принципиальной схемы в среде OrCAD у меня ушло около часа, хотя я дал в указанном ранее посту на это 1 день! Причём это с перерывами на чай и смотрение новостей. Нужно просто иметь чёткий план работы. Что касается промышленных разработок, то там всё строго регламентировано, даже имеется ГОСТ Р 15.201-2000 "Продукция производственно-технического назначения. Порядок разработки и постановки продукции на производство". И начинается всё это с Технического задания (ГОСТ 19.201-78).
Конечно же, с тебя никто не требует в полном объёме соблюдать все требования указанных нормативных документов, но основные моменты следует учитывать непременно, иначе получится не пойми что, и нужное не пойми кому. Точнее, не нужное никому! Я, кстати, вообще молчу о таких тонкостях, как исследование рынка и бизнес-план. Для начала, сформулируй хотя бы в виде текста, те требования, которым должна удовлетворять клавиатура, затем сделай то, о чём я уже много раз писал - разработай блок-схему программы, сначала укрупнённую, а затем более подробную. После этого определись, на каком типе микроконтроллера ты всё это будешь реализовывать, ведь та схема, что я привёл, годится для любого микроконтроллера! Только номера выводов будут другие. Затем разработай печатную плату, причём для прототипа даже не требуется наличие корпуса. Выполни сборку прототипа клавиатуры. И лишь в последнюю очередь озадачивайся написанием программы! Причём программа, как я уже много раз писáл, весьма примитивна! Ту часть, что касается собственно сканирования кнопок, я тебе уже описáл, осталось её воплотить в блок-схеме. Что касается процедуры перекодировки в стандартные скан-коды, то там тоже всё просто: как ты правильно заметил, микроконтроллер должен иметь регистр, определяющий режим работы клавиатуры (ModeKeyBoard), и для удобства пользования состояние этого регистра должно отображаться светодиодами. Цвет светодиода, соответствующий каждому режиму, должен соответствовать цвету надписи на клавишах в этом режиме. Количество клавиш у тебя - 28, следовательно код клавиши можно описáть ближайшим бóльшим двоичным числом - 32 (5 двоичных разрядов). Плюс ещё один разряд, чтобы различить нажатие/отжатие клавиши. А далее всё просто: у тебя имеется четыре (или пять при необходимости) таблиц, переход на каждую из которых происходит в зависимости от содержимого ModeKeyBoard, а по смещению от начала каждой таблицы на величину кода клавиши (0...27) находятся скан-коды, передаваемые по интерфейсу PS2. Вот и всё! Ну и перед всем этим, соответственно, нужно анализировать отпускание клавиши Режима клавиатуры и изменять содержимое ModeKeyBoard и индикацию светодиодов.

Итак, тебе осталось разработать всего лишь две уж совсем элементарные процедуры:
1. Задержку времени (защита от дребезга клавиш).
2. Передача скан-кода по интерфейсу PS2.

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

То, что ты уверен в успехе - я рад! Что касается логики работы и программирования, в частности PIC контроллеров, нужно понимать, что они, в отличие от фон-Неймановской архитектуры, где программа и данные размещены в одной области памяти, обладают Гарвадской архитектурой, когда данные и программа находятся в разных и никак не связанных друг с другом областях памяти. В принципе это на самом деле неважно, хотя вызывает некоторые неудобства при программировании на ассемблере. Однако использование языка Си полностью снимает эти неудобства, поскольку транслятор Си контролирует самостоятельно корректное использование банков памяти.

Что касается  АйТишникиов, то как я уже писáл, вряд ли кому это будет интересно. Слишком простая задача, слишком незамысловатые возможности, слишком узкая область применимости.

P.S.  Меня несколько удивляет то, что хотя я и обещал помогать тебе по конкретным вопросам, ты пока что не задал ни одного такого вопроса, зато постоянно пытаешься заняться совершенно не нужными делами, то картами Карно, которые тут вообще не при делах, то какими-то скан-кодами, которые так же не нужны, то ещё чем-нибудь ненужным. И полностью игнорируешь мои попытки ненавязчиво наставить тебя на путь истинный! Поэтому у меня возникают сомнения в продуктивности всей этой деятельности и необходимости продолжения диалога...

Оффлайн digitalman

  • DiG_Man
  • Full
  • ****
  • Сообщений: 1794
  • Репутация: +0/-0
  • DigitalMan[hi is not Cristopher Lambert]
    • http://vkontakte.ru/digital_man
    • Личное сообщение (Оффлайн)
На словах всё очень просто. Но программа отнюдь не простая

Увы, в том-то и дело, что программа клавиатуры чрезвычайно проста! Всего лишь три процедуры. Ну, и ещё собственно передача скан-кода по интерфейсу PS2. Или у нас с тобой разные понятия насчёт сложности программы? Сложная программа по моим критериям (для микропроцессоров), - это тысячи и десятки тысяч строк кода! Если меньше тысячи строк - это простая программа!

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

Цитировать
Я сомневаюсь, что программа клавиатуры наберёт хотя бы пару сотен строк кода. Кстати, норматив для программиста на ассемблере - 10 команд за рабочий день. Сюда входит разработка алгоритма, написание программы и все виды отладки (статическая, динамическая). Т.е. если принять объём программы в 200 строк кода, то программа должна быть закончена через месяц. Полностью! На самом деле для опытного программиста и с использованием современных языков и средств программирования (MPLAB), эти сроки сокращаются в 3 - 5 раз.

Ну никто ведь и не спорит, но это при условии постоянной занятости и повышения квалификации в соответствующих центрах разработки. Я же вынужден всем этим заниматься почти что в условиях кружка "очумелые ручки".

учитывая что я пока ещё не знаю набор команд микроконтроллера PIC. Как я понял этот набор команд ещё проще и ограниченнее процессора Z80, который, по крайней мере, мне хорошо знаком.

Цитировать
Блин, да сколько же можно! При чём здесь набор команд и организация микроконтроллера PIC? Ведь я уже много раз писáл, что начинать нужно не с этого, а с блок-схемы программы! А блок-схема никак не привязана ни структуре микроконтроллера (для столь примитивной программы), ни к системе его команд. Кроме того, тебе же никто не запрещает взять другой микропроцессор, тот, программированием для которого ты владеешь. Ведь схему на PIC контролере я привёл лишь для примера. И её можно легко переделать для любого другого контроллера.

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

Цитировать
Сроки разработки прототипа я уже приводил вот здесь. Это всего лишь одна неделя! Причём достаточно лениво. Ведь я уже писáл, что на разработку принципиальной схемы в среде OrCAD у меня ушло около часа, хотя я дал в указанном ранее посту на это 1 день! Причём это с перерывами на чай и
смотрение новостей. Нужно просто иметь чёткий план работы.

Да конечно - нужен чёткий план работы. Я как старый программист и просто компьютерщик/информационщик/интернетчик являюсь по совместительству многозадачным шизофреником. Что вообще свойственно программистам ведь им приходится удерживать в мозгах взаимоисключающиее процессы/явления/параметры. И как многозадачному шизофренику мне порой сложно фокусировать внимание на специализированных задачах. Но я стараюсь. А иногда даже приходит вдохновение и прогресс. Так что не всё ещё потеряно ;)

Цитировать
Что касается промышленных разработок, то там всё строго регламентировано, даже имеется ГОСТ Р 15.201-2000 "Продукция производственно-технического назначения. Порядок разработки и постановки продукции на производство". И начинается всё это с Технического задания (ГОСТ 19.201-78).

Ну так в КБ (Конструкторском Бюро) или в АСУ конечно работать лучше - сами стены таких учреждений дисциплинируют! А в условиях хоум-офиса слишком много соблазнов фигнёй разной заниматься типа просмотра сериалов про гиков/компьютерщиков/хакеров/спецагентов или чтения википедии/лурка. Или даже монстров гонять в халфлайфе. Да признаю дисциплины мне не хватает увы :( но я стараюсь самтаймс.

Цитировать
Конечно же, с тебя никто не требует в полном объёме соблюдать все требования указанных нормативных документов, но основные моменты следует учитывать непременно, иначе получится не пойми что, и нужное не пойми кому. Точнее, не нужное никому! Я, кстати, вообще молчу о таких тонкостях, как исследование рынка и бизнес-план.

До исследования рынка и бизнес планов тоже время дойдет.

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

Да, да - делаю.

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

Ок.

Цитировать
Причём программа, как я уже много раз писáл, весьма примитивна!

Согласен, конечно.

Цитировать
Ту часть, что касается собственно сканирования кнопок, я тебе уже описáл, осталось её воплотить в блок-схеме. Что касается процедуры перекодировки в стандартные скан-коды, то там тоже всё просто: как ты правильно заметил, микроконтроллер должен иметь регистр, определяющий режим работы клавиатуры (ModeKeyBoard), и для удобства пользования состояние этого регистра должно отображаться светодиодами. Цвет светодиода, соответствующий каждому режиму, должен соответствовать цвету надписи на клавишах в этом режиме. Количество клавиш у тебя - 28, следовательно код клавиши можно описáть ближайшим бóльшим двоичным числом - 32 (5 двоичных разрядов). Плюс ещё один разряд, чтобы различить нажатие/отжатие клавиши. А далее всё просто: у тебя имеется четыре (или пять при необходимости) таблиц, переход на каждую из которых происходит в зависимости от содержимого ModeKeyBoard, а по смещению от начала каждой таблицы на величину кода клавиши (0...27) находятся скан-коды, передаваемые по интерфейсу PS2. Вот и всё! Ну и перед всем этим, соответственно, нужно анализировать отпускание клавиши Режима клавиатуры и изменять содержимое ModeKeyBoard и индикацию светодиодов.

Обмозгую.

Цитировать
Что касается  АйТишникиов, то как я уже писáл, вряд ли кому это будет интересно. Слишком простая задача, слишком незамысловатые возможности, слишком узкая область применимости.

Область применимости открывает НОВОЕ КАЧЕСТВО - по настоящему НОСИМЫЙ КОМПЬЮТЕР по мощности сравнимый с типичными РАБОЧИМИ СТАНЦИЯМИ, а уже это открывает пути к развитию ДОПОЛНЕННОЙ РЕАЛЬНОСТИ (в противоположность ВИРТУАЛЬНОЙ реальности от которой уже порой тошнит).

Цитировать
P.S.  Меня несколько удивляет то, что хотя я и обещал помогать тебе по конкретным вопросам, ты пока что не задал ни одного такого вопроса, зато постоянно пытаешься заняться совершенно не нужными делами, то картами Карно, которые тут вообще не при делах, то какими-то скан-кодами, которые так же не нужны, то ещё чем-нибудь ненужным. И полностью игнорируешь мои попытки ненавязчиво наставить тебя на путь истинный! Поэтому у меня возникают сомнения в продуктивности всей этой деятельности и необходимости продолжения диалога...

Всё путём. Просто я в многозадачном режиме работаю. Но все комментарии я читаю, анализирую и принимаю ко вниманию. Игнорирования нет, есть только замедленная реакция, поскольку как уже писал - проц тормозит и кэш памяти не хватает порой.
Глобальный Информационный Сервис: Вся информация принадлежит нам...
[DigitalMan/CapRiuS:A1/Цифровой Человек]
(htap://crs)

Оффлайн Новичёк

  • Administrator
  • Hero
  • *****
  • Сообщений: 15347
  • Репутация: +28/-108
    • Личное сообщение (Оффлайн)
Ну опять я не так выразился. Конечно микропрограмма для микроконтроллера проста, так как это довольно короткий код. Она сложна именно для меня как программиста поскольку на Паскале и 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, т.е. без проводов. И доступ к этому оборудованию можно получить с любого компьютера, имеющего выход в интернет, причём это может быть как настольный компьютер, так и планшет или смартфон. Таким образом можно контролировать работу оборудования, расположенного за тысячи километров! А до этого ещё были комплексные системы управления качеством ремонта в цехах, где также диагностическое и измерительное оборудование в цехах (вплоть до штангенциркулей) объединялись в сеть, и все действия персонала протоколировались, вплоть до составления заявок на комплектующие для ремонта оборудования.

Что вообще свойственно программистам ведь им приходится удерживать в мозгах взаимоисключающиее процессы/явления/параметры. И как многозадачному шизофренику мне порой сложно фокусировать внимание на специализированных задачах. Но я стараюсь. А иногда даже приходит вдохновение и прогресс. Так что не всё ещё потеряно ;)

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

Ну так в КБ (Конструкторском Бюро) или в АСУ конечно работать лучше - сами стены таких учреждений дисциплинируют! А в условиях хоум-офиса слишком много соблазнов фигнёй разной заниматься типа просмотра сериалов про гиков/компьютерщиков/хакеров/спецагентов или чтения википедии/лурка. Или даже монстров гонять в халфлайфе. Да признаю дисциплины мне не хватает увы :( но я стараюсь самтаймс.

Да-а-а, вот фильмы за компьютером я точно никогда не смотрю! Что касается игрушек, то это бывает, но крайне редко! Когда уже дойдёшь до полного отупения, вот тогда ещё могу сыграть в какую-нибудь простенькую игрушку, которая совершенно не требует напряжения мозгов, например в Арканоид или его модификации.

Да, да - делаю.

Ждём-с!

Область применимости открывает НОВОЕ КАЧЕСТВО - по настоящему НОСИМЫЙ КОМПЬЮТЕР по мощности сравнимый с типичными РАБОЧИМИ СТАНЦИЯМИ, а уже это открывает пути к развитию ДОПОЛНЕННОЙ РЕАЛЬНОСТИ (в противоположность ВИРТУАЛЬНОЙ реальности от которой уже порой тошнит).

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

Оффлайн digitalman

  • DiG_Man
  • Full
  • ****
  • Сообщений: 1794
  • Репутация: +0/-0
  • DigitalMan[hi is not Cristopher Lambert]
    • http://vkontakte.ru/digital_man
    • Личное сообщение (Оффлайн)
Прошу извинить за долгую паузу, обстоятельства несколько помешали...

Вообще-то, программирование, - это сродни езде на велосипеде: раз научился, и забыть потом невозможно!


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

Цитировать
На всё ушло примерно год, но это вместе со слесарно-сверлильными  работами - ведь нужно было сделать корпус, переднюю и заднюю панели, я уже молчу про изготовление и монтаж печатных плат!

Замечательно. Хорошо когда руки из правильного места растут :)

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

Ужас какой. Зачем в такие дебри лезть?

Цитировать
Я к чему это, - к тому, что управлять всем этим безобразием будет тоже микроконтроллер - PIC18 и программу к нему придётся писать тоже мне. Но это будет ещё по-видимому не скоро, скорее всего ближе к концу года.

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

Цитировать
А не рановато-ли? Ты сначала с процессором определись, какой к тебе ближе, или на котором есть опыт программирования, посмотри какие есть средства для разработки и отладки программ, а также для записи их в проц. Может проще будет перейти на другой, незнакомый тебе проц, но для которого есть соответствующие средства и бесплатно. Я ведь уже писáл, что для того же PIC'а есть бесплатная среда разработки и отладки программ - MPLAB.

Главные требования к микроконтроллеру - простота, дешевизна, и массовость. Чтобы не было вероятных проблем с дефицитом комплектующих. Из-за дефицита микросхем во времена микрокомпьютерной революции (80-е годы) очень многие многообещающие семейства эвм так и заглохли в зачатке. Сегодня проблем с дефицитом нет, теперь главная проблема сверхмонополизация рынка чипов (Intel, AMD и прочие) из-за чего в "гараже" компьютер уже не собрать :)

Цитировать
Ты знаешь, - это так знакомо! Ведь я сейчас тоже все эти домашние поделки делаю практически на коленке! И платы делаю по лазерно-утюжной технологии,  травлю в ванной, и сверлю в кабинете и т.д. Конечно, очень неудобно, когда нет хотя бы маленькой мастерской, поскольку механику на коленке качественно не сделаешь. Но платы по ЛУТ получаются вполне приличные - двухсторонние и с шириной дорожки и зазора между ними в 0,32 мм вполне себе получаются!

Кто-то когда-то сказал: Если хочешь чего-то сделать - делай немедленно, используй что имеешь, материалы/инструменты, лучшие инструменты появятся потом. Вот и я тоже думаю что ждать идеальных условий для работы и оборудования, бесполезно. Каждый настоящий стартап начинался с минимума. Даже первые автомобили Форда делались когда-то как примитивные модификации телеги. Сегодня очень многие пугаются масштабам работы и почти невозможностью конкуренции с развитыми корпорациями, и сворачивают разные проекты даже и не начав. Но в крупных корпорациях творческое начало у работников подавляется (прежде всего бюрократией), а стартапы бывает и "выстреливают".

Цитировать
Вообще-то, никакая специальная софтинка для это не нужна. Всё можно сделать в Оффисовском Ворде, хотя и несколько неудобно. Гораздо более удобно в Microsoft Visio. Но это, как говорится, дело вкуса. Однако, я так полагаю, что за два часа ты сможешь выложить лишь укрупнённую блок-схему, по которой программу микроконтроллера писать ещё нельзя. Для полностью функциональной блок-схемы, чтобы с неё сразу можно было бы программировать, а точнее кодить, нужно несколько больше времени, даже для такой элементарной программы.

Переоценил я несколько свои возможности по рисованию блок схем. (Код порой проще писать). Я её выложу раз обещал. Но полностью она ещё не готова.

Цитировать
Вообще-то, человек в силу обстоятельств своей жизни просто обязан работать в многозадачном режиме!

Человек не может обеспечивать подлинную многозадачность думая ОДНОВРЕМЕННО о многих вещах. У человека многозадачность времязависимая вытесняющая (приоритетные задачи вытесняют фоновые, часть "задач" вообще никак не решается).

Цитировать
А что касается шизофрении, - так у каждого свои тараканы в голове! Но, как говорится, одно другому не мешает.

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

Цитировать
Кстати, насчёт, как ты пишешь,  старого программиста. Позволено ли будет мне полюбопытствовать, какие крупные проекты были реализованы тобой или при твоём существенном участии?

Ну всё относительно, я "старый" программист по сравнению с нынешними web "дизайнерами" которые не знают что такое "стек" или умножение на два путём сдвига регистра. Когда учился в техникуме видел там ECки, и "Нейронами" пользовался с мониторами CGA и 5 дюймовыми дисководами. Совсем доисторические времена я конечно не застал. Но что характерно, замучался делать апгрейд (самостоятельно). У меня дома был и 286 и 386 и 486 и первый Пентиум. В середине-конце 90-х годов с апгрейдом была постоянная нервотрепка.
Что касается серьезных больших проектов - таких не было и к сожалению(мало опыта получил) и к счастью(есть свободное время заниматься долговременным проектом). Сисадминил, рисовал сайты, создавал простые приложения в Дельфях. Создаю пиринговую сеть но это большая тема.

Цитировать
Мне бы не хотелось меряться письками, да я в общем-то не считаю себя таким уж опытным программистом, те не менее на моём счету довольно много больших проектов, это и давнишние, о которых я уже писал - автоматизация контроля движения пассажирских автобусов, асучивание птицефабрики, - кормление, поение, вентиляция и помётоудаления, плюс закат/рассвет в птичнике для повышения яйценоскости. Кстати, прицефабрика асучивалась на спарке - центральная ЭВМ "Электроника-60", а процессоры в птичниках - собственной разработки и изготовления на базе старинной 580 серии. Более современные работы - это оборудование, работающее в составе унифицированного пульта машиниста (на железной дороге) там пришлось осваивать интерфейс CAN и протокол CANOpen, который предназначен для высоконадёжного управления распределёнными сетями различного оборудования, на основе этого протокола работает множество автомобилей зарубежных фирм. Надеюсь, не нужно объяснять, к чему может привести ошибка в работе оборудования, которое используется в автомобилях или на железнодорожном транспорте. И если с автомобилями всё довольно просто в плане электромагнитной совместимости, то этого нельзя сказать с локомотивами, - микропроцессорное оборудование должно надёжно работать, когда рядом работает мощное оборудование с напряжениями в единицы - десятки киловольт и токами в килоамперы! Кровушки они нам попили немало, пришлось изгаляться как схемотехнически, конструктивно, так и программно. Ну, последние разработки - это диагностическое оборудование, скрещенное с интернетом вещей, т.е. когда устройство диагностики, установленное на оборудовании, имеет свой IP адрес и работает по WI-Fi, т.е. без проводов. И доступ к этому оборудованию можно получить с любого компьютера, имеющего выход в интернет, причём это может быть как настольный компьютер, так и планшет или смартфон. Таким образом можно контролировать работу оборудования, расположенного за тысячи километров! А до этого ещё были комплексные системы управления качеством ремонта в цехах, где также диагностическое и измерительное оборудование в цехах (вплоть до штангенциркулей) объединялись в сеть, и все действия персонала протоколировались, вплоть до составления заявок на комплектующие для ремонта оборудования.

Ну это всё понятно. Сложно всё и напряжно для мозгов. Что касается айпи адресов, тягомотина с внедрением tcpipv 6 давно продолжается.

Что вообще свойственно программистам ведь им приходится удерживать в мозгах взаимоисключающиее процессы/явления/параметры. И как многозадачному шизофренику мне порой сложно фокусировать внимание на специализированных задачах. Но я стараюсь. А иногда даже приходит вдохновение и прогресс. Так что не всё ещё потеряно ;)

Цитировать
Насколько я могу судить, основываясь на своём достаточно большом опыте, программистам (в правильном смысле этого слова) свойственно как раз чёткое мышление, умение разбить большую задачу на множество мелких и элементарно решаемых, предвидеть все возможные ситуации в поведении программы.
Вот предвидеть ВСЕ возможные ситуации в работе программы как раз и может лишь нестандартный мозг. Программисты вынуждены иметь дело с ИСКЛЮЧЕНИЯМИ, они порой обдумывают ситуации которые могут возникнуть у обычного пользователя раз в пять лет по теории вероятности.[/quote]

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

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


Глобальный Информационный Сервис: Вся информация принадлежит нам...
[DigitalMan/CapRiuS:A1/Цифровой Человек]
(htap://crs)

Оффлайн Новичёк

  • Administrator
  • Hero
  • *****
  • Сообщений: 15347
  • Репутация: +28/-108
    • Личное сообщение (Оффлайн)
Прошу извинить за долгую паузу, обстоятельства несколько помешали...

Вообще-то, программирование, - это сродни езде на велосипеде: раз научился, и забыть потом невозможно!


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

Никакого лукавства! На себе, да и на других проверено. После очень долгого (десятки лет) перерыва, неуверенность лишь первое время: 5 - 10 минут, а потом идёт как и тогда, десятки лет назад!

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

Ужас какой. Зачем в такие дебри лезть?

А что ты можешь предложить более простого? Купить готовый ресивер? Но ведь это же не интересно! Я же тебе уже писáл, что клавиатуры, подобные той, которую ты хочешь разработать, уже существуют! На что ты ответил, что главное, - чтобы это было сделано своими руками. Точно так же и здесь, хочется всё сделать самому! Это же хобби. К тому же, приличные ресиверы стоят от десятков до сотен килорублей, а то и свыше полумиллиона. И в каждом из них что-нибудь да не устраивает! А сам же я сделаю именно так, как мне удобно.

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

Что значит "уникальные схемы"? Схема - она и есть схема. В любом случае она состоит из отдельных блоков, чаще всего стандартных. И из этих блоков, как из кубиков, формируется готовое изделие. К тому же, на самом деле практически все схемы по своему уникальны. И каждой такой схеме нужно ведь разработать печатную плату. Ведь именно здесь и проявляется вся "уникальность"! А то касается рынка - так я же тебе про клавиатуру то же писáл.

Цитировать
А не рановато-ли? Ты сначала с процессором определись, какой к тебе ближе, или на котором есть опыт программирования, посмотри какие есть средства для разработки и отладки программ, а также для записи их в проц. Может проще будет перейти на другой, незнакомый тебе проц, но для которого есть соответствующие средства и бесплатно. Я ведь уже писáл, что для того же PIC'а есть бесплатная среда разработки и отладки программ - MPLAB.

Главные требования к микроконтроллеру - простота, дешевизна, и массовость. Чтобы не было вероятных проблем с дефицитом комплектующих. Из-за дефицита микросхем во времена микрокомпьютерной революции (80-е годы) очень многие многообещающие семейства эвм так и заглохли в зачатке. Сегодня проблем с дефицитом нет, теперь главная проблема сверхмонополизация рынка чипов (Intel, AMD и прочие) из-за чего в "гараже" компьютер уже не собрать :)

Ты знаешь, микроконтроллеры с примерно одинаковыми возможностями и стоят примерно одинаково. Рынок, знаете ли! Что касается гигантов - Intel, AMD и т.д., то они вообще здесь не при делах! Ведь микропроцессоры, которые устанавливаются в компьютеры и являются весьма универсальными, и микроконтроллеры, которые на одном кристалле содержат все элементы, необходимые для построения законченного устройства (арифметико-логическое устройство, оперативная память, постоянная перепрограммируемая память, порты вода/выводы, в том числе и последовательные RS-232, I2C, USB, таймеры, в том числе сторожевой таймер, АЦП, ЦАП и ШИМ), - это всё же две большие разницы! Да и области применения у них совершенно разные.  К тому же в теперешнее время нет такого дефицита комплектации, как ранее. Кроме того, для создания прототипа, можно в принципе использовать любой микроконтроллер, главное, чтобы были доставабельные и, по возможности, дешёвые средства разработки и отладки. А здесь, мне кажется, остаются всего лишь два варианта - PIC (Microchip) и AT (Atmel). Ведь всё остальное - совершенно не принципиально!

Переоценил я несколько свои возможности по рисованию блок схем. (Код порой проще писать). Я её выложу раз обещал. Но полностью она ещё не готова.

Это да, и уже говорил об этом. Хотя укрупнённую блок-схему за два часа вполне можно сделать. Что касается "код проще писать", то это не так! Хотя если ты имеешь ввиду именно кодить, а не программировать, т.е. создавать код программы на том или ином языке программирования по имеющейся готовой блок-схеме, то это безусловно очень просто! Для этого  нанимают девочек, после 10 класса, обучают их знаниям языка программирования, и они обычно с этим успешно справляются! А вот разработать подробную блок-схему, по которой можно было бы кодить, да ещё с учётом всех особенностей архитектуры целевого микроконтроллера, - это далеко не просто! К тому же, как я уже писáл ранее, создавать код без блок-схемы можно только для чрезвычайно простых программ,  объём которых несколько десятков команд. Поскольку держать в голове логику и структуру большой программы человек просто не в состоянии в силу его физиологических особенностей. Поэтому такого рода "программирование", как я уже писáл, это как стрельба по македонски - эффектно, но не эффективно!

Цитировать
Кстати, насчёт, как ты пишешь,  старого программиста. Позволено ли будет мне полюбопытствовать, какие крупные проекты были реализованы тобой или при твоём существенном участии?

Ну всё относительно, я "старый" программист по сравнению с нынешними web "дизайнерами" которые не знают что такое "стек" или умножение на два путём сдвига регистра.

Ну, это элементарные вещи, которые должны знать даже школьники, которым преподавали информатику. И если кто-то этого не знает, то и программистом его называть нельзя!

Когда учился в техникуме видел там ECки, и "Нейронами" пользовался с мониторами CGA и 5 дюймовыми дисководами.

А я вот начинал с ламповой М20:



Давно это было... "Нейрон И9.66" был в одной из контор, где я раньше работал:



На ней наш бухгалтер делал свои отчёты для налоговой. Причём как он сам говорил, для того, чтобы сделать отчёт, машина ему не нужна, она нужна лишь для того, чтобы на законном основании обманывать государство!  :D Кстати, дисковод там был ну очень большого размера, аж 10 мегабайт. Однажды на этом компе случилась авария, полетела файловая система и все данные стали недоступны. Пришлось разбираться со структурой и организацией файловой системы MS-DOS v3.3. Разобрался, восстановил все данные, и первое, что захотелось сделать, - написать вирус! Поскольку эта файловая система была прямо заточена под то, чтобы для неё вирусы писали. Благо совесть удержала.

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

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

Опять ты ошибаешься! Ведь на самом деле главное здесь - это правильная организация. А для сложных проектов - это разбиение его на ряд маленьких и относительно простых задач. И искусство организатора (team leader'а) как раз и состоит в том, чтобы правильно разбить большую задачу на ряд маленьких.

Оффлайн digitalman

  • DiG_Man
  • Full
  • ****
  • Сообщений: 1794
  • Репутация: +0/-0
  • DigitalMan[hi is not Cristopher Lambert]
    • http://vkontakte.ru/digital_man
    • Личное сообщение (Оффлайн)
Цитировать
Кроме того, для создания прототипа, можно в принципе использовать любой микроконтроллер, главное, чтобы были доставабельные и, по возможности, дешёвые средства разработки и отладки. А здесь, мне кажется, остаются всего лишь два варианта - PIC (Microchip) и AT (Atmel). Ведь всё остальное - совершенно не принципиально!

Да верно.

Переоценил я несколько свои возможности по рисованию блок схем. (Код порой проще писать). Я её выложу раз обещал. Но полностью она ещё не готова.

Цитировать
Это да, и уже говорил об этом. Хотя укрупнённую блок-схему за два часа вполне можно сделать. Что касается "код проще писать", то это не так! Хотя если ты имеешь ввиду именно кодить, а не программировать, т.е. создавать код программы на том или ином языке программирования по имеющейся готовой блок-схеме, то это безусловно очень просто! Для этого  нанимают девочек, после 10 класса, обучают их знаниям языка программирования, и они обычно с этим успешно справляются! А вот разработать подробную блок-схему, по которой можно было бы кодить, да ещё с учётом всех особенностей архитектуры целевого микроконтроллера, - это далеко не просто! К тому же, как я уже писáл ранее, создавать код без блок-схемы можно только для чрезвычайно простых программ,  объём которых несколько десятков команд. Поскольку держать в голове логику и структуру большой программы человек просто не в состоянии в силу его физиологических особенностей. Поэтому такого рода "программирование", как я уже писáл, это как стрельба по македонски - эффектно, но не эффективно!
Цитировать

Хотел процитировать фрагмент статьи о жизни и работе старого программиста но не нашел её в сети. Он описывал вроде бы конец 70 начало 80 годов. И работал тогда на довольно мощных мейнфреймах. Писал что в организации была стандартизация по черчению блок-схем и подобная работа его постоянно выводила из себя так как занимала множество времени с сомнительным результатом. Когда программист знает хорошо свой проект ему лишние блок схемы не нужны, разве что посторонним объяснить - документация кода.

Исходный код относительно легко читается в виде текста если хорошо отформатирован. Вот космический корабль "Буран" вроде бы запускали с помощью языка блок-схем (Дракон) но что это было там такое - ума не приложу. Да и вообще чтобы вывести блоксхему больших проектов нужен телевизор с разрешением в десятки мегапикселей наверное.

Вот кстати отличная статья в тему. (блок-схем в том числе) от Джоэла Спольски. http://local.joelonsoftware.com/wiki/%D0%9D%D0%B5_%D0%B4%D0%B0%D0%B9%D1%82%D0%B5_%D0%90%D1%81%D1%82%D1%80%D0%BE%D0%BD%D0%B0%D0%B2%D1%82%D0%B0%D0%BC_%D0%90%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D1%8B_%D0%B2%D0%B0%D1%81_%D0%B7%D0%B0%D0%BF%D1%83%D0%B3%D0%B0%D1%82%D1%8C

Цитировать
Кстати, насчёт, как ты пишешь,  старого программиста. Позволено ли будет мне полюбопытствовать, какие крупные проекты были реализованы тобой или при твоём существенном участии?

Цитировать
На ней наш бухгалтер делал свои отчёты для налоговой. Причём как он сам говорил, для того, чтобы сделать отчёт, машина ему не нужна, она нужна лишь для того, чтобы на законном основании обманывать государство!  :D Кстати, дисковод там был ну очень большого размера, аж 10 мегабайт. Однажды на этом компе случилась авария, полетела файловая система и все данные стали недоступны. Пришлось разбираться со структурой и организацией файловой системы MS-DOS v3.3. Разобрался, восстановил все данные, и первое, что захотелось сделать, - написать вирус! Поскольку эта файловая система была прямо заточена под то, чтобы для неё вирусы писали. Благо совесть удержала.

Да знаю. У нас в аудитории только у двух нейронов были такие большие винчестеры, у остальных только дисководы. А в MS DOS использовался не Нортон а Волков командер. Видимо VC это усеченная версия NC. Он был гораздо компактнее.

Цитировать
Сложность понятие относительное. В больших проектах оно имеет свойство накапливаться. В конце концов сложность проекта становится непреодолимой, ну или требует гораздо более развитого разума.

Цитировать
Опять ты ошибаешься! Ведь на самом деле главное здесь - это правильная организация. А для сложных проектов - это разбиение его на ряд маленьких и относительно простых задач. И искусство организатора (team leader'а) как раз и состоит в том, чтобы правильно разбить большую задачу на ряд маленьких.

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

Иногда компьютерные ошибки/баги остаются лишь мелкими недоразумениями а иногда могут вызвать последствия в виде разных аварий и даже жертв. Эта тема избитая давно но мне вот вспомнился фильм на тему последствий. Фильм Blackhat (на русский перевели название то ли Хакер то ли Кибер). Довольно любопытно снято самое начало. Сам фильм не впечатлил - лучше и не смотреть. А вот спецэффекты в начале заслуживают описания.

В общем показывается крупным планом какой-то персональный компьютер стоящий на АЭС, на его экране стрелочные индикаторы скорости вращения турбин. Потом вид с камеры проникает внутрь компьютера, идет увеличение, материнская плата становится большой наподобие города, затем увеличивается процессор, его ядро, степень увеличения растет и вот уже видны проводники с транзисторами а по ним гоняют световые вспышки обозначающие потоки электронов. Затем идет уменьшение и камера передвигается по витой паре обозначая пакет данных. В итоге какой то исполнительный механизм получает команду и скорость одной из турбин уходит в красную зону и она идет вразнос. Ну и авария на АЭС соответственно, как можно подумать, из за какого нибудь неправильного условного перехода. Китайская АЭС вроде была. Вообще не понимаю как они это всё снимают. Корецы сняли тоже недавно художественный фильм про аварию на станции по мотивам Фукусимы которая в Японии. Но фильмы эти (художественые!) подозрительно напоминают реальные репортажи с места событий. Впрочем такая штука как гонзо журналистика (живой поток онлайн событий из самого эпицентра) давно существует.
Глобальный Информационный Сервис: Вся информация принадлежит нам...
[DigitalMan/CapRiuS:A1/Цифровой Человек]
(htap://crs)

Оффлайн Новичёк

  • Administrator
  • Hero
  • *****
  • Сообщений: 15347
  • Репутация: +28/-108
    • Личное сообщение (Оффлайн)
Цитировать
Кроме того, для создания прототипа, можно в принципе использовать любой микроконтроллер, главное, чтобы были доставабельные и, по возможности, дешёвые средства разработки и отладки. А здесь, мне кажется, остаются всего лишь два варианта - PIC (Microchip) и AT (Atmel). Ведь всё остальное - совершенно не принципиально!

Да верно.

Ну, и на чём же ты остановился? Тем более, что Microchip теперь выпускает и процессоры AVR.

Хотел процитировать фрагмент статьи о жизни и работе старого программиста но не нашел её в сети. Он описывал вроде бы конец 70 начало 80 годов. И работал тогда на довольно мощных мейнфреймах. Писал что в организации была стандартизация по черчению блок-схем и подобная работа его постоянно выводила из себя так как занимала множество времени с сомнительным результатом. Когда программист знает хорошо свой проект ему лишние блок схемы не нужны, разве что посторонним объяснить - документация кода.

Опять ты не прав! Во-первых, я сомневаюсь, что этот, с позволения сказать "программист", действительно был программистом в хорошем смысле этого слова, а не самонадеянным амбициозным выскочкой, а во-вторых, не нужно забывать об ограниченных возможностях человеческой психики! Ведь человеческий мозг способен удерживать и оперировать лишь ограниченным, относительно малым объёмом данных, если количество этих данных возрастает, то он начинает допускать ошибки. И именно для этого необходимо разбивать сложную задачу на ряд мелких, содержащих относительно малое количество условий для создания программы. Что касается объяснения для посторонних, - я вспоминаю свои споры со старшим сыном, которые были много лет назад. Он тогда говорил, что его программы являются, как он заявлял, самодокументируемыми, т.е. как и ты утверждал, что достаточно просто текста программы, причём практически без комментариев! Я поступил очень просто: через три месяца подсунул ему его же текст программы, про который он давно забыл, и попросил объяснить, что и как делает эта программа. Надо было видеть его лицо, а главное, сколько времени он потратил, на то, чтобы разобраться в том, что он сам же и наваял!
Ведь на самом деле жизненный цикл программы, как правило, не заканчивается после её отладки и сдачи заказчику. Очень часто в процессе эксплуатации возникает необходимость в каких-либо доработках, о которых на этапе создания программы просто не знали. Я уже не говорю об ошибках, которые в процессе отладки и тестирования просто не заметили. И вот тогда-то и нужны блок-схема и тщательно откомментаренный текст программы! Вот в качестве примера фрагмент правильно написанного кода:
Init2510 ; Инициализирует микросхему МСР2510

CALL Reset2510 ; Выполним сброс МСР2510

     ;; Делитель для CLKOUT установим на 4
        MOVC 0x03,b2510RegMask ; Значение регистра маски
        MOVC    0x02,b2510RegData ; Значение регистра данных
        MOVLW   CANCTRL ; Адрес регистра куда будем
        CALL    BitMod2510 ;   писать в битовом режиме

     ;; Настраиваем TXRTSCTRL и считываем установки переключателей (TXnRTS)
CLRF b2510RegData ; Байт настройки TXnRTS как цифровых входов
MOVLW TXRTSCTRL ; Адрес регистра управления и состояния TXnRTS
CALL Wrt2510Reg ; Установим TXnRTS как цифровые
MOVLW TXRTSCTRL ; Адрес регистра управления и состояния TXnRTS
CALL Rd2510Reg ; прочитаем значение переключателей
ANDLW 38h ; Выделим нужные разряды
MOVWF bBaseID_L ; Это базовый ID узла
Set_Bank_1 ; Включим банк 1
MOVWF Node_ID ; Это номер узла (для объектов словаря)
BCF _C ; Сбросим перенос
RRF Node_ID ; Поместим
RRF Node_ID ;   куда
RRF Node_ID ;     надо
Set_Bank_0 ; Включим банк 0
BCF _C ; Очистим бит переноса
RLF bBaseID_L ; Подготовим для
RLF bBaseID_L ;   записи в L-регистры

MOVFW PORTB ; Считаем ст. разряды ID
ANDLW B'00001110' ; Выделим значение переключателей
MOVWF bBaseID_H ; Сохраним
MOVFW PORTA ; Считаем оставшийся разряд
MOVWF Temp ; Пока в Temp
SWAPF Temp,W ; Значение RA4 в нулевой разряд
ANDLW 1 ;   и выделим его
IORWF bBaseID_H ; Вот теперь это ст. байт ID
MOVFW bBaseID_H ; Старшие разряды ID
MOVWF Temp ; Поместим
SWAPF Temp ;   в старшую тетраду
BCF _C ; Очистим перенос
RRF Temp,W ;   и сдвинем на своё место
Set_Bank_1 ; Включим банк 1
IORWF Node_ID ; Теперь это Node_ID
Set_Bank_0 ; Включим банк 0

; Установка конфигурации CAN физического уровня

; Временные характеристики приёма бита
;
;  Для частоты кв. генер. CAN контроллера CANosc = 16 МГц, числе квантов на бит - 16, бодовой
;  скорости CAN шины 125 кбод: квант времени TQ = 2 * (1/CANosc) * T_BRP = 0,5 мкс;
;  бодовая скорость = 1/(число квантов на бит) * TQ

T_BRP   = 4 ; Предделитель бодовой скорости, допустимо: 1...64 - определяет квант времени

T_PRSEG = 5 ; Длительность сегмента задержки распространения в квантах времени TQ, доп. 1...8
T_PHSG1 = 8 ; Длительность сегмента фазы 1 в квантах времени TQ, доп. 1...8

T_SJW   = 1 ; Время скачка синхронизации, допустимо: 1...4 в квантах времени TQ
T_BLT   = 1 ; PHSEG2 определяется из  CNF3, допустимо ещё 0
T_SAM   = 0 ; Выборка уровня линии шины только один раз, допустимо ещё 1 - это три раза

; Проверка на допустимость значений

IF T_SJW < 1 | T_SJW > 4
  ERROR "Недопустимое время скачка синхронизации"
ENDIF

IF T_BRP < 1 | T_BRP > .64
  ERROR "Недопустимое значение бодовой скорости"
ENDIF

IF T_BLT != 0 && T_BLT != 1
  ERROR "Недопустимое значение BLTMODE"
ENDIF

IF T_SAM != 0 && T_SAM != 1
  ERROR "Недопустимое значение режима выборки"
ENDIF

IF T_PHSG1 < 1 | T_PHSG1 > 8
  ERROR "Недопустимое значение времени сегмента фазы 1"
ENDIF

IF T_PRSEG < 1 | T_PRSEG > 8
  ERROR "Недопустимое значение времени сегмента времени распространения"
ENDIF

; Вычисление констант регистров конфигурации

C_CNF1 = 40h*(T_SJW - 1) + (T_BRP - 1) ; Константа для записи в регистр CNF1
C_CNF2 = 80h*T_BLT + 40h*T_SAM + 8*(T_PHSG1-1) + (T_PRSEG-1) ; то же для CNF2

T_PHSG2 = 16 - 1 - T_PRSEG - T_PHSG1 ; Длительность сегмента фазы 2

IF T_PHSG2 < 2 | T_PHSG2 > 8
  ERROR "Недопустимое значение времени сегмента фазы 2"
ENDIF

C_CNF3 = T_PHSG2-1 ; Константа для записи в регистр CNF3

Вот кстати отличная статья в тему. (блок-схем в том числе) от Джоэла Спольски.

Опять ты ошибаешься! Дело в том, что в этой статье рассматривается ЧТО должна делать та или иная программа, а блок-схема показывает КАК это должно быть сделано. А это, как говорят в Одессе, две большие разницы! Причём как я уже говорил, если формулировка требований к программе (ЧТО она должна делать) и разбивка большой задачи на ряд маленьких, - это по сути дела искусство, имея ввиду, что это творчество, то создание блок-схемы и написание программы (КАК это должно делаться) - это рутина, и творчества как такового там весьма и весьма мало.
Кстати, рекомендую ознакомиться с ГОСТ 19.101-77 "Виды программ и программных документов" чтобы иметь представление, как всё это должно выглядеть. Поскольку если дело касается создания программ для промышленного применения, то без ГОСТ'ов по ЕСПД, - никак!

Иногда компьютерные ошибки/баги остаются лишь мелкими недоразумениями а иногда могут вызвать последствия в виде разных аварий и даже жертв. Эта тема избитая давно но мне вот вспомнился фильм на тему последствий. Фильм Blackhat (на русский перевели название то ли Хакер то ли Кибер). Довольно любопытно снято самое начало. Сам фильм не впечатлил - лучше и не смотреть. А вот спецэффекты в начале заслуживают описания.

В общем показывается крупным планом какой-то персональный компьютер стоящий на АЭС, на его экране стрелочные индикаторы скорости вращения турбин. Потом вид с камеры проникает внутрь компьютера, идет увеличение, материнская плата становится большой наподобие города, затем увеличивается процессор, его ядро, степень увеличения растет и вот уже видны проводники с транзисторами а по ним гоняют световые вспышки обозначающие потоки электронов. Затем идет уменьшение и камера передвигается по витой паре обозначая пакет данных. В итоге какой то исполнительный механизм получает команду и скорость одной из турбин уходит в красную зону и она идет вразнос. Ну и авария на АЭС соответственно, как можно подумать, из за какого нибудь неправильного условного перехода.

Чушь! Не смотри подобного рода фильмы! Дело в том, что любая промышленная автоматизированная система содержит три независимых контура безопасности:
1. На уровне программы, - эта часть обеспечивает собственно управление объектом и соблюдение необходимых режимов работы.
2. Контроль на уровне электроавтоматики, - эта часть работает независимо от программного обеспечения и предотвращает возникновение аварийных ситуаций при сбоях или неверной работе программного обеспечения.
3. Контроль на уровне силового оборудования, - эта часть также работает независимо от предыдущих двух и построена крайне примитивно, например, есть некий движущийся линейно механизм, для которого существуют с двух сторон определённые границы перемещения. Этот механизм работает под управлением программного обеспечения (выбор позиции, разгон, торможение и т.д.) На границах пределов его перемещения стоят концевые выключатели, включенные в цепь электродвигателей перемещения. И эти выключатели тупо обесточивают электродвигатели, одновременно вызывая срабатывание тормоза.

И такая структура по любому контуру управления! Так что для того, чтобы случилась авария, необходимо вывести из строя все три системы, и это при том, что последние две вообще не имеют никакого доступа со стороны программного обеспечения! А самая последняя - третья, при выводе её из строя просто остановит движение. И всё. К тому же, если дело касается систем, имеющих повышенную опасность (например атомные электростанции), то там на самом деле первый контур состоит из нескольких независимо работающих компьютеров, выполняющих одну и ту же программу, управляющие воздействия которых  затем сравниваются аппаратно, и формируются по схеме арбитража, и, одновременно, если хотя бы один из компьютеров выдал отличающееся от других значение управляющего воздействия, то это вызывает выдачу аварийного сигнала для привлечения внимания оператора. И это лишь некоторые из тонкостей, которые используются на объектах повышенной опасности.

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

Итак:
1. На каком типе микроконтроллера ты остановился?
2. Где блок-схема программы, хотя бы укрупнённая?

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

Оффлайн digitalman

  • DiG_Man
  • Full
  • ****
  • Сообщений: 1794
  • Репутация: +0/-0
  • DigitalMan[hi is not Cristopher Lambert]
    • http://vkontakte.ru/digital_man
    • Личное сообщение (Оффлайн)
Цитировать
Чушь! Не смотри подобного рода фильмы! Дело в том, что любая промышленная автоматизированная система содержит три независимых контура безопасности:
1. На уровне программы, - эта часть обеспечивает собственно управление объектом и соблюдение необходимых режимов работы.
2. Контроль на уровне электроавтоматики, - эта часть работает независимо от программного обеспечения и предотвращает возникновение аварийных ситуаций при сбоях или неверной работе программного обеспечения.
3. Контроль на уровне силового оборудования, - эта часть также работает независимо от предыдущих двух и построена крайне

Я позднее отвечу развернуто и блок-схему выложу, она почти готова. Но вижу ссылка на фильм, хе хе ) эмоционально задела. Так что хочу прокомментировать.

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

Есть кстати целая "теория катастроф" как раздел теории хаоса. Ну и опять же закон подлости Мерфи. (В "Юном Технике" в своё время было опубликовано множество этих законов.) Сложные надежные системы многократно тестируются и дублируются но обстоятельства время от времени складываются самым (или почти самым) худшим образом. Про аварии на АЭС и Авиакатастрофы лишний раз писать не буду, это маловероятные события но их вероятность нулю не равна.

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

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

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

Меня продолжают удивлять, например, современные версии windows которые после перезагрузок с синими экранами умудряются работать.

Ну не верю я в общем в 100% гарантию надежности разного рода оборудования.

И ещё один нюанс - сейчас создается концепция интернета вещей, и если у каждой умной вещи будет свой микропроцессор и айпи адрес, это же какая армия ботов в мире вырастет и какие же ddos-ы начнутся куда попало и когда попало! Хаоса в цифровом мире может даже и прибавится.
Глобальный Информационный Сервис: Вся информация принадлежит нам...
[DigitalMan/CapRiuS:A1/Цифровой Человек]
(htap://crs)

Оффлайн Новичёк

  • Administrator
  • Hero
  • *****
  • Сообщений: 15347
  • Репутация: +28/-108
    • Личное сообщение (Оффлайн)
Цитировать
Чушь! Не смотри подобного рода фильмы! Дело в том, что любая промышленная автоматизированная система содержит три независимых контура безопасности:
1. На уровне программы, - эта часть обеспечивает собственно управление объектом и соблюдение необходимых режимов работы.
2. Контроль на уровне электроавтоматики, - эта часть работает независимо от программного обеспечения и предотвращает возникновение аварийных ситуаций при сбоях или неверной работе программного обеспечения.
3. Контроль на уровне силового оборудования, - эта часть также работает независимо от предыдущих двух и построена крайне

Я позднее отвечу развернуто и блок-схему выложу, она почти готова. Но вижу ссылка на фильм, хе хе ) эмоционально задела. Так что хочу прокомментировать.

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

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

Есть кстати целая "теория катастроф" как раздел теории хаоса. Ну и опять же закон подлости Мерфи. (В "Юном Технике" в своё время было опубликовано множество этих законов.) Сложные надежные системы многократно тестируются и дублируются но обстоятельства время от времени складываются самым (или почти самым) худшим образом. Про аварии на АЭС и Авиакатастрофы лишний раз писать не буду, это маловероятные события но их вероятность нулю не равна.

Понимаешь в чём дело, говорить про статистику больших чисел по отношению к катастрофам и авариям, вообще говоря нельзя, поскольку аварии - это события достаточно редкие. Причём здесь нужно чётко отличать природные катастрофы или вызванные природными факторами, и техногенные катастрофы, т.е. те, которые произошли на объектах созданных человеком. Хотя конечно же граница между ними достаточно размыта, например, при строительстве атомной электростанции не предусмотрели должным образом сейсмическую активность местности её расположения. Поэтому оставим в стороне природные и вызванные природными факторами катастрофы, поскольку предусмотреть здесь всё однозначно невозможно, да и даже методов противодействия такому на данном этапе не существует! Например угроза падения крупного астероида. К тому же, всегда выступает экономический фактор - ведь предпринимаемые меры безопасности должны быть сравнимы по затратам с устранением последствий такой катастрофы. Иначе овчинка не стóит выделки.
Что касается техногенных катастроф, то как свидетельствует опыт, причиной их возникновения является не одна какая-то причина, а всегда несколько! Например, причиной Чернобыльской аварии стали нарушения персоналом одновременно нескольких пунктов регламента проведения испытаний.
Причиной аварии на Саяно-Шушенской ГЭС также явилось нарушение сразу нескольких пунктов регламента эксплуатации. Вот лишь некоторые из них:
1. Режим эксплуатации агрегата № 2 (на котором и произошла авария) часто попадал в не рекомендованную заводом-изготовителем зону.
2. На шести шпильках, крепящих крышку гидроагрегата (которая была сорвана, с чего и началась собственно авария), вообще отсутствовали гайки.
3. Эксплуатация агрегата при вибрации, превосходящей предельно-допустимые значения с конца июня (авария произошла 17 августа).
4. Использование агрегата, который должен быть выведен из эксплуатации (по причине повышенной вибрации) недопустимо при регулировании и перераспределении генерируемой мощности, однако агрегат № 2 был использован для этого.

Т.е. как я уже говорил, к авариям приводит не единственное нарушение, а всегда целый ряд нарушений!

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

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

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

А здесь ты откровенно не прав! Неукоснительное следование инструкциям, - залог безаварийной эксплуатации. Живой пример - Чернобыль.

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

Ты про какие компьютеры говоришь? Про персональные? Так ведь это, как говорил Ваня Воротов, - кухонное оборудование! Поэтому ожидать от него какой-то высокой надёжности не следует.

Меня продолжают удивлять, например, современные версии windows которые после перезагрузок с синими экранами умудряются работать.

А меня вообще удивляет, как компьютер, при исправном железе, вообще умудряется вылететь в синий экран смерти! Ведь это свидетельствует лишь об одном, - о низкой квалификации создателей программного обеспечения! Хотя для кухонного оборудования в этом ничего удивительного нет.  :) Я вспоминаю те времена, когда приходилось работать на машинах серии СМ (СМ-4, СМ-1600 и т.д.). Там была операционная система RSX-11M, RSX-11M-Plus, многопользовательская, многозадачная. Причём весьма высокой надёжности! Даже выключение питания в процессе записи на диски не приводило к катастрофическим последствиям, при восстановлении файлов с помощью соответствующей утилиты, единственное, что могло потеряться - это принадлежность файла определённому пользователю. Там в атрибуты файла входит, кроме всего прочего, и пользователь, который создал этот файл. Но данные файла безусловно сохраняются! Так что потеря принадлежности не такая уж большая трагедия. Тем более, что с точки зрения безопасности там тоже всё хорошо: файл восстанавливался с атрибутами привилегированного пользователя, т.е. обычный пользователь сразу после восстановления к таким файлам доступа не имеет. Лишь системный администратор имеет доступ к ним и в дальнейшем может изменить атрибуты для доступа обычного пользователя. Кроме того, там был ряд таких фич, как например, поддержка версионности файлов, которая изначально встроена в операционную систему, или поддержка на уровне системных запросов работы с реляционными базами данных и соответствующих файлов. Т.е. без применения каких-либо специальных программ ведения баз данных! Насколько я помню, именно для этой операционной системы были впервые разработаны средства графического программирования, т.е. ты на экране рисуешь форму с соответствующими полями, и указываешь связи с полями соответствующей базы данных. И всё это не зная вообще какого-либо языка программирования! В дальнейшем эта идеология получила развитие для PC в такой среде как Clarion, сначала для MS-DOS, а затем и для Windows.

Но это я похоже ударился в ностальгию... Вообще, я это к тому, что RSX-11 была создана в соответствии с классическими представлениями об устройстве и построении операционных систем, так, как это изложено в учебниках. А вот MS-DOS и в дальнейшем Windows, созданы как бог на душу положит, по сути дела вопреки этой классике. Отсюда и низкая надёжность, и постоянные глюки и огромное количество обновлений, касающихся как системы безопасности, так и вообще функций системы.

Ну не верю я в общем в 100% гарантию надежности разного рода оборудования.

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

И ещё один нюанс - сейчас создается концепция интернета вещей, и если у каждой умной вещи будет свой микропроцессор и айпи адрес, это же какая армия ботов в мире вырастет и какие же ddos-ы начнутся куда попало и когда попало! Хаоса в цифровом мире может даже и прибавится.

Это да. Уже известны случаи DDoS-атак, в которых принимали участие холодильники и кофеварки!

Оффлайн digitalman

  • DiG_Man
  • Full
  • ****
  • Сообщений: 1794
  • Репутация: +0/-0
  • DigitalMan[hi is not Cristopher Lambert]
    • http://vkontakte.ru/digital_man
    • Личное сообщение (Оффлайн)
Нашел я приблизительную схему работы микроконтроллера PIC16F873A

Продолжаю разбираться.
Потом ещё найду систему команд.
Глобальный Информационный Сервис: Вся информация принадлежит нам...
[DigitalMan/CapRiuS:A1/Цифровой Человек]
(htap://crs)

Оффлайн Новичёк

  • Administrator
  • Hero
  • *****
  • Сообщений: 15347
  • Репутация: +28/-108
    • Личное сообщение (Оффлайн)
Нашел я приблизительную схему работы микроконтроллера PIC16F873A

 :o Во-первых, что значит "нашел"? Зачем её нужно было "искать", если я ещё 14 февраля, вот в этом посту дал ссылку на даташит этого микроконтроллера! И эта блок-схема микроконтроллера приведена там на странице 6. И что значит "приблизительная"? В фирменных документах всё точно! Хотя, конечно же, и там бывают ошибки. Их затем приводят в Errata.

Продолжаю разбираться.
Потом ещё найду систему команд.

Во-вторых, и зачем её искать, когда система команд микроконтроллера приведена в той же ссылке, что я дал, начиная со страницы 159 и до страницы 165 включительно?

Ну, и в-третьих, и это самое главное: зачем тебе на текущем этапе устройство микроконтроллера PIC16873A и его система команд? Ведь для начала от тебя требуется блок-схема программы! Где она? Тем более, как ты писал ещё 21 марта она у тебя ещё тогда была почти готова. Ведь процессор - дело второе, сначала блок-схема! И лишь затем следует определиться с типом микроконтроллера с учётом простоты его использования, доставабельности, цены, наличии бесплатных средств разработки и программирования (записи кода в микроконтроллер) и т.д.

Ну почему же ты опять занимаешься совершенно не тем? Ведь если ты и дальше такими темпами будешь вести разработку, даже мой достаточно пессимистичный прогноз и тот будет ошибочным!
« Последнее редактирование: Апреля 02, 2017, 11:57:05 от Новичёк »

Оффлайн digitalman

  • DiG_Man
  • Full
  • ****
  • Сообщений: 1794
  • Репутация: +0/-0
  • DigitalMan[hi is not Cristopher Lambert]
    • http://vkontakte.ru/digital_man
    • Личное сообщение (Оффлайн)
Ну не люблю я и не умею блок схемы разрабатывать. Мне проще код в Дельфях писать или на том же ассемблере мнемониками. В общем мне конечно стыдно за свою блок-схему и за задержку. (Дидлайны постоянно горят в web-студиях и организациях программистов). Я её может быть ещё напильником подпилю, но мне проще кодить текстом чем этими прямоугольникаи. :(
Глобальный Информационный Сервис: Вся информация принадлежит нам...
[DigitalMan/CapRiuS:A1/Цифровой Человек]
(htap://crs)

Оффлайн Новичёк

  • Administrator
  • Hero
  • *****
  • Сообщений: 15347
  • Репутация: +28/-108
    • Личное сообщение (Оффлайн)
Ну не люблю я и не умею блок схемы разрабатывать. Мне проще код в Дельфях писать или на том же ассемблере мнемониками. В общем мне конечно стыдно за свою блок-схему и за задержку.

Да-а-а... Ужас какой. Кодить по ТАКОЙ блок-схеме точно нельзя! И что самое интересное, вот здесь тебе был приведён словесный алгоритм сканирования клавиатуры, а вот здесь - как из полученного микроконтроллером скан-кода получить стандартный скан-код. Также я тебе сказал, что для полного завершения нужно ещё две процедуры:
1. Передача стандартного скан-кода в PS2.
2. Задержка для защиты от дребезга клавиш.

Правда ещё нужна процедура инициализации, которая осуществляет настройку должным образом портов микроконтроллера. Но в целом, это элементарные процедуры! И где же всё это у тебя? Допустим, процедура инициализации включена у тебя в процедуру Reset. Ну, а где условие, по которому ты сначала изменяешь состояние KeyBoardMode, а затем используешь его значение? Где и как ты различаешь нажатие и отжатие клавиш? Ведь при нажатии на клавишу скан-код передаётся дважды - один раз именно при нажатии, а второй раз - при отпускании клавиши! Где у тебя проверка, что клавиша при очередном цикле сканирования не изменила своего состояния и никакого скан-кода передавать не нужно? Кстати, хотелось бы знать, как ты будешь что-то делать при выключении питания? Ведь именно это у тебя изображено на блок-схеме. И вообще интересно, как это ты какой-либо код будешь писáть, если ты даже не представляешь, как должна работать программа? Ведь именно об этом свидетельствует приведённая тобой блок-схема.Так что извини за прямоту, но программистом, а тем более старым, тебя назвать ну никак нельзя!

(Дидлайны постоянно горят в web-студиях и организациях программистов).

 :o Не понял, какие-такие web-студии? Или организации программистов? Будь любезен, дай ссылочку, где ты реально что-то делаешь непременно связанное с программированием! Ведь общаться на якобы программистских форумах может и 15-ти летняя школота. Хотя надо отдать должное, среди них тоже умницы бывают. Был у меня случай, когда работая в политехе, ко мне пришёл на экскурсию племянник с другом, а учились они в сельскохозяйственном техникуме. Ну я и повёл их в машинный зал, показать вычислительную машину производства армянских умельцев, "Наири 3-1":


(там ещё магнитофоны были, здесь на картинке их нет)

Показал, рассказал, ну, и начал рассказывать основы программирования на примере простенькой программы. И тут меня друг племянника начинает поправлять, причём вполне правильно и справедливо! И это при том, что они этих ЭВМ в глаза ранее не видели.

Так что повторюсь - программирование на самом деле очень простая штука. Самое сложное - это обработка ошибок и интерфейс с оператором.

Я её может быть ещё напильником подпилю, но мне проще кодить текстом чем этими прямоугольникаи. :(

А что там "пилить"? Ведь на самом деле блок-схемы как не было, так и нет! Ведь для того, чтобы там хоть что-то "пилить", там должен быть прежде всего алгоритм, который и изображается в виде блок-схемы. И алгоритм - это то, чему учат программистов в первую очередь! К сожалению, никакого связного алгоритма у тебя нет... Хотя я в принципе не возражаю, если ты приведёшь сразу код для микроконтроллера на каком-либо языке программирования. Точно есть ассемблер и Си, насколько я знаю, есть Паскаль и Бэйсик. Даже можешь использовать систему реального времени SALVO RTOS, хотя для задачи клавиатуры она весьма избыточна. Но её преимущество в том, что она генерирует код для весьма широкого круга микроконтроллеров: Atmel AVR и MegaAVR, семейство 8051 и его аналоги, Microchip PIC12, 16, 17, 18, Motorola M68, MSP430, V8-μRISC и т.д. Или можешь использовать язык Дракон, он изначально построен так, чтобы программировать, создавая программу из кирпичиков блок-схем - иконок. Тут вообще языка можно не знать, но вот логикой владеть следует обязательно!

P.S. Повторюсь: меня удивляет то, что ты пока что не задал ни одного конкретного вопроса, зато постоянно пытаешься заняться совершенно ненужными делами. И полностью игнорируешь мои попытки ненавязчиво наставить тебя на путь истинный! Поэтому у меня возникают сомнения в продуктивности всей этой деятельности и необходимости продолжения диалога...

Оффлайн digitalman

  • DiG_Man
  • Full
  • ****
  • Сообщений: 1794
  • Репутация: +0/-0
  • DigitalMan[hi is not Cristopher Lambert]
    • http://vkontakte.ru/digital_man
    • Личное сообщение (Оффлайн)
Я прочитал последний пост. Хорошо. Ок. Задаю пять вопросов.

1. Как проще всего прошить микроконтроллер, PIC16F87XA?
2. Можно ли найти его эмулятор в интернете для операционной системы Windows возможностью отладки?
3. Может быть плюнуть на этот микроконтроллер а использовать Z80 от Спектрума который, по крайней мере, у меня имеется в наличии?
4. Как протравить дорожки и где достать хлорное железо?
5. Каким путём вообще химически на дому можно получить хлорное железо?

Ну и на всякий случай 6 вопрос: Можно ли использовать в качестве сверла для текстолита швейную иглу (машины Zinger ну или типа того)  большого диаметра, у которой отламывается кончик плоскогубцами? :)))
« Последнее редактирование: Января 30, 2019, 00:27:05 от digitalman »
Глобальный Информационный Сервис: Вся информация принадлежит нам...
[DigitalMan/CapRiuS:A1/Цифровой Человек]
(htap://crs)

Оффлайн john

  • Administrator
  • Hero
  • *****
  • Сообщений: 11751
  • Репутация: +26/-16
    • http://r9al.ru
    • E-mail
    • Личное сообщение (Оффлайн)
1. Как проще всего прошить микроконтроллер, PIC16F87XA?
Программаторов - полно, другое дело, что если ты до этого ни разу не прошивал пики, то есть смысл начать с чего-нибудь более простого.

Цитировать
2. Можно ли найти его эмулятор в интернете для операционной системы Windows возможностью отладки?
MPLAB посмотри. Правда на его изучение время тоже нужно...

Цитировать
3. Может быть плюнуть на этот микроконтроллер а использовать Z80 от Спектрума который, по крайней мере, у меня имеется в наличии?

Забудь о Z80. Навсегда. Поясню, Z80 - это голый проц, в том смысле, что к нему, например, нужно будет отдельно подключать память.

Цитировать
4. Как протравить дорожки и где достать хлорное железо?

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

Цитировать
5. Каким путём вообще химически на дому можно получить хлорное железо?

Если относительно безопасно, то можно так: Трехвалентный оксид железа (Fe2O3) заливаем соляной кислотой (HCl), в качестве катализатора - ацетон, в итоге после того, как реакция закончится, если повезет, получим хлорид трехвалентного железа: 2Fe2O3 + 6HCl -> 2FeCl3 +3H2O - коэффициенты написал, чтобы были понятны пропорции. Гораздо сложнее получить оксид железа (железный сурик, Fe2O3), если конечно есть возможность, то можно обезвоживанием метагидроксида железа прокаливанием, если нет - можно попробовать найти гематит или лимонит, крайний вариант - найти старые водопроводные трубы и наковырять с них ржавчины, нужна та, которая кусками отслаивается, может повезет. Но лучший и 100% метод получения хлорного железа - приобрести его в виде порошка в магазине химреактивов и разбавить дома обычной водопроводной водой до получения насыщенного раствора

Цитировать
Ну и на всякий случай 6 вопрос: Можно ли использовать в качестве сверла для текстолита швейную иглу (машины Zinger ну или типа того)  большого диаметра, у которой отламывается кончик плоскогубцами? :)))

Володя, сверло диаметром 0,6 - 0,8 мм стоит в магазине рублей 15-20, не изобретай велосипед.

Оффлайн Новичёк

  • Administrator
  • Hero
  • *****
  • Сообщений: 15347
  • Репутация: +28/-108
    • Личное сообщение (Оффлайн)
Хотя Женя тебе уже ответил, однако я тоже постараюсь это сделать.

Я прочитал последний пост. Хорошо. Ок. Задаю пять вопросов.

1. Как проще всего прошить микроконтроллер, PIC16F87XA?

Лучше всего, конечно же, использовать стандартные, покупные изделия, например что-нибудь из ICD, которые хороши тем, что позволяют не только запрограммировать микроконтроллер, но и выполнить внутрисхемную отладку программы, т.е. выполнять программу пошагово, просмотреть и изменить регистры микроконтроллера, установить точки останова, начать выполнение программы с любого заданного места и т.д. REAL ICE - в плане отладки ещё лучше, но и намного дороже. Ну, и самое просто из покупных - PICkit, но он позволяет только программирование.
Если же хочется сэкономить, то программатор можно сделать самому. Я в своё время сделал программатор ProPic2 и успешно им пользовался. Почитать о нём можно здесь и здесь. И вообще программаторов в инете, как сказал Женя - море! Несколько лет назад я приобрёл ICD-3 и пользуюсь им для отладки и программирования микроконтроллеров.

2. Можно ли найти его эмулятор в интернете для операционной системы Windows возможностью отладки?

Так ведь я писал тебе об это ещё в начале февраля здесь:
Цитировать
Только нужно иметь ввиду, что для использования любого микроконтроллера нужно иметь:
1. Средства разработки.
2. Средства программирования (записи программы в микроконтроллер).
3. Средства отладки.

В принципе, всё это может быть совмещено в одной среде (например, MPLAB для PIC-контроллеров)

MPLAB - это интегрированная среда для разработки программ и их отладки на PIC-контроллерах. Есть поддержка языка Си, есть возможность отладки программ с помощью симулятора, т.е. не имея готового изделия с PIC-контроллером. И вообще, я же тебе вот здесь приводил ссылки на то, как программировать для PIC и введение в среду MPLAB!

3. Может быть плюнуть на этот микроконтроллер а использовать Z80 от Спектрума который, по крайней мере, у меня имеется в наличии?

Как уже писáл Женя, - выбрось и забудь! Дело в том, что для этого микроконтроллера нужна довольно приличная обвязка, в том числе память, как оперативная, так и постоянная. Я уже молчу про необходимость всяческих буферов. Т.е. схема на нём у тебя станет на порядки сложнее! Ведь вся прелесть PIC, AVR и других аналогичных микроконтроллеров в том, что там всё это содержится на кристалле. Поэтому практически никакой обвязки не нужно. Более того, в некоторых микроконтроллерах и кварцевый резонатор не требуется, поскольку тактовый генератор также имеется на кристалле.

4. Как протравить дорожки и где достать хлорное железо?

Для того, чтобы было что травить, нужно сначала выполнить разводку печатной платы и распечатать фотошаблон. В любительских условиях существует несколько способов создания печатных плат: на фоторезисте плёночном или жидком, или с помощью так называемой лазерно-утюжной технологии (ЛУТ). Фоторезист обеспечивает высокое качество получаемых печатных плат, однако технология сложна, критична к точному соблюдению всех условий и довольно дорога. В отличие от неё ЛУТ достаточно дёшева и проста, но тоже имеет определённые тонкости, да и качество плат похуже. В частности, довольно критично на какой бумаге производится печать фотошаблона. Я использую защитный слой от самоклеящихся обоев. Приклеиваю кусочек необходимого размера по углам на лист обычной бумаги формата А4 с помощью клеящего карандаша, а затем распечатываю на этот бутерброд фотошаблон. Затем приклеенный кусочек аккуратно отрываю и использую для изготовления печатной платы. Если необходимо изготовить двухстороннюю печатную плату, то обе стороны распечатываются на одном листе, рядом. Затем разрезаются, совмещаются на просвет и по краям закрепляются степлером. Заготовка печатной платы помещается между ними, а затем всё как обычно, только с двух сторон. Т.е. смысл технологии в том, что тонер с бумаги (подложки от обоев) переносится на заготовку печатной платы, а бумага затем удаляется. И на заготовке остаются проводники из тонера, который и не пропускает к заготовке травильный раствор. На принтере нужно выставить максимальную плотность тонера и подобрать (экспериментально) режим печати, который обеспечивает наилучшее качество получаемых плат. Я включаю режим печати на картоне (принтер HP1020).

5. Каким путём вообще химически на дому можно получить хлорное железо?

Господи, да зачем дурью-то маяться? Насколько я понял по твоему IP, ты живёшь Екатеринбурге. А там должна быть целая куча магазинов, торгующих радиодеталями, в том числе и хлорным железом. Кстати, травить можно не только им. У нас в Омске хлорное железо купить элементарно, например в магазине ДАН: хлорное железо, или более безопасно аммония персульфат.

Ну и на всякий случай 6 вопрос: Можно ли использовать в качестве сверла для текстолита швейную иглу (машины Zinger ну или типа того)  большого диаметра, у которой отламывается кончик плоскогубцами? :)))

 :o Зачем? Опять же, как писáл Женя, не проще ли купить сверло нужного размера: Сверло диаметром 0,8 мм. Или, что гораздо дешевле купить на Aliexpress. Там за ту же цену ты приобретёшь не одно, целых 10 свёрел! Вот только сроки доставки - до двух месяцев. Мне они шли 39 дней.

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

Оффлайн Новичёк

  • Administrator
  • Hero
  • *****
  • Сообщений: 15347
  • Репутация: +28/-108
    • Личное сообщение (Оффлайн)
Кстати, вот например где в Екатеринбурге можно купить хлорное железо: 42unita. У них есть и интернет-магазин, так что если ты живёшь рядом с Екатеринбургом, то можешь заказать доставку.

В Екатеринбурге также есть Салон-магазин "Радиодетали"[/url], представитель Промэлектроники. Там есть и хлорное железо и свёрла.
« Последнее редактирование: Января 30, 2019, 00:30:38 от digitalman »

Оффлайн john

  • Administrator
  • Hero
  • *****
  • Сообщений: 11751
  • Репутация: +26/-16
    • http://r9al.ru
    • E-mail
    • Личное сообщение (Оффлайн)
В Екатеринбурге также есть Салон-магазин "Радиодетали", представитель Промэлектроники.

Кстати, да. Именно там я тарился в нулевых, по сравнению с Челябинском - там было всё. В то время в Челябинске было полтора радиомагазина, еще пара тех, кто называл себя магазином радиодеталей и еще радиобарахолка, где можно было найти какое угодно ... старье, в основном ворованное с радиозавода.

Оффлайн digitalman

  • DiG_Man
  • Full
  • ****
  • Сообщений: 1794
  • Репутация: +0/-0
  • DigitalMan[hi is not Cristopher Lambert]
    • http://vkontakte.ru/digital_man
    • Личное сообщение (Оффлайн)
Цитировать
Кстати, да. Именно там я тарился в нулевых, по сравнению с Челябинском - там было всё. В то время в Челябинске было полтора радиомагазина, еще пара тех, кто называл себя магазином радиодеталей и еще радиобарахолка, где можно было найти какое угодно ... старье, в основном ворованное с радиозавода.

Ну так я частенько по пути туда захожу. Только меня там мягко сказать "не любят". Поэтому я туда хожу как в музей. Магазин разросся - там всё что угодно можно найти. Он находится недалеко от УРГУпса.

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

Им видимо уже надоело по всем этим картотекам и ящичкам лазить. :(

Хоть бы штат набрали более квалифицированных сотрудников. :(
Глобальный Информационный Сервис: Вся информация принадлежит нам...
[DigitalMan/CapRiuS:A1/Цифровой Человек]
(htap://crs)

 

Последние сообщения на форуме: