[uanog] об индусах и программировании, или о том почему всё глючит...

Alexandr Baryshnyev abb at abbon.net
Fri Apr 13 13:03:22 EEST 2018


Привет,

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

Ну и по поводу ARM32 против MSP430 тоже хочется сказать вкратце. Да, 
очень эстетичный малопотребляющий камешек MSP430, только он производится 
единственной компанией в мире и ни с чем несовместим, ну кроме как с 
PDP-11 (ага, это было круто 35лет назад, СМ-4, Электроника-125, 
Электроника-60, ДВК, помним детство золотое). Не страшно все яйца в 
одну-то корзинку складывать? Ведь камешек не новый, а ну как перестанут 
выпускать? Или фирма-изготовитель например того, прекратит так сказать 
существование, поглотится/обакротится? И как там со средствами 
разработки/отладки?

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


13.04.2018 12:00, Alexander V Soroka пишет:
> Привет !
> 
> ну  вообще-то  ЛЮБОЕ  начинание  с  программированием  надо начинать с
> "профайлинга",  т.е. "а что мы хотим получить в итоге и как это должно
> рабоать", а уже потом под "это" подбирается железо-микроконтроллер.
> А  уже  потом  составляется  блок-схемы и общая философия "как ЭТО тут
> будет работать".   А уже потом - начинается кодинг :)
> 
> А  если  вот  так  как  индус - то это видно что он "слезал" с чего-то
> совсем   простого  типа  Атмела  или  PICа,  где  нет  такой  красивой
> архитектуры и поддержки в железе. Но ПОНЯТЬ новую философию не пытался
> - тупо решил вопрос так как уже решал на простом железе :-((
> 
> Я сознательно переползаю на MSP430 а не на "модные нынче" STM,
> именно  из-за  красивости  архитектуры при хорошей цене и возможностях
> "на вырост". И не понимаю "модных писателей кода" которые лезут на STM
> микроконтроллеры, при этом выбирают 8-и битные модели а пишут на С++ с
> разными  заковыками  -  когда  после  них видишь ассемблерный код - то
> рука-лицо  и  хочется  такого  писателя  убить,  чтобы не портил своим
> генофоном население Земли.
> 
> Обычно  народ  не парится: как начал на Атмега8 так потом просто более
> мощные  чипы подсовывает - не понимая что смена философии в мозгах это
> и смена философии в железе.
> 
> Но все равно грустно...
> 
> Friday, April 13, 2018, 10:04:12 AM, Vladimir Sharun vladimir.sharun at ukr.net you wrote:
> VS> Сильно депендс от отрасли. У нас был эксперимент и так и так.
> VS> Оказалось, что корректное програмирование
> VS> в среднесрочной уже перспективе - экономически выгоднее. Провели
> VS> эксперимент "давайте задавим железом",
> VS>  а когда под конец операции "задавим железом" посмотрели на
> VS> сколько было потрачено - тут же поменяли вектор
> VS> на давайте писать по концепции: написали "как есть", профайлинг, "как надо".
> VS> В людей инвестировать правильнее. В творческих - в квадрате правильнее.
> VS> PS: с первого раза правильно написать код весьма сложно, т.к. у
> VS> нас профайлера нет в голове, только общие
> VS> базисы "правильно это написать так".
> 
> 
> VS> 13 квітня 2018, 09:42:28, від "Volodymyr Litovka" <doka.ua at gmail.com>:
> VS> Саша, по нынешним временам писать код быстро экономически более выгодно,
> VS> чем писать хорошо. Не всегда, но во многих случаях.
> 
> VS> Ведь когда закончится чип 7х7мм, можно поставить второй такой, а не ещё
> VS> два стола :) А пока "красавцы" вылизывают свой код, "дятлы" уже продают
> VS> решение.
> 
> VS> On 4/13/18 9:29 AM, Alexander V Soroka wrote:
>>> Привет !
>>>
>>> Преамбула.
>>> Я занимаюсь программированием микроконтроллеров, вот уже лет 20 как.
>>> и давно присматривался к MSP430FRxxxx, от Техас Инструментс.
>>> По сути это PDP-11 в размере 7 на 7мм !
>>> то  что  у  меня в 1986 году занимало два стола - сейчас занимает один
>>> чип 7 на 7мм!!! Это волшебство :)
>>> Изучаю MSP430 - уже перерыл многое и понимать стал какая КРАСИВАЯ(!!!)
>>> архитектура построения! Техасцы просто гении :)
>>> Это песня просто для мультизадачных вещей !!!
>>>
>>> Пока рыл примеры - нарвался на индуса, он задавал вопрос на саппорт:
>>> https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/602194
>>>
>>> Суть  кратко:  индусу  надо  запустить  АЦП  так чтобы оно сделало три
>>> измерения  с  разных  каналов,  и  прервалось по факту когда АЦП будет
>>> записывать третье(с третьего канала) значение в память.
>>>
>>> АЦП  там  умное! ему можно сказать: "замеряй с канала номер Х до канала
>>> номер  У и записывай само в память, МИНУЯ ПРОЦЕССОР! "
>>> Причем  ! какие каналы после каких мерять - ЗАПИСЫВАЕМ(!) в
>>> регистры, т.е. нет тупого 1-2-3... а можно сделать любое: 2-1-5-8...
>>>
>>> А что сделал Индус?
>>> он  сделал  так  что  АЦП меряет по кругу три канала, но он вписал что
>>> после   каждого   записи  в  память(!)  готового  значения  АЦП  будет
>>> вызываться прерывание!
>>> НАХУЯ  ???  А  для  того  -  всего-то  -  чтобы  переписать  , прикинь
>>> ПЕРЕПИСАТЬ !!! значение из МЕМ-ячейки АЦП в "глобальную переменную"!
>>> бля мудак...
>>> вот потому и глючит всё вокруг ! бо такие пидарасы пишут проги! :((((
>>>
>>> из его текста:
>>> ADCValue1 = ADC12MEM1 ;
>>>
>>> ADCValue1 - это его "глобальная переменная".
>>> ADC12MEM1  - это ГЛОБАЛЬНОЕ(!) расположение ячейки 16 бит куда пишется
>>> с АЦП значение че намеряло АЦП на том канале который ему сказали в эту
>>> ячейку  ложить.  повторяю: ГОЛОБАЛЬНОЕ! т.е. доступное из проги на С в
>>> любом месте и в любое время!
>>>
>>> Ну не мудак?
>>> Ведь  зачем  прерываться  по  готовности  данных  АЦП  если его спецом
>>> сделали чтобы оно само по себе работало! БЕЗ проца и прерываний!
>>> тупо  сам  модуль  по  кругу(как  настроишь)  идет  в  канал,  меряет,
>>> записывает в память, потом идет на новый канал и т.п.
>>>
>>> а  ячейка   ADC12MEM1  -  это и так ГЛОБАЛЬНОЕ место - оно отовсюду из
>>> твоей проги доступное! Это прибитое гвоздями место в микросхеме!
>>>
>>> и еще мудак сделал в майн процедуре
>>> __delay_cycles(5000); // Delay between conversions
>>> верх маразма !
>>> теперь мы еще процессором ждем АЦП !
>>>
>>> Нахуя  тогда  инженеры  ТехасИнструментс  старались  и  строили такую
>>> архитектуру???   чтобы   индус   вот   так   разом  помножил  на  ноль
>>> ПРОИЗВОДИТЕЛЬНОСТЬ чипа???
>>>
>>> Мозгов его не хватило сделать философию проще:
>>> 1) пусть АЦП там само по кругу, и пишет само в память - МИНУЯ проц!
>>> никаких прерываний работы проца вообще!
>>>
>>> 2)  когда  нам  потребуется  результат из этого канала АЦП - мы просто
>>> делаем в любом месте нашей проги, НЕ В ПРЕРЫВАНИИ:
>>> ADCValue1 = ADC12MEM1 ;
>>>
>>> и ВСЁ!!!!!!!!!!!!!!!!!
>>> и  далее  бегаем  уже со своим ADCValue1 и везде с ним считаем, то что
>>> нам надо - не отрывая проц на постоянные(!) прерывания и укладывание в
>>> память  14  циклов  всего  в  стек, чтобы потом поднимать 14 циклов из
>>> стека, и так с частотой считывания АЦП умножить на три канала!
>>>
>>> Ну не мудаки-же такие программеры???
>>>
>>> Бля.........  я теперь понимаю почему всё глючит и лагает...
>>>
>>>
> 
> 
> 

-- 
    Best regards,
    Alexandr B. Baryshnyev, e-mail: abb at abbon.net



More information about the uanog mailing list