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

Alexander V Soroka alex at euro.net.ua
Fri Apr 13 12:00:06 EEST 2018


Привет !

ну  вообще-то  ЛЮБОЕ  начинание  с  программированием  надо начинать с
"профайлинга",  т.е. "а что мы хотим получить в итоге и как это должно
рабоать", а уже потом под "это" подбирается железо-микроконтроллер.
А  уже  потом  составляется  блок-схемы и общая философия "как ЭТО тут
будет работать".   А уже потом - начинается кодинг :)

А  если  вот  так  как  индус - то это видно что он "слезал" с чего-то
совсем   простого  типа  Атмела  или  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,
Alexander V Soroka       http://www.svr.ua/
AS106-RIPE
mailto:alex at euro.net.ua



More information about the uanog mailing list