об индусах и программировании, или о том почему всё глючит...
Привет ! Преамбула. Я занимаюсь программированием микроконтроллеров, вот уже лет 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@euro.net.ua _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
Саша, по нынешним временам писать код быстро экономически более выгодно, чем писать хорошо. Не всегда, но во многих случаях. Ведь когда закончится чип 7х7мм, можно поставить второй такой, а не ещё два стола :) А пока "красавцы" вылизывают свой код, "дятлы" уже продают решение. 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 циклов из стека, и так с частотой считывания АЦП умножить на три канала!
Ну не мудаки-же такие программеры???
Бля......... я теперь понимаю почему всё глючит и лагает...
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
Привет,
Сильно депендс от отрасли. У нас был эксперимент и так и так. Оказалось, что корректное програмирование
в среднесрочной уже перспективе - экономически выгоднее. Провели эксперимент "давайте задавим железом",
а когда под конец операции "задавим железом" посмотрели на сколько было потрачено - тут же поменяли вектор
на давайте писать по концепции: написали "как есть", профайлинг, "как надо".
В людей инвестировать правильнее. В творческих - в квадрате правильнее.
PS: с первого раза правильно написать код весьма сложно, т.к. у нас профайлера нет в голове, только общие
базисы "правильно это написать так".
13 квітня 2018, 09:42:28, від "Volodymyr Litovka"
Привет !
Преамбула. Я занимаюсь программированием микроконтроллеров, вот уже лет 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 циклов из стека, и так с частотой считывания АЦП умножить на три канала!
Ну не мудаки-же такие программеры???
Бля......... я теперь понимаю почему всё глючит и лагает...
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
Привет !
ну вообще-то ЛЮБОЕ начинание с программированием надо начинать с
"профайлинга", т.е. "а что мы хотим получить в итоге и как это должно
рабоать", а уже потом под "это" подбирается железо-микроконтроллер.
А уже потом составляется блок-схемы и общая философия "как ЭТО тут
будет работать". А уже потом - начинается кодинг :)
А если вот так как индус - то это видно что он "слезал" с чего-то
совсем простого типа Атмела или PICа, где нет такой красивой
архитектуры и поддержки в железе. Но ПОНЯТЬ новую философию не пытался
- тупо решил вопрос так как уже решал на простом железе :-((
Я сознательно переползаю на MSP430 а не на "модные нынче" STM,
именно из-за красивости архитектуры при хорошей цене и возможностях
"на вырост". И не понимаю "модных писателей кода" которые лезут на STM
микроконтроллеры, при этом выбирают 8-и битные модели а пишут на С++ с
разными заковыками - когда после них видишь ассемблерный код - то
рука-лицо и хочется такого писателя убить, чтобы не портил своим
генофоном население Земли.
Обычно народ не парится: как начал на Атмега8 так потом просто более
мощные чипы подсовывает - не понимая что смена философии в мозгах это
и смена философии в железе.
Но все равно грустно...
Friday, April 13, 2018, 10:04:12 AM, Vladimir Sharun vladimir.sharun@ukr.net you wrote:
VS> Сильно депендс от отрасли. У нас был эксперимент и так и так.
VS> Оказалось, что корректное програмирование
VS> в среднесрочной уже перспективе - экономически выгоднее. Провели
VS> эксперимент "давайте задавим железом",
VS> а когда под конец операции "задавим железом" посмотрели на
VS> сколько было потрачено - тут же поменяли вектор
VS> на давайте писать по концепции: написали "как есть", профайлинг, "как надо".
VS> В людей инвестировать правильнее. В творческих - в квадрате правильнее.
VS> PS: с первого раза правильно написать код весьма сложно, т.к. у
VS> нас профайлера нет в голове, только общие
VS> базисы "правильно это написать так".
VS> 13 квітня 2018, 09:42:28, від "Volodymyr Litovka"
Привет !
Преамбула. Я занимаюсь программированием микроконтроллеров, вот уже лет 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@euro.net.ua _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
Александр Васильевич,
У меня на военке был такой смешной кейс, когда то ли генератор, то ли усилитель, же не помню в ПЗУ БУКа сделан
в геометрии огромного ящика (все ржали над линией задержки в С-60 - бухта кабеля ?). Мы задали
вопрос тарищ-пдполковнику, а чо так, почему не ЛБВ-О или пролётный клистрон, размером с палку колбасы
варёной. Ну и все поржали, какие вояки тупые, а мы такие вот продинутые, как раз готовились к сдаче по приборам СВЧ
"на гражданке".
Он пришел через два часа со схемами и распедалил, что ЛБВ и клистрон в пролёте по ТЗ - сразу сдохнут
от поражающего действия при использовании Я.О., а набор какашек в этом ящике - спокойно протянет.
Это было уроком.
Это я к тому, что его (индуса) солюшн вполне может быть воркараундом на какой-то Вам неизвестный
баг в таком же или похожем контроллере. А может и не быть.
13 квітня 2018, 12:00:12, від "Alexander V Soroka"
Привет !
Преамбула. Я занимаюсь программированием микроконтроллеров, вот уже лет 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@euro.net.ua _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
hi, Fri, Apr 13, 2018 at 12:44:47, vladimir.sharun wrote about "Re: [uanog] об индусах и программировании, или о том почему всё глючит...":
Он пришел через два часа со схемами и распедалил, что ЛБВ и клистрон в пролёте по ТЗ - сразу сдохнут от поражающего действия при использовании Я.О., а набор какашек в этом ящике - спокойно протянет. Это было уроком.
Ну а тогда вторым уроком должно быть, что амеры (а для кого-то "тупые пиндосы") в случае ЭМИ ядерного взрыва вытащат запасной процессорный блок из железного ящика в ЗИП, воткнут и пойдут дальше. Зато он будет работать в 10000 раз быстрее и 10 раз дешевле того "набора какашек", а второго ядерного взрыва не будет в том же месте, а если будет, то уже будет не до БУК и тому подобных средств. И переход к такому состоянию случился у них где-то в середине 80-х - как раз тогда, когда у нас начало всё сыпаться.
Это я к тому, что его (индуса) солюшн вполне может быть воркараундом на какой-то Вам неизвестный баг в таком же или похожем контроллере. А может и не быть.
Вот именно, что на "неизвестный баг" шанс 1%, а на то, что он тупо не дочитал доку или не захотел менять привычки - 99%. -netch-
Привет, та ладно так уж переживать-то. Индус поставленую задачу небось выполнил? Да, не эстетично, криво-косо и всё такое. Но заказчика эстетика вряд-ли интересует. Ему надо чтобы работало, выполнено было в установленные сроки и за согласованные деньги. Если индусу понадобилось бы пол года на изучение эстетических возможностей камешка, который он видит в первый и в последний раз в жизни, то странно было бы требовать от него чего-то другого, ему семью кормить надо, а не эстетизмами заниматься. Так что у каждого своя правда, всё как всегда. Ну и по поводу 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@ukr.net you wrote: VS> Сильно депендс от отрасли. У нас был эксперимент и так и так. VS> Оказалось, что корректное програмирование VS> в среднесрочной уже перспективе - экономически выгоднее. Провели VS> эксперимент "давайте задавим железом", VS> а когда под конец операции "задавим железом" посмотрели на VS> сколько было потрачено - тут же поменяли вектор VS> на давайте писать по концепции: написали "как есть", профайлинг, "как надо". VS> В людей инвестировать правильнее. В творческих - в квадрате правильнее. VS> PS: с первого раза правильно написать код весьма сложно, т.к. у VS> нас профайлера нет в голове, только общие VS> базисы "правильно это написать так".
VS> 13 квітня 2018, 09:42:28, від "Volodymyr Litovka"
: 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@abbon.net _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
Fri, Apr 13, 2018 at 13:03:22, abb wrote about "Re: [uanog] об индусах и программировании, или о том почему всё глючит...":
Ну и по поводу ARM32 против MSP430 тоже хочется сказать вкратце. Да, очень эстетичный малопотребляющий камешек MSP430, только он производится единственной компанией в мире и ни с чем несовместим, ну кроме как с PDP-11 (ага, это было круто 35лет назад, СМ-4, Электроника-125, Электроника-60, ДВК, помним детство золотое). Не
MSP430 не совместим бинарно с PDP-11 аж никак. Он совместим частично с духом и синтаксисом, но например: MSP430 - 16 регистров, из них PC - номер 0(!); PDP-11 - 8 регистров, PC - номер 7. MSP430 не знает преавтодекреметный режим адресации. MOV не меняет CC (то, что в PDP-11 меняет его, вообще-то жуткая диверсия, от которой потом отказались). Ну и так далее. Вообще, подобных идеологических клонов PDP-11 было около десятка (для индустрии железа это аналогично "чуть больше, чем дофига"). Например, HP3000, на котором был построен первый массовый интернет...
страшно все яйца в одну-то корзинку складывать? Ведь камешек не новый, а ну как перестанут выпускать? Или фирма-изготовитель например того, прекратит так сказать существование, поглотится/обакротится? И как там со средствами разработки/отладки? А вот ARM32 как ядро заложен много кое где, причем диапазон
А вот это уже вопрос другого порядка. В embedded слишком много завязано на специфику конкретной аппаратуры, а не на просто архитектуру. Это в Windows можно было написать сапёра и ожидать, что он проработает 15 лет. Тут же не так важно, что ARM, а важно, как с какой аппаратурой работаешь. Например, нет у тебя важного таймера на новой железяке и ты начинаешь заниматься хреновым поллингом. Поэтому привязка на конкретное подсемейство STM или даже конкретную модель может быть проблемнее привязки на MSP... А вот именно отработанность решений более высокого уровня (как компиляторы для ARM) может играть роль, конечно. Но это уже если пишешь на C, или ещё чём-то выше... и именно поэтому во всякие Pi их целят... -netch-
Что-то мне подсказывает, что это было "10 серверов против 20 скрверов, на которые тратим бабки - свет/кондеи/ремонт". В случае "продал изделие себестоимостью железа около 0 за кучу денег и забыл" - пока не появится конкурент с изделием лучше или существенно дешевле - можно не рыпаться. А с учетом того, что программер/разработчик получает з/п, а не часть прибыли - ему пофиг, в то же время вложение денег в оптимизацию может и не принести существенной отдачи. On Fri, Apr 13, 2018 at 10:04:12AM +0300, Vladimir Sharun wrote:
Привет,
Сильно депендс от отрасли. У нас был эксперимент и так и так. Оказалось, что корректное програмирование
в среднесрочной уже перспективе - экономически выгоднее. Провели эксперимент "давайте задавим железом", а когда под конец операции "задавим железом" посмотрели на сколько было потрачено - тут же поменяли вектор
на давайте писать по концепции: написали "как есть", профайлинг, "как надо".
В людей инвестировать правильнее. В творческих - в квадрате правильнее.
PS: с первого раза правильно написать код весьма сложно, т.к. у нас профайлера нет в голове, только общие
базисы "правильно это написать так".
13 квітня 2018, 09:42:28, від "Volodymyr Litovka"
: Саша, по нынешним временам писать код быстро экономически более выгодно, чем писать хорошо. Не всегда, но во многих случаях.
Ведь когда закончится чип 7х7мм, можно поставить второй такой, а не ещё два стола :) А пока "красавцы" вылизывают свой код, "дятлы" уже продают решение.
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 циклов из стека, и так с частотой считывания АЦП умножить на три канала!
Ну не мудаки-же такие программеры???
Бля......... я теперь понимаю почему всё глючит и лагает...
-- Volodymyr Litovka "Vision without Execution is Hallucination." -- Thomas Edison
_______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
_______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
-- Best regards, Paul Arakelyan. _______________________________________________ uanog mailing list uanog@uanog.kiev.ua https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
participants (6)
-
Alexander V Soroka
-
Alexandr Baryshnyev
-
Paul Arakelyan
-
Valentin Nechayev
-
Vladimir Sharun
-
Volodymyr Litovka