Элементная база для проектов

Дмитрий Шаповалов (Velocity)

Хвост в самолете лишняя деталь!
Откуда
Москва
Ну нету там компилеров для контроллеров Microchip.

Forth is a stack-based, extensible language without type-checking. It is probably best known for its "reverse Polish" (postfix) arithmetic notation, familiar to users of Hewlett-Packard calculators. Forth is a real-time programming language originally developed to control telescopes. Forth has many unique features and applications:

Я конечно понимаю, что на заре компьютерной цивилизации можно было придумать свой язык для управления телескопами, только каким боком это к нам относится? Да, Боинг что-то наваял для своей авионики на Форте и НАСА юзет, но ну нас по определению бюджет скромнее этих организаций и у меня нет знакомых умеющих писать на этом чуде природы. Разрабатывать приложения п моему гораздо проще используя компиляторы производителей контроллеров или написанных специально под эти девайсы софтинах сторонних разработчков.

Скорее не пытаться повторить ранее сделанное.
А кто говорит о повторении? Я ничего не повторяю. Получается уникальный дизайн конструкции и функцональность у приборов другая. Повторять совсем не интересно.

В предыдущем посте я мысль не дописал. Сначала нужно найти здачу, в которой нужна будет настоящая парралельность. А если уж придумаете, то можно поставить 5 чипов по 3 $ за ведро, и получите настоящую параллельность и перекрестный контроль работоспособности системы. Зачем городить "огород" ?
Если Вам в программе нужно "параллельно" работать с клавой/дисплеем/внешними устройствами/что-то считать и т.д. и т.п. то это делается нехитрыми методами, известными со времен первых процессоров  ;) и это не есть парралельность и мультизадачность. В подавляющем большинстве случаев мы имеем дело всё равно с последовательным выполнеием кода (у нас одна решалка) и только в многокамневых системах возникают паралельные процессы, динамическое распределение задач и куча всяких проблем связанных с этим делом. Не нужно усложнять задачу если этого там нет. Ну не для Боинга софт в конце концов  ;D

Я решаю задачи по мере их поступления. Если нет темы для решения на суперкмпютере, не надо ставить суперкомпютер.

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

Forth is a stack-based, extensible language without type-checking. It is probably best known for its "reverse Polish" (postfix) arithmetic notation, familiar to users of Hewlett-Packard calculators. Forth is a real-time programming language originally developed to control telescopes. Forth has many unique features and applications:

Я конечно понимаю, что на заре компьютерной цивилизации можно было придумать свой язык для управления телескопами, только каким боком это к нам относится? Да, Боинг что-то наваял для своей авионики на Форте и НАСА юзет, но ну нас по определению бюджет скромнее этих организаций и у меня нет знакомых умеющих писать на этом чуде природы. Разрабатывать приложения п моему гораздо проще используя компиляторы производителей контроллеров или написанных специально под эти девайсы софтинах сторонних разработчков.

Скорее не пытаться повторить ранее сделанное.
А кто говорит о повторении? Я ничего не повторяю. Получается уникальный дизайн конструкции и функцональность у приборов другая. Повторять совсем не интересно.

В предыдущем посте я мысль не дописал. Сначала нужно найти здачу, в которой нужна будет настоящая парралельность. А если уж придумаете, то можно поставить 5 чипов по 3 $ за ведро, и получите настоящую параллельность и перекрестный контроль работоспособности системы. Зачем городить "огород" ?
Если Вам в программе нужно "параллельно" работать с клавой/дисплеем/внешними устройствами/что-то считать и т.д. и т.п. то это делается нехитрыми методами, известными со времен первых процессоров  ;) и это не есть парралельность и мультизадачность. В подавляющем большинстве случаев мы имеем дело всё равно с последовательным выполнеием кода (у нас одна решалка) и только в многокамневых системах возникают паралельные процессы, динамическое распределение задач и куча всяких проблем связанных с этим делом. Не нужно усложнять задачу если этого там нет. Ну не для Боинга софт в конце концов  ;D

Я решаю задачи по мере их поступления. Если нет темы для решения на суперкмпютере, не надо ставить суперкомпютер.

В нашем случае с огромным количеством устройств может справиться однокристаллка с 8 битным процом и несколькими килобайтами памяти (у меня по памяти на мелких устройствах обычно 2кБ хватает и редко доходит до 4кБ. В приемнике столько функций уже понакрутили, что сам уже в описание смотрю, что он умеет и как этим пользоваться). В описанном в первом посте девайсе ресурсов очень много, осталось только освоить это добро.
http://www.gnupic.org/

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

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

/me
 

Дмитрий Шаповалов (Velocity)

Хвост в самолете лишняя деталь!
Откуда
Москва
Как я понял, Вы являетесь сторонником "размазывания" функций ядра по тексту программы. Это тоже подход, который себя может достаточно долго оправдывать.

За одним небольшим исключением: если у Вас планируется линейка различных по функциональности приборов, но близких по схемотенике и алгоритмам обработки сигналов, в будущем могут встретиться трудности с внесением изменений в программы.
Не совсем так. Схемотехника похожа, но всегда есть масса уникальных устройств. Сейчас имеется в наличии готовое схемное и программное решение на контроллерах PIC16F876A поддерживающее стандартные кнопки (система подавления дребезга контактов и функции длительного нажатия клавиши),  энкодер, стандартный дисплей (драйвер + механизм вывода на дисплей экранов и обеспечения их переключения), алгоритм ргулировки яркости подсветки, механизм прерываний по таймеру. Всё остальное в каждом приборе уникально и схемы везде разные. В заготовку (можно назвать её маленький BIOS) интегрируются необхдимые драйвера периферии (внешних устройств) и обработки встроенных ресурсов (АЦП, I2C, ШИМ и т.д.). Код для каждого конкретного устройства уникальный ещё на этапе определения параметров контроллера. В одном случае порты ("ноги") контроллера работают на выход, в другом на вход, в третьем их назначение вход/выход меняеся оперативно программой (в случае если по одной ноге организован двунаправленный интерфейс обмена данными). Для примера DS18B20 (датчик температуры) использует только один бит для двухстороннего обмена данными и энергопитания датчика. КАЖДОЕ УСТРОЙСТВО ЯВЛЯЕТСЯ УНИКАЛЬНЫМ КОМПЬЮТЕРОМ С УНИКАЛЬНОЙ ПЕРИФЕРИЕЙ! Кроме того код драйверов оптимизируется под конкретную задачу, например в часах не нужно читать и писать день, месяц и год, если нет их отображения и эти куски кода ВЫБРАСЫВАЮТСЯ В УРНУ. Вылизывание софта делается до команды! При таком подходе получается очень компактный и быстрый код. Большое количество свободного софта в исходниках лежит в инете и драйвера для многих устройств можно найти быстро и без проблем, но очень часто быстрее написать самому т.к. даташит на периферийный чип всё равно необходимо читать от корки до корки ;).

Из интересного на мой взгляд сравнения результатов применения языка Си и ассемблера PIC16 характерен вот такй пример -

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

необходимо:
получить код цифрового символа знака после запятой для отображения на LCD дисплее с округлением согласно математических правил.

решение на асме занимает 17 команд из которых выполняется всего 3 - вызов подпрограммы, переход на необходимое количество шагов (согласно регистру W), возврат из программы с W содржащим искомый код символа для дисплея  :cool::

обращение - call tabPOINT ; рабочий регистр "W" содержит полубайт дробной части температуры

tabPOINT                                            ;преобразование дробной части температуры в символ для LCD
           addwf      PCL,f  ;переход на кол-во шагов соответствующих индицируемой цифре
           retlw      '0'
           retlw      '1'
           retlw      '1'
           retlw      '2'
           retlw      '3'
           retlw      '3'
           retlw      '4'
           retlw      '4'
           retlw      '5'
           retlw      '6'
           retlw      '6'
           retlw      '7'
           retlw      '8'
           retlw      '8'
           retlw      '9'
           retlw      '9'

как это будет выглядеть на Си Вы можете себе представить  ;D. Си кстати тоже 8 битный и целочисленный  ;).


==========================================
Вы про ядро забудьте и посмотрите на первую картинку, показывающую функциональнсть "ног" контроллера. Нога может быть чем угодно! Прописанный софт определяет её назначение и обработку, конкретный тип контроллера определяет его функцональные возможности и базой является только общий набор команд и стандартизованные устройства. в некоторых случаях даже работа с внутренними устройствами отличается по протоколу. Работа с внутренним EEPROM и не только, разная, в зависимости от конкретной м/с! При пользовании нужно читать конкретный даташит на это устройство, хотя всё и очень похоже, но отличия бывают. Си этого не знает т.к. это пишется всё ручками.
 
входные данные:
полубайт (4 бита), содержащий дробную часть градусов температуры, полученную с датчика DS18B20 с ценой деления младшего бита 0.0625 С.

необходимо:
получить код цифрового символа знака после запятой для отображения на LCD дисплее с округлением согласно математических правил.

решение на асме занимает 17 команд из которых выполняется всего 3 - вызов подпрограммы, переход на необходимое количество шагов (согласно регистру W), возврат из программы с W содржащим искомый код символа для дисплея  :cool::

обращение - call tabPOINT ; рабочий регистр "W" содержит полубайт дробной части температуры

tabPOINT                                            ;преобразование дробной части температуры в символ для LCD
           addwf      PCL,f  ;переход на кол-во шагов соответствующих индицируемой цифре
           retlw      '0'
           retlw      '1'
           retlw      '1'
           retlw      '2'
           retlw      '3'
           retlw      '3'
           retlw      '4'
           retlw      '4'
           retlw      '5'
           retlw      '6'
           retlw      '6'
           retlw      '7'
           retlw      '8'
           retlw      '8'
           retlw      '9'
           retlw      '9'

как это будет выглядеть на Си Вы можете себе представить  ;D. Си кстати тоже 8 битный и целочисленный  ;).
Алгоритмические трюки для программистов.

Остальные Ваши мысли - это из темы "кто как хочет мучить регистры".  



/me
 

Leon CX

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

самое главное, что каждый ПРАВ - вот она истинная демократия и свобода нравов  ;D

господа, не ссортесь по пустякам....Си так Си, форт так форт - лиш бы не глючило !
 

Дмитрий Шаповалов (Velocity)

Хвост в самолете лишняя деталь!
Откуда
Москва
Алгоритмические трюки для программистов.
То, что Вы называете "трюками" есть возможности языка программирования  :cool:, показанные  :IMHO наглядно на примере куска софта, писанного мной на прошлой неделе для часиков с термометрами. Если Вы будете решать это в классическом языке высокого уровня обычным способом, не заморачивая голову, то возьмете дробную часть, выделите десятые и отдельно сотые, проведете математическое округление и через таблицу перекодировки получите символ для отображения на экране. Думаю Вы можете представить сколько кода получится  и насколько медленнее он будет выполняться ;D. Есть другой вариант - сделать асмовскую вставку в Сишную программу. Через некоторое время этих вставок будет больше, потом ещё больше, ну а потом, освоив асм Вы выбросите свой компилятор Си  ;D. Я так и сделал пару лет назад  ;).


Остальные Ваши мысли - это из темы "кто как хочет мучить регистры".
Я пытаюсь Вам объяснить одну простую вещь. Каждый проект уникален и каждый раз из стандартного контроллера програмно строится необходимое устройство. Всё время это разные конструкции и нет такого понятия как "ядро" или "операционная система". Базовая система ввода вывода (BIOS) каждый раз конфигурится по разному, даже если она есть, и построена для группы устройств. Мы каждый раз разрабатываем новую уникальную плату т.к. устройства, которыми обвязан контроллер разные. Это не ПК с виндами и возможности выкачивания драйверов внешних устройств с инета на лету отсутствуют ;). Полученные устройства являются девайсами с фиксированной периферией и оговоренными фиксированными источниками внешних сигналов. Дальше только штамповка. Новые версии могут выходить только если в первых обнаружены глюки или некоторые функции в первых моделях ещё не были разработаны в ПО.


чувствуется борьба гигантов....

самое главное, что каждый ПРАВ - вот она истинная демократия и свобода нравов  

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

У меня есть предложение к Commodore. Скачайте доки по PIC16F84A, купите этот контроллер и с помощью самодельного программатора попытайтесь сделать хоть ёлочную гирлянду. Когда это у Вас получится, возьмите более сложную задачку с гирляндой - изменение яркости с помощью ШИМ. Так Вы потихоньку освоите самый распостраненный контроллер, на котором сделано тысячи разных проектов. По немногу Ваше мнение изменится  ;). С ростом Ваших знаний у Вас будут появляться проекты всё более навороченные и Вы будете переходить на новые уровни сложности.

Это не подколка. У меня дома в потолке в детской комнате сделано звездное небо из 2-х контроллеров PIC16F84A, которые управляют шестью трехцветными светодиодами, которые в свою очередь светят в торцы световодов, собранные в пучки. Другие концы световодов пронизывают гипсокартонный потолок и формируют созвездие медведицы и звезды вокруг него. Управление цветом и яркостью позволило создать эффект звездного неба, очень похожий на настоящий взамен большой механической коробки с лампочкой и вращающегося светофильтра, который обычно используется в подобных конструкциях. Работает уже скоро пятилетку, я его не выключаю вообще никогда  :p.
 
чувствуется борьба гигантов....

самое главное, что каждый ПРАВ - вот она истинная демократия и свобода нравов  

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

У меня есть предложение к Commodore. Скачайте доки по PIC16F84A, купите этот контроллер и с помощью самодельного программатора попытайтесь сделать хоть ёлочную гирлянду. Когда это у Вас получится, возьмите более сложную задачку с гирляндой - изменение яркости с помощью ШИМ. Так Вы потихоньку освоите самый распостраненный контроллер, на котором сделано тысячи разных проектов. По немногу Ваше мнение изменится  ;). С ростом Ваших знаний у Вас будут появляться проекты всё более навороченные и Вы будете переходить на новые уровни сложности.

Это не подколка. У меня дома в потолке в детской комнате сделано звездное небо из 2-х контроллеров PIC16F84A, которые управляют шестью трехцветными светодиодами, которые в свою очередь светят в торцы световодов, собранные в пучки. Другие концы световодов пронизывают гипсокартонный потолок и формируют созвездие медведицы и звезды вокруг него. Управление цветом и яркостью позволило создать эффект звездного неба, очень похожий на настоящий взамен большой механической коробки с лампочкой и вращающегося светофильтра, который обычно используется в подобных конструкциях. Работает уже скоро пятилетку, я его не выключаю вообще никогда  :p.
Я в своё время крепко помучился с софтом термоанемометров с процессорами 8080 (16-канальный прибор) и 8048 (одноканальный) и АЦП 1113ПВ1. Приходилось реализовывать и плавающую точку, и логарифм методом "цифра за цифрой", и динамическую индикацию. Когда прибор "облизали", оказалось проще иметь дело с нормированными числами и всего тремя операциями: A+B, A-B и A*B/C.  ::) Поэтому этап писания уникальных программ  я уже прошёл.

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

Если дойдём до комплексирования приборов- обещаю битву титанов, т.к. многие моменты для меня также требуют прояснения.

/me
 

Дмитрий Шаповалов (Velocity)

Хвост в самолете лишняя деталь!
Откуда
Москва
Я в своё время крепко помучился с софтом термоанемометров с процессорами 8080 (16-канальный прибор) и 8048 (одноканальный) и АЦП 1113ПВ1. Приходилось реализовывать и плавающую точку, и логарифм методом "цифра за цифрой", и динамическую индикацию. Когда прибор "облизали", оказалось проще иметь дело с нормированными числами и всего тремя операциями: A+B, A-B и A*B/C.   Поэтому этап писания уникальных программ  я уже прошёл.

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

Если дойдём до комплексирования приборов- обещаю битву титанов, т.к. многие моменты для меня также требуют прояснения.
Вот про что я и говорю. Задачи в основном очень простые, я бы сказал тривиальные. Мелкие приборы, работающие с 1-3 устройствами/датчиками не требуют изначально монстроподобных софтин. Другое дело взять и спроектировать комп, обслуживающий всю авионику или весь комплекс прибров двигателя или и то и другое весте. Делается это опять же без наворотов, но придется исписать стопку бумаги предварительного тех.задания.

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

8080 - да, это железяка ещё та! Как давно это было  ::) http://www.xakep.ru/magazine/xs/074/084/1.asp
История ....

Из статьи -
Процессоры семейства PDP-11 и 68K обходятся значительно меньшим количеством команд, причем удобство их ассемблера было столь велико, что позволяло ему на равных конкурировать с Си и другими языками высокого уровня. Теперь, конечно, программистские веяния изменились, и ассемблер неожиданно выпал из их внимания, но недостатки системы команд x86 процессоров тут совершенно не причем (хотя, некоторые и не разделяют такой точки зрения).

Commodore  всё таки посмотри описание на PIC16F84A всё давно изменилось. Сейчас Ваш крепкие мучения не представляют никаких трудностей  ;).
 

nico

чем дальше в лес тем толще партизаны..
Откуда
Жуковский
..... всё давно изменилось...
Это совершенно верно. я этопонял уже лет 8  назад когда первый раз сел писать под DSP.  а однокристалки - то вообще великое достижение нашего времени. надо тебе вольты в цифру - читай регистр.. надо наоборот - запиши в регистр. надо тебе разовую команду выдать  - ставь бит..... кошмар какойто. "никакого сексу"..
:IMHO

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

Дмитрий Шаповалов (Velocity)

Хвост в самолете лишняя деталь!
Откуда
Москва
"никакого сексу"..
я бы сказал - никаких извращений  ;)

тут сам себе ядро и сам себе операционка.
это точно.
Сам до сих пор юзаю DSP от Texas Instruments TMS320 он хоть и интерсный был в те стародавние времена и наш компьютер на его базе управляет до сих пор большим количеством производственного оборудвания, но размеры этих плат  :eek:, но сколько вокруг него всего понакручено  :eek: сейчас весь наш комп заменит PIC30F5013 + расширитель портов вода/вывода из нескольких м/с и всё будет умещаться на задней стороне двухстрочного дисплея и цена на порядки дешевле получится :cool:

Читаю доки и облизываюсь  ::)

Сюрпризы бывают, но Microchip о них говорит и объясняет как их избежать.
 
http://www.designmsp430.com/samples/List.aspx

/me
???

http://www.piclist.com/techref/microchip/codeflow.htm
Это в смысле готовая печатка с распаянной на ней однокристаллкой TI MSP-430 по цене 10 баксов за три. В USB программатор и потом в готовое изделие  :p. Примеры конкурсных проектов. Уже есть даже GNUтый софт. Спрос на программатор бешеный - поставки несколько запаздывают.  :'(

/me
 

Дмитрий Шаповалов (Velocity)

Хвост в самолете лишняя деталь!
Откуда
Москва
Ну, нашли чем удивить  ;D
USB программатор сам пользую. Купил после того, как в новом компе не оказалось LPT и COM разъемов  :eek:.

Готовая печатка для чего? К ней же прикручивать всё равно придется то,что необходимо обслуживать. Каким боком она к нам? Куда её в самолете сунуть?
 
Ну, нашли чем удивить  ;D
USB программатор сам пользую. Купил после того, как в новом компене оказалось LPT и COM разъемов  :eek:.

Готовая печатка для чего? К ней же прикручивать всё равно придется то,что необходимо обслуживать. Какимбком она к нам? Куда её в самолете сунуть?
Ну сдемпинговали люди... девелопмент кит и всё радости жизни за 20 баксов.  :D Ужос!  :eek:

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

Tiny OS
FreeRTOS
RETOS

/me
 

nico

чем дальше в лес тем толще партизаны..
Откуда
Жуковский
http://www.chip-dip.ru/catalog/show/1824.aspx?page=1 тут этого добра предостаточно.
 

nico

чем дальше в лес тем толще партизаны..
Откуда
Жуковский
http://www.chip-dip.ru/catalog/show/1824.aspx?page=1 тут этого добра предостаточно.
Скока-скока это стоит?

/me
Александр, что конкретно скока стоит??? если вы про MSP430 USB Stick Development Tool то все правильно - два конца получается. мед нынче дорог. :cool:
я не понимаю Вашей иронии. ;D
 
http://www.chip-dip.ru/catalog/show/1824.aspx?page=1 тут этого добра предостаточно.
Скока-скока это стоит?

/me
Александр, что конкретно скока стоит??? если вы про MSP430 USB Stick Development Tool то все правильно - два конца получается. мед нынче дорог. :cool:
я не понимаю Вашей иронии. ;D
А я понимаю, что не по Хуану сомбреро. Из массового (не побоюсь сказать "народного") средства создания встраиваемых микросистем превратилась в дорогую игрушку.

/me
 

nico

чем дальше в лес тем толще партизаны..
Откуда
Жуковский
А я понимаю, что не по Хуану сомбреро. Из массового (не побоюсь сказать "народного") средства создания встраиваемых микросистем превратилась в дорогую игрушку.
тут , позволь несоглашусь., ну не хочешь -не покупай. собирай сам шнурок, пиши сам прошивалку,делай макетку и вперед. Если нет времени все это ваять покупай KIT.  никто не заставляет.  ;)
 
Вверх