Управление светодиодной лентой на WS2812B с STM32F10x

- Новичку трудно в нем разобраться
- Неэкономно расходуется память, что позволено STM32F4 — не позволено STM32F10x
Оба этих недостатка я попытался устранить в своей библиотеке stm32f10x-ws2812b-lib.
Библиотека написана с использованием Standard Peripheral Library и использует Half-Transfer Interrupt для заполнения буффера DMA. Использовать ее довольно просто:
#include "ws2812b.h"
#define NUM_LEDS 300
RGB_t leds[NUM_LEDS];
int main() {
ws2812b_Init();
while (1) {
while (!ws2812b_IsReady()); // wait
// Заполнить RGB-буффер
ws2812b_SendRGB(leds, NUM_LEDS);
}
}
При использовании цветового пространства HSV код будет аналогичный:
#include "ws2812b.h"
#define NUM_LEDS 300
HSV_t leds[NUM_LEDS];
int main() {
ws2812b_Init();
while (1) {
while (!ws2812b_IsReady()); // wait
// Заполнить HSV-буффер
ws2812b_SendHSV(leds, NUM_LEDS);
}
}
Все настройки каналов таймера, DMA и т.п. вынесены в отдельный заголовочный файл ws2812b_conf.h, думаю разобраться в нем не составить большого труда.
- +4
- 30 июня 2015, 16:25
- silencer
тратить 256 байт памяти (а точнее по 256 байт и sram и flash, там const должен быть, а не static) чтобы посчитать возведение в квадрат через таблицу — варварство.
inline uint8_t LEDGamma(uint8_t b){ return (b*b)>>8; }
inline uint8_t LEDGamma(uint8_t b){ return (b*b)>>8; }
Про const совсем забыл, спасибо за замечание.
Вычислять vs табличное значение — вечная тема для дискуссий, видимо, лучше будет тоже дать возможность настраивать в конфиге.
Вычислять vs табличное значение — вечная тема для дискуссий, видимо, лучше будет тоже дать возможность настраивать в конфиге.
Какой смысл такую простую функцию задавать таблично? Это же весь такой производительный и модный STM!
Скажем, на межке вычислить "(b*b)>>8" — это ровно 2 такта.
Скажем, на межке вычислить "(b*b)>>8" — это ровно 2 такта.
Есть несколько моментов:
1) Некоторые рекомендуют использовать не квадрат, а возводить во степень 2.5 — с их точки зрения в этом случае «визуально» выглядит лучше. Их право в общем-то, с таблицей этот вариант легче реализуется.
2) (255*255)>>8 = 254 — неаккуратненько как-то :)
1) Некоторые рекомендуют использовать не квадрат, а возводить во степень 2.5 — с их точки зрения в этом случае «визуально» выглядит лучше. Их право в общем-то, с таблицей этот вариант легче реализуется.
2) (255*255)>>8 = 254 — неаккуратненько как-то :)
для ^2.5 будет еще пара умножений.
про "Неэкономно расходуется память, что позволено STM32F4 — не позволено STM32F10x" никто вас за язык не тянул.
2) (b*b+b))>>8
про "Неэкономно расходуется память, что позволено STM32F4 — не позволено STM32F10x" никто вас за язык не тянул.
2) (b*b+b))>>8
про «Неэкономно расходуется память, что позволено STM32F4 — не позволено STM32F10x» никто вас за язык не тянул.Все-таки 256 байт на всю таблицу, и по 48 байт на каждый диод ленты — несколько разные объемы.
да, но у Вас-то буфер всего 60 байт который по ходу заполняется, и тут еще 256 на таблицу.
ну и дефайны лучше в одно место все убрать
inline uint8_t LEDGamma(uint8_t v){
#ifdef WS2812B_USE_GAMMA_CORRECTION
#ifdef WS2812B_USE_PRECALCULATED_GAMMA_TABLE
return (v * v + v) >> 8;
#else
return LEDGamma_Table[v];
#else
return v;
#endif
}
тогда в коде их не будет
uint8_t r = LEDGamma(rgb->r);
uint8_t b = LEDGamma(rgb->b);
uint8_t g = LEDGamma(rgb->g);
uint8_t mask = 0x80;
for (i = 0; i < 8; i++){
pwm->r[i] = (r & mask)? WS2812B_PULSE_HIGH: WS2812B_PULSE_LOW;
pwm->g[i] = (g & mask)? WS2812B_PULSE_HIGH: WS2812B_PULSE_LOW;
pwm->b[i] = (b & mask)? WS2812B_PULSE_HIGH: WS2812B_PULSE_LOW;
mask >>= 1;
}
и далеко не все МК умеют делать сдвиг на произвольное число разрядов, компилятор вряд ли сам догадается и будет двигать эту несчастную единицу каждый раз сколько сказали.
ну и дефайны лучше в одно место все убрать
inline uint8_t LEDGamma(uint8_t v){
#ifdef WS2812B_USE_GAMMA_CORRECTION
#ifdef WS2812B_USE_PRECALCULATED_GAMMA_TABLE
return (v * v + v) >> 8;
#else
return LEDGamma_Table[v];
#else
return v;
#endif
}
тогда в коде их не будет
uint8_t r = LEDGamma(rgb->r);
uint8_t b = LEDGamma(rgb->b);
uint8_t g = LEDGamma(rgb->g);
uint8_t mask = 0x80;
for (i = 0; i < 8; i++){
pwm->r[i] = (r & mask)? WS2812B_PULSE_HIGH: WS2812B_PULSE_LOW;
pwm->g[i] = (g & mask)? WS2812B_PULSE_HIGH: WS2812B_PULSE_LOW;
pwm->b[i] = (b & mask)? WS2812B_PULSE_HIGH: WS2812B_PULSE_LOW;
mask >>= 1;
}
и далеко не все МК умеют делать сдвиг на произвольное число разрядов, компилятор вряд ли сам догадается и будет двигать эту несчастную единицу каждый раз сколько сказали.
Очевидно смысл — следование отстаиваемому вами принципу «библиотеки долой, пишем свой велосипед» из параллельной ветки.
Это неизбежная плата в «борьбе за оптимальность».
Это неизбежная плата в «борьбе за оптимальность».
Это же весь такой производительный и модный STM!
Коллега, если не секрет, а за что конкретно вы так не любите ARM (и STM32 в частности)?
Убогий, кривая архитектура, кривой набор команд, кривой ассемблер, при этом расползается повсюду как чума.
Хотелось бы конкретики, что не так с архитектурой, набором команд …?
Мне наоборот кажется, что они выигрывают у Меги за счет фоннеймоновской архитектуры…
Мне наоборот кажется, что они выигрывают у Меги за счет фоннеймоновской архитектуры…
Фон-нейман — удобно, но не критично. В целом, обе приемлемые.
Это можно долго писать, я даже не знаю с какой стороны хвататься. Просто нормальные архитектуры МК — AVR, PIC etc. сделаны специально как МК, с любовью и старанием.
Скажем, нужно включить битик в регистре I/O — вот пожалуйста, инструкция SBI. В STM — костыль битбэндинг. Вместо одной удобной командочки — требуется длинная портянка, которая что-то записывает по каким-то магическим адресам. Сделали, называется — нате, жрите.
Тоже самое если нужно загрузить константу в регистр, считать/записать слово — начинаются огороды на каждый чих. Как этим всем пользоваться?
Да и вообще: медленные прерывания, медленный вызов функций, невнятные тайминги инструкций и т.д.
С межками когда работаешь — чувствуешь, что разработчики думали и старались. Взять, хотя бы умножитель, в котором есть: mul, muls, mulsu, fmul, fmuls, fmulsu. Последние три — аппаратная поддержка фиксированной точки. Скажем, умножение q15 -> q31 выполняется всего за 19 тактов (пример использования можно посмотреть в библиотеке FFT от Эльм-чана). Такой набор по-моему вообще уникален, я не знаю больше ни одного процессора со столь функциональным умножителем.
Для сравнения — в CM0 всего одна инструкция умножения, которая не возвращает старшую часть. Разработчики не учились в начальной школе и не знают что при умножении в столбик длина результат равна сумме длин множителей? И как с фиксированной точкой работать?
Ассемблер армовский — то приёмник идёт за источником, то источник за приёмником. И откуда вообще эта дурь путать местами источник и приёмник? Мы ведь пишем «a = 2», а не «2 = a», когда хотим присвоить! Такое чувство, что какие-то пофигисты-дилетанты всё придумывали.
Дурацкий синтаксис вида «LDR.N R0, [PC, #0x20]». Почему нельзя по-человечески написать «LD R0, [PC+0x20]»?
Я не помню всего, что встречалось. Просто на каждом шагу хочется плеваться.
Межкин ассемблер приятный и продуманный. Имена инструкций лаконичные, без всякого мусора. Синтаксис логичный. Посмотреть, скажем, на работу с дробными числами: «LDIW A, Q15(0.5)» (A — регистровая пара R17:R16 у меня).
STM — в принципе хамская контора. Надоело выпускать какую-то микросхему — просто взяли и удалили все упоминания с сайта. Говорите, коммерческая фирма и делают что хотят? Ок, но и я тогда с полным правом буду называть их мудаками и посылать нахъ.
Атмел, для сравнения, когда снимает чип с производства — во-первых, не удаляет документацию с сайта, во-вторых, пишет документ с отличиями и рекомендациями по переходу (!).
Про периферию STM тоже с помпой пишут (обычно применяется слово фарш).
Покажите STM, у которого есть PLL на 64 МГц? Биполярный АЦП с усилителем? Таймер, по функциональности не уступающий TC1 в 261-й тиньке? Да даже сраного компаратора не запихнули.
Десктопные/мобильные армы — тоже убожество.
Это можно долго писать, я даже не знаю с какой стороны хвататься. Просто нормальные архитектуры МК — AVR, PIC etc. сделаны специально как МК, с любовью и старанием.
Скажем, нужно включить битик в регистре I/O — вот пожалуйста, инструкция SBI. В STM — костыль битбэндинг. Вместо одной удобной командочки — требуется длинная портянка, которая что-то записывает по каким-то магическим адресам. Сделали, называется — нате, жрите.
Тоже самое если нужно загрузить константу в регистр, считать/записать слово — начинаются огороды на каждый чих. Как этим всем пользоваться?
Да и вообще: медленные прерывания, медленный вызов функций, невнятные тайминги инструкций и т.д.
С межками когда работаешь — чувствуешь, что разработчики думали и старались. Взять, хотя бы умножитель, в котором есть: mul, muls, mulsu, fmul, fmuls, fmulsu. Последние три — аппаратная поддержка фиксированной точки. Скажем, умножение q15 -> q31 выполняется всего за 19 тактов (пример использования можно посмотреть в библиотеке FFT от Эльм-чана). Такой набор по-моему вообще уникален, я не знаю больше ни одного процессора со столь функциональным умножителем.
Для сравнения — в CM0 всего одна инструкция умножения, которая не возвращает старшую часть. Разработчики не учились в начальной школе и не знают что при умножении в столбик длина результат равна сумме длин множителей? И как с фиксированной точкой работать?
Ассемблер армовский — то приёмник идёт за источником, то источник за приёмником. И откуда вообще эта дурь путать местами источник и приёмник? Мы ведь пишем «a = 2», а не «2 = a», когда хотим присвоить! Такое чувство, что какие-то пофигисты-дилетанты всё придумывали.
Дурацкий синтаксис вида «LDR.N R0, [PC, #0x20]». Почему нельзя по-человечески написать «LD R0, [PC+0x20]»?
Я не помню всего, что встречалось. Просто на каждом шагу хочется плеваться.
Межкин ассемблер приятный и продуманный. Имена инструкций лаконичные, без всякого мусора. Синтаксис логичный. Посмотреть, скажем, на работу с дробными числами: «LDIW A, Q15(0.5)» (A — регистровая пара R17:R16 у меня).
STM — в принципе хамская контора. Надоело выпускать какую-то микросхему — просто взяли и удалили все упоминания с сайта. Говорите, коммерческая фирма и делают что хотят? Ок, но и я тогда с полным правом буду называть их мудаками и посылать нахъ.
Атмел, для сравнения, когда снимает чип с производства — во-первых, не удаляет документацию с сайта, во-вторых, пишет документ с отличиями и рекомендациями по переходу (!).
Про периферию STM тоже с помпой пишут (обычно применяется слово фарш).
Покажите STM, у которого есть PLL на 64 МГц? Биполярный АЦП с усилителем? Таймер, по функциональности не уступающий TC1 в 261-й тиньке? Да даже сраного компаратора не запихнули.
Десктопные/мобильные армы — тоже убожество.
Скажем, нужно включить битик в регистре I/O — вот пожалуйста, инструкция SBI. В STM — костыль битбэндинг. Вместо одной удобной командочки — требуется длинная портянка, которая что-то записывает по каким-то магическим адресам. Сделали, называется — нате, жрите.
Тоже самое если нужно загрузить константу в регистр, считать/записать слово — начинаются огороды на каждый чих. Как этим всем пользоваться?
Писать на Си =)
Фон-нейман — удобно
Очень удобною, особенно если мы говорим о С. Основные мои претензии к AVR (если не считать политику ATMEL в. ч. и ценовую) именно к гарвардской архитектуре.
Вместо одной удобной командочки — требуется длинная портянка, которая что-то записывает по каким-то магическим адресам.
Зато этот подход масштабируется (замапленные на память регистры периферии, битбэндинг и т. д.) а SBI в его текущей реализации – это некий немасштабируемый частный случай (работает с младшими 32 регистрами). Да и языки программирования уровня С запросто скрывают эти особенности.
Да и вообще: медленные прерывания, медленный вызов функций, невнятные тайминги инструкций и т.д
Касательно прерываний не понял (механизм управления прерываниями в ARM намного богаче), касательно тайминга – да, нельзя полагаться на фиксированное время выполнения инструкции. Тут не поспоришь. С другой стороны ориентироваться на фиксированный тиамин инструкций – не лучшая идея в программировании критических к таймингам задач.
С межками когда работаешь — чувствуешь, что разработчики думали и старались.В Thumb 2 вариантов умножения более 20 инструкций. В М0 сильно порезали оставили талька MULS, но там 32 разряда.
Ассемблер армовскийНе вижу смысла особо спорить касательно мнемоник ассемблера. Мне он тоже поначалу казался странным (особенно B, BL) потом привык. Я (как, подозреваю и вы) очень редко на нем пишу, чаще читаю при глубокой отладке.
STM — в принципе хамская контора.
Да, бывает, я тоже с этим сталкивался. Ну, ИМХО, ATMEL уж точно не лучше.
Про периферию STM тоже с помпой пишут
ИМХО, достаточно сбалансированная там периферия. Касательно частных случаев (уровня: там нет 50-и канального DAC, а он мне так нужен) – всем не угодишь.
Я не идеализирую ни ARM ни STM32. Но я не вижу ни одного повода вернуться с ARM назад на AVR (хотя я достаточно много работал с данной архитектурой, и для своего времени она была однозначно неплоха)
если не считать политику ATMELЗа хорошую вещь не жалко заплатить.
а SBI в его текущей реализации – это некий немасштабируемый частный случайЭто нормальный случай для конкретного маленького процессора. То, что его нельзя перенести на большой процессор непосредственно — не оправдание для халтуры.
Касательно прерываний не понялОни медленные. ЕМНИП 12 тактов на вход и 12 на выход.
В Thumb 2 вариантов умножения более 20 инструкций.Эм. И? Я в отличие от разработчиков армов не считаю, что количество заменяет качество.
но там 32 разрядаДа хоть 33. Плохо сделанная вещь остаётся сделанной плохо.
Мне он тоже поначалу казался страннымНу уж нет. Он не странный, а уродливый.
Я (как, подозреваю и вы) очень редко на нем пишу, чаще читаю при глубокой отладке.Ассемблер — всему голова. Если процессор нельзя нормально программировать на ассемблере, то он не нужен.
Касательно частных случаев (уровня: там нет 50-и канального DAC, а он мне так нужен)50-канальный DAC — действительно что-то очень специфическое и редко нужное. Да и 5-канальный тоже.
А, скажем, таймер высокого разрешения — весьма полезная и универсальная вещь. Как и, скажем, мощные GPIO. Есть разница.
ARM/STM — типичная «современная» вещь, которую можно использовать для разработки такого же никчёмного коммерческого барахла, но добровольно пачкаться об неё никак не хочется.
За хорошую вещь не жалко заплатить.
Как кто-то метко заметил: «Я не вижу смысла переплачивать за более низкую производительность»
Это нормальный случай для конкретного маленького процессора.
Ага. 32 регистра хватит всем… ;)
ЕМНИП 12 тактов на вход и 12 на выход.
Откуда эти данные? И для какого процессора и какого режима? Явно не для (FIQ)
Я в отличие от разработчиков армов не считаю, что количество заменяет качество.
Ну, как говорят, ты первый начал, цитирую:
Взять, хотя бы умножитель, в котором есть: mul, muls, mulsu, fmul, fmuls, fmulsu.
Ассемблер — всему голова. Если процессор нельзя нормально программировать на ассемблере, то он не нужен.
Как правильно заметил выше 1essor1 , «Писать на Си =)». Нет, ну вот вы часто пишете на ассемблере? Вы действительно считайте актуальным обсуждение мнемоник?
ARM/STM — типичная «современная» вещь, которую можно использовать для разработки такого же никчёмного коммерческого барахла, но добровольно пачкаться об неё никак не хочется.
:) Ну да, «нормальные» программы, скомпилированные под ARM перестают работать. Только у AVR есть своя «тепловость» и «ламповость», без которой нельзя сделать нормальную «вещь»
Как кто-то метко заметил: «Я не вижу смысла переплачивать за более низкую производительность»Производительность здесь вообще не при чём! Это просто количественный параметр.
Откуда эти данные?Из книжки про СТМ-ку.

Ну, как говорят, ты первый начал, цитирую:Не понял что имеется в виду.Взять, хотя бы умножитель, в котором есть: mul, muls, mulsu, fmul, fmuls, fmulsu.
Как правильно заметил выше 1essor1, «Писать на Си =)». Нет, ну вот вы часто пишете на ассемблере? Вы действительно считайте актуальным обсуждение мнемоник?Ну, скажем так, пишу значительную часть из того, что пишу. Си хорош для обработки строк, разветвлённых алгоритмов и т.п. задач. Вычисления и обработку сигналов на Си писать крайне неудобно. Во-первых, кодогенератор выдаёт кривой код. Во-вторых — многие классные возможности в Си недоступны.
Но на самом деле это не важно. Фундамент важен для дома, даже если хозяин смотрит только на евроремонт внутри.
:) Ну да, «нормальные» программы, скомпилированные под ARM перестают работать.Допустим, есть одна вещь, которая собрана на заводе и заверена военной приёмкой. И другая вещь, в которой клубки проводов, сопли и ардуйня. Пусть они вроде как делают одно и тоже. Но иметь хочется первую.
Из книжки про СТМ-ку
ОК, был был не прав, почему-то считал, что у кортекса есть режим аналогичный FIQ. Справедливости ради сохранение регистров в AVR будет тоже не бесплатным, плюс если говорить о ARM в общем – во многих архитектурах есть FIQ специально для минимизации задержки.
Допустим, есть одна вещь, которая собрана на заводе и заверена военной приёмкой. И другая вещь, в которой клубки проводов, сопли и ардуйня. Пусть они вроде как делают одно и тоже. Но иметь хочется первую.
Это не аргумент, это из области ваших личных убеждений.
Еще раз повторюсь, я не идеализирую ARM, не утверждаю что это самая лучшая архитектура и т. д. Но по суммарному набору параметров я не вижу аргументов в пользу AVR.
Справедливости ради сохранение регистров в AVR будет тоже не бесплатнымВ AVR никто насильно не требует сохранять регистры. Можно просто выделить несколько регистров для прерываний. Есть тинька вообще без SRAM — там их и некуда пушить.
плюс если говорить о ARM в общем – во многих архитектурах есть FIQ специально для минимизации задержкиЯ так понял по обсуждению, что это чемодан без ручки.
p.s.
Typically RTOS interrupt latency will be 500-1000 instructions. For Linux, it maybe 2000-10000 instructions.OMFG, до чего дошёл прогресс…
Но по суммарному набору параметров я не вижу аргументов в пользу AVR.Ну да. AVR — всего лишь профессионально и с душой сделанная вещь.
Кому это сейчас надо? Главное больше разрядов и мегагерцев.
Согласно вики, спекки вышел в 1982 году. Разработка арма началась в 1983.
А про ориентацию на совместимость расскажи подробнее. Да, я в курсе, что Z80 — весьма близок к 8080, но не полный аналог, да и в совместимости определенную роль играет и архитектура компьютера.
К тому же, я упоминал еще и коммодор. Вышел тогда же и проц имел совершенно с интелом не совместимый (хотя и родственный весьма популярному 6502).
Так что для меня разработка риска для десктопа в начале 80-х не выглядит столь авантюрной затеей, какой ее представляет evsi.
А про ориентацию на совместимость расскажи подробнее. Да, я в курсе, что Z80 — весьма близок к 8080, но не полный аналог, да и в совместимости определенную роль играет и архитектура компьютера.
К тому же, я упоминал еще и коммодор. Вышел тогда же и проц имел совершенно с интелом не совместимый (хотя и родственный весьма популярному 6502).
Так что для меня разработка риска для десктопа в начале 80-х не выглядит столь авантюрной затеей, какой ее представляет evsi.
Согласно вики, спекки вышел в 1982 году. Разработка арма началась в 1983.С учетом типичных на то время циклов разработки, спек начали делать в конце 70-х, не позже. И да, разработка арма началась давно, хотя проследить тенденции рынка можно было уже тогда. Так что разработка вполне могла быть прекращена или просто не продолжена после выхода первого чипа в кремнии, поскольку к этому моменту тенденции рынка были тем более прозрачны. А уж выпуск десктопа в 87-м, на фоне выхода PS/2 и первого компа на 386-м (компак его выпустил в самом конце 86-го) — что-то среднее между подвигом и наглостью. От полного пролета их спасло, как мне кажется, только сотрудничество с эпплом при работе над процом для ньютона.
Да, я в курсе, что Z80 — весьма близок к 8080, но не полный аналог, да и в совместимости определенную роль играет и архитектура компьютера.Z80 надмножество 8080. То есть все, что писано для 8080 работает на Z80, но не наоборот. Из доступного тогда софта была готовая операционка — CP-M и некоторое количество софта для нее. Так что да, спек вполне можно считать претендующим на совместимость.
А уж выпуск десктопа в 87-м, на фоне выхода PS/2 и первого компа на 386-м (компак его выпустил в самом конце 86-го) — что-то среднее между подвигом и наглостью.Это — да. Но, возможно, начав — уже не хотели бросать. Хотя да, это уже то самое «разрабатывать риски(!) для десктопов(!) во время тотального засилия х86 могли только хардкорные энтузиасты своего дела». Зато, в конце концов, оно все же оправдалось)
Из доступного тогда софта была готовая операционка — CP-M и некоторое количество софта для нее. Так что да, спек вполне можно считать претендующим на совместимость.Ни разу не видел ее на спекки. Вроде по софту он так и варился в собственной кастрюльке.
Ни разу не видел ее на спекки. Вроде по софту он так и варился в собственной кастрюльке.www.worldofspectrum.org/infoseekid.cgi?id=0023486
И вообще гугл на «zx spectrum cp/m» выдает очень много ссылок.
Ни разу не видел ее на спекки. Вроде по софту он так и варился в собственной кастрюльке.
CP/M запускалась на Spectrum +3, а это была достаточно экзотическая вещь. На популярных у нас клонах 48/128 CP/M не запускалась. Хотя были очень экзотические вариации, типа Кворум.
И с началом 80х тоже. это у нас в середине 80х все бурлило, а у них середина 70х.Ну, вобщем, да. Бурление закончилось с появлением IBM PC. Что, вобщем, не удивительно, учитывая, что на тот момент IBM по сравнению с ближайшим конкурентом в этой области был примерно как слон против мыши. Я имею в виду вкладываемые ресурсы и имеющийся опыт.
IBM, конечно, был весьма крут, но вроде как раз вкладывать он не особо старалсяТы не учитываешь размеров. То, что для IBM «не особо старался» и расходы на проект меньше, чем представительские для менеджмента (циферок не знаю, просто предположение), то для других контор предел мечтаний инвестиций в их проект.
(и если исходить из предположения, что IBM PC взял свое за счет открытости — то вложи IBM больше ресурсов — и загнулся бы он точно так же, как конкуренты).История IBM полна провалов в проектах куда более дорогих, чем PC. Что не мешает им оставаться одной из крупнейших контор в этой области по сей день.
Первый арм в кремнии появился в 85-м, первый комп на нем — в 87-м.
P.S. игры это здорово и сейчас они вполне себе драйвер развития видеожелеза. но по тем временам драйвером развития компов был бизнес и только бизнес. именно поэтому довольно передовые для своего времени коммодоры и атари (да и спеки) заточенные под обучение-развлечение загнулись, а убогий IBM PC заточенный под бизнес — живет и здравствует по сей день.
P.S. игры это здорово и сейчас они вполне себе драйвер развития видеожелеза. но по тем временам драйвером развития компов был бизнес и только бизнес. именно поэтому довольно передовые для своего времени коммодоры и атари (да и спеки) заточенные под обучение-развлечение загнулись, а убогий IBM PC заточенный под бизнес — живет и здравствует по сей день.
Он появился как исследовательская разработка (ключевая фишка — отсутствие перекрестных зависимостей в пайплайнах исполнения команд, что собственно отражено в названии — Microprocessor without Interlocked Pipeline Stages) и изначально не нацеливался куда-либо. Чуть позже они таки коммерциализировались, но сразу нацелились на рынок, на котором софт изначально был портируемый (unix workstations). К тому же этот рынок тогда только начал серьезно подниматься и места для новичков там было полно. Например, тот же Sun Microsystems появился в 82-м и первым продуктом была именно unix workstation.
Не вижу логики.Ну как же, все согласно вашему постулату:
Вообще, всё хорошее создаётся энтузиастами.АРМ — отличная архитектура созданная энтузиастами. Оспорить это вам пока не удается, даже по вашему же критерию «создана энтузиастами».
Это не значит, что в них есть что-то хорошее.Как вы определяете наличие чего-либо хорошего?
Ну как же, все согласно вашему постулату:Всё хорошее создаётся энтузиастами — факт. Не каждый, кто назовёт себя энтузиастом — создаёт хорошее. См. диаграммы Эйлера.
В чём разница между человеком, который называет себя плохим и человеком, который называет себя хорошим? Если человек называет себя, допустим, националистом — скорее всего он такой и есть. Если называет себя учёным — может он и есть учёный, но чаще — шарлатан.
Как вы определяете наличие чего-либо хорошего?Как ни странно, но наличию хорошего.
Хорошего в нём только то, что пока ещё остались альтернативы.Как минимум он хорош тем, что он и есть альтернатива. И только с его появлением в low-level сегменте унылое болото авр-ов, пиков и клонов 51-го, наконец-то, зашевелилось и перестало колотить понты запредельными порогами вхождения для энтузиастов.
О да, запредельные пороги — изучить чуть-чуть схемотехники и программирования.
Мне когда попалась книжка про 8051 я просто офигел от того, насколько всё просто! До этого считал, что микропроцессорные устройство — страшные платы с кучей микросхем, и требуется прочитать несколько толстенных книжек для вхождения.
Если говорить про пороги, то стм с шагом ножек 0,5 мм — это куда более существенный порог.
Мне когда попалась книжка про 8051 я просто офигел от того, насколько всё просто! До этого считал, что микропроцессорные устройство — страшные платы с кучей микросхем, и требуется прочитать несколько толстенных книжек для вхождения.
Если говорить про пороги, то стм с шагом ножек 0,5 мм — это куда более существенный порог.
А что там умалчивать? Приличного для вообще всех архитектур — AS4, кейл и иар. Первая только для AVR.Сколько из них бесплатных (и когда бесплатные версии стали появляться)? Сколько стоят платы для разработчиков? Отладчики? Программаторы? Замечу, что важно не то, сколько они стоят сейчас, а то, сколько они стоили на момент массового выхода на рынок дешевых кортексов.
А что тогда порог?Стоимость средств разработки, как не сложно догадаться.
Ну, для AVR и PIC со стоимостью средств разработки (в минимальном варианте) все очень неплохо, почему они свою популярность и завоевали.
Это сейчас уже, если сравнивать с кортексами и замахиваться на «я и отладчик хочу человеческий, и компилер полнофункциональный!» — то да, авры и пики смотрятся бледновато (на первые железо не найдешь халявное, на вторые софт), а тогда — взял бесплатный ассемблер, самопальный программатор и вперед!
Это сейчас уже, если сравнивать с кортексами и замахиваться на «я и отладчик хочу человеческий, и компилер полнофункциональный!» — то да, авры и пики смотрятся бледновато (на первые железо не найдешь халявное, на вторые софт), а тогда — взял бесплатный ассемблер, самопальный программатор и вперед!
В чем-то спасибо стоит сказать и конторам. Хотя бы за документацию по протоколам и бинарному формату (что необходимо для создания сообществом своих тулзов — вон, dW так и не освоено на коленке из-за закрытости доков) и за бесплатные программные средства.
Ну а OCD-отладка — сравнительно недавнее достижение, в «докортексовские» времена на дешевых МК она обычно отсутствовала, так что и недоступность отладчика не играла роли.
Я бы в плане снижения порога скорее отметил появление упрощающих старт средств — тех же готовых к работе платок ардуино с простой средой программирования к ним, кучи доков в интернете и всего такого.
Ну а OCD-отладка — сравнительно недавнее достижение, в «докортексовские» времена на дешевых МК она обычно отсутствовала, так что и недоступность отладчика не играла роли.
Я бы в плане снижения порога скорее отметил появление упрощающих старт средств — тех же готовых к работе платок ардуино с простой средой программирования к ним, кучи доков в интернете и всего такого.
Да, безусловно ардуина сыграла свою роль, тут даже спорить глупо. Но все держалось больше на энтузиазме отдельных людей аж до пинка со стороны стм. Собственно, вся последовательность (в моем представлении) выглядит так — авры, пики и 51-е (ну и другие, типа того же renesis) долго жили сами по себе, типа low-end встраиваемых процов, куда никто особо не лез. Потом стали появляться арм-ы, но поначалу они жили в верхней части сегмента и не пересекались с мелочевкой. Кортексы от атмела и нхп мирно сосуществовали и действовали по тем же правилам — платы дорого, отладчики дорого, софт дорого. Потом появились ардуины и появился приток энтузиастов, но ситуация менялась медленно (и народу поначалу не много и сами конторы не сильно заинтересованы). Параллельно, кстати, развивался mbed который изначально ориентирован на нхп-шные чипы и потому значительно менее известен и популярен у нас. А потом на рынок вышел стм и первым делом опустил планку на платы и отладку. А заодно открыл сорсы на SPL. По времени это совпало с ростом популярности ардуин. Вот тут говна и забурлили по полной, поскольку остальные производители контроллеров вдруг осознали, что опаздывают с запрыгиванием в попсовый вагон, а в будущем это приведет к потере рынка. Вот с этого момента «платы в формате ардуины», встроенные отладчики на платах для разработчиков, урезанные бесплатные версии IDE и прочие ништяки пошли волной. Где-то так.
Ну, справедливости ради стоит заметить, что бесплатные IDE у микрочипа и атмела были давным-давно, платные они у третьих сторон. И урезанные бесплатные версии кейла и иара тоже не новость (с кайлом 2.х я ознакомился еще в инсте в 2005 году, где он заменял своим симулятором стенд с настоящим процем).
Тот софт, что сейчас бесплатен (GCC, Eclipse, etc) бесплатен был и тогда (кайло, кстати, тогда умело работать с собственной сборкой GCC — бесплатно, но вместо отладки кукиш).
Отладчики тоже особо дешевле не стали, если не считать китайских клонов со слетающими лицензиями
А вот бум голых демобордов с встроенными обрезками дебаггеров — это да, это STM) Ну и некоторые IDE дешевле стали — скажем, появился бесплатный CCS.
Тот софт, что сейчас бесплатен (GCC, Eclipse, etc) бесплатен был и тогда (кайло, кстати, тогда умело работать с собственной сборкой GCC — бесплатно, но вместо отладки кукиш).
Отладчики тоже особо дешевле не стали, если не считать китайских клонов со слетающими лицензиями
А вот бум голых демобордов с встроенными обрезками дебаггеров — это да, это STM) Ну и некоторые IDE дешевле стали — скажем, появился бесплатный CCS.
Тот софт, что сейчас бесплатен (GCC, Eclipse, etc) бесплатен был и тогдаНо поддержка армом гцц явление достаточно новое, да и я вижу насколько отличается гцц от кодсорсери (бывший стандартом для кортексов еще несколько лет назад) и нынешний.
P.S. еще одна существенная фишка стм-ов — загрузчики через уарт. это практически избавило от необходимости иметь программатор, что тоже достаточно существенно снизило порог вхождения.
Наблюдается легкое передергивание с вашей стороны. AVR ничего не сохраняет (кроме указателя команд) перед началом обработки прерывания. В обработчике для AVR прийдется руками сохранить регистры и руками же их восстановить, что потребует дополнительных тактов. Наконец, ARM-ы, как правило, имеют в разы более высокую тактовую. Так что по факту на армах прерывания более быстрые, чем на AVR.
Или мне требуется всего 1-2 регистра для обработчика.Замечательно. А теперь давайте считать: 4 такта на 16 мегагерцах (максимум для attiny/atmega) и 12 на 48 (минимум для кортексов) это одно и то же время. Так что когда вы рассказываете об «медленных прерываниях», вы просто передергиваете.
P.S. фраза об «покажите STM, у которого есть PLL на 64 МГц?» меня просто умилила. Вам 72МГц в F103/105/107 мало? Или вы не в курсе, что (раз уж можно 72), то можно и меньше, например 64?
вы вообще интересовались тем, сколько времени занимает вход в прерывание на вашем i3?Да, несколькими постами выше обращал на это внимание. Это печально.
Нет, ну вот вы часто пишете на ассемблере?Такие странные люди есть даже на ARM-ах :DDDDD
- well-man2000
- 03 июля 2015, 01:47
- ↑
- ↓
Это нормальный случай для конкретного маленького процессора.То есть Атмелу вы прощаете костыли, потому что его любите, а остальным не прощаете компромисы? И кто сказал, что одно «костыль», а другое «компромис»?
Если процессор нельзя нормально программировать на ассемблере, то он не нужен.Совершенно верно, ассемблер не нужен! В этом-то и вся суть.
А, скажем, таймер высокого разрешения — весьма полезная и универсальная вещь.СТМ позволяет каскадировать таймеры.
Как и, скажем, мощные GPIO.Полевики положено подключать через драйвера, а не напрямую в выводу мк. Общие катоды/аноды тоже, а не костылить на авр с превышением допустимых токов выводов.
То, что вы чего-то не знаете или не хотите знать, это не вина кого-либо другого. Хватит перекладывать отсветственность с себя, на других.
Совершенно верно, ассемблер не нужен!В дальнейшем я буду игнорить обезьянничание в духе "- это яблоко моё!" "- да, оно моё!" и т.д. А ассемблер нужен.
СТМ позволяет каскадировать таймеры.Зачем? И как это повысит разрешение по времени?
а не костылить на авр с превышением допустимых токов выводовПочему костылить и почему с превышением? Весьма годные Plush-6A делали на восьмежках. Впрочем, сейчас перешли на 8051, где нагрузочная способность ещё лучше.
То, что вы чего-то не знаете или не хотите знать, это не вина кого-либо другого. Хватит перекладывать отсветственность с себя, на других.Говори что не так. А рассуждения в духе «это передовые нанотехнологии и тебе они не по уму» буду тоже игнорить.
Зачем? И как это повысит разрешение по времени?Тот же частотомер, один таймер считает «младшие 16 бит», второй «старшие 16 бит». Но конечно, если вам надо вызвать прерывание не через 1.000000001 сек, а не 1сек, то да, тут сдаюсь.
Можете смело комментировать данный пост: «костыль, старший/младший!».
Почему костылить и почему с превышением?Питание 5В, красный индикатор, резисторы 300Ом в катоды и ОА на вывод МК. Вполне популярная картина для схемы на великой и могучей авр. Первый же линк вольтметр на тини предлагает 470-1.5к. Думаю вы в состоянии посчитать токи. А это, так вообще кладезь. 150Ом на сегмент, естественно в пределах 20ма на вывод. А разряды — да кому они нужны.
Говори что не так.Для начала, вы рассматриваете задачи «помигать светодиодиком, на все про все времени 2 месяца», а не существующие реали. Продолжать смысла нет, ввиду того, что вы не уловили суть поста, к каторому дали комментарий.
Тот же частотомер, один таймер считает «младшие 16 бит», второй «старшие 16 бит».Зачем это городить в железе? Если нужна повышенная разрядность — ничего страшного не случится если раз в минуту будет вызвано прерывание, которое обработает перенос.
Я имел в виду таймер высокого разрешения в тиньках, который тактируется от PLL. Позволяет реализовать быстрый ШИМ, точный замер временных промежутков и т.п.
Питание 5В, красный индикатор, резисторы 300Ом в катоды и ОА на вывод МК.И причём тут это? Токи разрядов велики — берём и ставим ключ. В случае матрицы с высокой скважностью можно и токи сегментов поднять до 40 мА. Как раз для большинства светодиодов допустим импульсный ток, раза в 4 превышающий номинальный.
Для начала, вы рассматриваете задачи «помигать светодиодиком, на все про все времени 2 месяца»Я рассматриваю процессоры с точки зрения того, сделаны они на совесть или халтурно. Продуманы тщательно или по принципу «тяп-ляп-жрите». Больше ничего.
Я имел в виду таймер высокого разрешения в тиньках, который тактируется от PLL. Позволяет реализовать быстрый ШИМ, точный замер временных промежутков и т.п.У многих ARM'ов штатная тактовая выше, чем выход этой PLL, так что разрешающая способность будет не хуже.
В случае матрицы с высокой скважностью можно и токи сегментов поднять до 40 мАШины питания межки такого издевательства не оценят.
Я рассматриваю процессоры с точки зрения того, сделаны они на совесть или халтурно. Продуманы тщательно или по принципу «тяп-ляп-жрите». Больше ничего.Я так и не пойму как ты оцениваешь «тщательность» или «тяп-ляпность». Притом делая такие радикальные, не, не так, РАДИКАЛЬНЫЕ выводы о том что какашка, а что нет. Или в даташитах уже пишут что-то типа:
2,6 accuracy per mm^2 или 1,8 khaltura per verilog module?
Я так и не пойму как ты оцениваешь «тщательность» или «тяп-ляпность».По различным признакам.
Не обязательно лезть в верилоги, чтобы увидеть, что в ассемблере не сумели даже соблюсти стабильный порядок источника и получателя. Если на таком уровне всё тяп-ляп, значит в остальном явно не лучше.
Впрочем, насчёт схемотехники есть у мя догадки. Скажем, почему AVR весьма устойчивы к наводками? Полагаю, не просто так — скажем, в даташите можно видеть схемку входного буфера с синхронизатором. Наверняка хорошо думали над этим. В отличие.
Не обязательно лезть в верилоги, чтобы увидеть, что в ассемблере не сумели даже соблюсти стабильный порядок источника и получателя.Вообще-то асм к самому процу имеет весьма опосредствованное отношение. И порядок источника и получателя определяется компилятором, а не процессором. Впрочем, зачем вам знания, если есть вера…
Наверняка хорошо думали над этим. В отличие.Откуда выводы насчет «в отличие от»? Особенно учитывая то, что в ARM-ах порты тактируются (что поначалу весьма обращает на себя внимание), а следовательно там тоже есть тактируемая защелка.
Вообще-то асм к самому процу имеет весьма опосредствованное отношение. И порядок источника и получателя определяется компилятором, а не процессором.Какая блин разница? Если делаешь МК, сделай его так, чтобы им можно было пользоваться! Если компилятором, синтаксисом и т.д. пользоваться нельзя — выкинь и сделай своё. Или возьми нормальное.
Стоит заметить, что как раз они прикупили Keil для разработки инструментов и помогают разработке GCC-ARM. А атмел выплюнул блокнот с отладчиком и ассемблер, а за пресловутый GCC-AVR спасибо следует сказать сообществу.
Впрочем, к некоторым более старым атмеловским МК книжки на полном серьезе рекомендовали командно-строчный компилятор от IAR и блокнотик. Эталонная забота о пользователях.
Впрочем, к некоторым более старым атмеловским МК книжки на полном серьезе рекомендовали командно-строчный компилятор от IAR и блокнотик. Эталонная забота о пользователях.
Вот только мало толку от IDE, когда нет компилятора, а его атмел так и не сделали ни для MCS51, ни для AVR, ни для ARM.
Ну и честно говоря, времена IDE как именно интегрированной среды прошли лет 20 назад. Теперь под IDE понимается в первую очередь средство редактирования текста, а во встроенном в нее компиляторе нужды особой и нет. Так что AS4 — неплохой дебаггер для AVR, но не IDE.
Ну и честно говоря, времена IDE как именно интегрированной среды прошли лет 20 назад. Теперь под IDE понимается в первую очередь средство редактирования текста, а во встроенном в нее компиляторе нужды особой и нет. Так что AS4 — неплохой дебаггер для AVR, но не IDE.
Данный стереотип навязан нуждой много отлаживать. Работа с абстрагированием от железа предполагает больше работы с текстом. В свою очередь редакторы аля Эклипс допускают минимум глупых опечаток и ошибок. Что в сумме со знанием и опытом приводит к тому что математика (не работа с железом) введенная ручками из головы без копипастов в течении часа как правило работает сразу. Сложно себе такое представить, да?
Синтаксис определяется соглашениями и документацией.С какого перепугу? Синтаксис всегда определяется компилятором (иногда даже конкретной версией компилятора), а вовсе не тем, что написано в документации. Они в большинстве случаев совпадают, это да, но если даже отличаются, то решающее слово именно за компилятором. Именно он компилирует вашу программу, а не соглашения и документация.
x86 — очень приятный процессорРедкое в своем уродстве убогое дерьмо, а не процессор. И интеловский (точнее, MS-овский) ассемблер такой же.
P.S. у интела были действительно интересные процессоры, но х86 не один из них.
Какая разница, совпадает или нет? Я говорю именно про то, что написано в документации.Вам шашечки или ехать?
Ну да, под него даже писать можно.Писать можно под что угодно. Я когда-то даже под микропроцессорные секции микропрограммы писал. Что с того, что «можно писать»? Хорошим от этого х86 не становится. В этой бочке дерьма из сколько-нибудь хорошего, разве что, x86_64, да и то это не заслуга интела, это AMD приложился.
В вашей параллельной вселенной всё строго наоборот.Ну моя-то основная, это ваша где-то оторвана от реалий бегает с голым задом.
В нашей как раз x86_64 — бочка дерьма, кое как прилепленная.В этот раз даже не буду вам предлагать обосновать. И так видно, что вы в низкоуровневом программировании для x86 ни в зуб ногой.
Микропроцессорные секции это, по сути, нарезанные на кусочки по 4/8 бит АЛУ, шинные формирователи и прочие причандалы из которых путем каскадирования и добавления нужных частей можно было собрать процессор с вполне приличными характеристиками (как для своего времени, конечно). Единственный минус — процессор займет плату, а не один чип. Управляется это все путем выдачи пачки управляющих сигналов из ПЗУ (или ОЗУ) каждый такт на все нужные входы управления. По сути — одним многобитным словом, которое называется микрокомандой. Соответственно, если процессор реализует какой-то набор команд, то каждая из них реализуется как набор микрокоманд (микропрограмма). Вобщем такое себе very low level programming.
Да, в совке был аналог вот этой популярной серии чипов. Если мне память не изменяет, то они шли в виде серии 1804.
Да, в совке был аналог вот этой популярной серии чипов. Если мне память не изменяет, то они шли в виде серии 1804.
i860 это риск, довольно быстрый для своего времени. К нему делали еще всякие математические сопроцессоры, что в итоге давало весьма и весьма высокую производительность. В целом все довольно стандартно. Но отсутствие необходимости делать его с чем-либо совместимым давало вполне нормальную и перспективную архитектуру.
iAXP 432 это довольно уникальный зверь 81-го года выпуска. В железе: стековая архитектура, поддержка ОО языков, поддержка сборки мусора, поддержка многозадачности (если не ошибаюсь кольца защиты в стиле 386-го впервые появились именно в нем), тегирование областей памяти и еще куча каких-то прибамбасов, которые я по молодости даже не вкурил. Были там и свои грабли, конечно, но в целом весьма интересная штука. Журнал Electronics его называл «минимейнфреймом» и, глядя на список прибамбасов я склонен верить в такое определение.
iAXP 432 это довольно уникальный зверь 81-го года выпуска. В железе: стековая архитектура, поддержка ОО языков, поддержка сборки мусора, поддержка многозадачности (если не ошибаюсь кольца защиты в стиле 386-го впервые появились именно в нем), тегирование областей памяти и еще куча каких-то прибамбасов, которые я по молодости даже не вкурил. Были там и свои грабли, конечно, но в целом весьма интересная штука. Журнал Electronics его называл «минимейнфреймом» и, глядя на список прибамбасов я склонен верить в такое определение.
Мне это не кажется очевидным.Насколько я в курсе, gas имеет одинаковый синтаксис для всех архитектур.
Зачем? Невозможно отполировать говно.Это же не мешает вам пытаться отполировать авр.
P.S. забавно, но из вашего списка «недостатков» арма остался только «неправильный» синтаксис асма, да и то это ваша вкусовщина, а не недостаток.
Ну вроде только с прерываниями разобрались — ок, на 72 МГц кортекс может догнать AVR.Вы снова передергиваете и перевираете. На 16МГц авр в пустом прерывании едва дотягивается до младших кортексов на 48МГц. Все, что чуть быстрее по тактовой или что-либо делает на кортексе быстрее.
Выводы, впрочем, от этого не меняются.А с чего бы им меняться? Авр-ки как были дерьмом мамонта, так им и остались.
С остальным, надо полагать, согласны. Раз не возражаете.Не возражаю вовсе не значит, что согласен. Вы еще с этими пунктами не разобрались.
в реальном приложении прерывания занимают минимум времени. В математике эти мегагерцы уже дадут уже порядок производительности. А более-менее приличное железо типа полноцветного дисплея или флеш-памяти в мегабайты размером (ге говоря уже о usb-flash) прикручиваются к авр только с бубном и с производительностью колесного парохода
Весьма годные Plush-6A делали на восьмежках. Впрочем, сейчас перешли на 8051, где нагрузочная способность ещё лучше.Китайские ESC'и, конечно, образец того, как надо правильно управлять мосфетами с МК… Кстати, двухамперная у меня уже разок горела, она на том же C8051F330.
Ну и стоит еще посчитать, какие там токи затвора и что говорит даташит по поводу подобной нагрузки на выводы.
Ну хотя бы потому, что прямое соединение затворов и GPIO вызывает у меня сомнения на предмет соблюдения AMR. Что до нагрева — ну так 6А, с хрена ли греться? Если МК перегружен по выводам, греться он не будет, но вылететь вполне может.
ESC'а на 2А тоже не греется обычно, кроме того случая, когда что-то пошло не так и один ключ выгорел.
ESC'а на 2А тоже не греется обычно, кроме того случая, когда что-то пошло не так и один ключ выгорел.
Знания ассемблера нужны. Точнее его понимание. Компиляторы не идеальны (особенно бесплатные), так что бдить за ними приходится. Не более того. Почему я (и не только) считаю разработку на ассемблеое смешной? Все же очевидно. Берем бесплатную производительность в пол порядка — порядок выше на низком уровне и теряем процентов пятдесят на издержках высокоуровневых языков. В остатке имеем ну никак не меньшую производительность конечного девайса и в разы меньшие затраты на разработку. Выигрыш очевиден.
Выбор Асм или Си напоминает спор спортсмена и профессионального водителя. Взять дикий корч который сделан для того, чтоб на треке (читать как намек на синтетические условия) показать возможности авто и поразвлечь водителя. и взять автомобиль люкс класса сделанный для того чтоб довезти задницу важной шишки с комфортом до нужного места не заставляя водителя напрягаться.
Дальше текст немного не в тему этого комментария но пусть будет здесь. Периферия современных армов на много более гибкая, в сравнении с теми же авр. Да, периферии на первый взгляд меньше. Но я не назовк это минусом. В авр есть всякие плюшки (например кривенький дифамп в ацп) которые в 99 процентах валяются мертвым грузом. Я лучше поставлю мелкий операционник там где это нужно, чем буду платить за фичу там, где она ненужна. Прикопались значит тут к прерываниям, вставлю и свои пять копеек против авр. Господи. Как же удобно, когда я практически на любую ногу могу повесить внешнее прерывание… почему в идеальной авр до такого не додумались?
Выбор Асм или Си напоминает спор спортсмена и профессионального водителя. Взять дикий корч который сделан для того, чтоб на треке (читать как намек на синтетические условия) показать возможности авто и поразвлечь водителя. и взять автомобиль люкс класса сделанный для того чтоб довезти задницу важной шишки с комфортом до нужного места не заставляя водителя напрягаться.
Дальше текст немного не в тему этого комментария но пусть будет здесь. Периферия современных армов на много более гибкая, в сравнении с теми же авр. Да, периферии на первый взгляд меньше. Но я не назовк это минусом. В авр есть всякие плюшки (например кривенький дифамп в ацп) которые в 99 процентах валяются мертвым грузом. Я лучше поставлю мелкий операционник там где это нужно, чем буду платить за фичу там, где она ненужна. Прикопались значит тут к прерываниям, вставлю и свои пять копеек против авр. Господи. Как же удобно, когда я практически на любую ногу могу повесить внешнее прерывание… почему в идеальной авр до такого не додумались?
и теряем процентов пятдесят на издержках высокоуровневых языков50% — мало. У меня было до 4 раз.
и в разы меньшие затраты на разработкуОпять эти торгашеские рассуждения. Из-за подобного практически нет хорошо сделанных вещей сейчас.
например кривенький дифамп в ацпВ каком месте кривенький?
которые в 99 процентах валяются мертвым грузомЧто, аналоговые датчики и другие источники сигнала отменили?
Это в СТМ — мёртвый груз. В AVR всё по делу.
почему в идеальной авр до такого не додумались?Потому что разумная достаточность.
50% — мало. У меня было до 4 раз.В большинстве случаев разница если и будет, то в единицы процентов, но никак не в разы.
Опять эти торгашеские рассуждения. Из-за подобного практически нет хорошо сделанных вещей сейчас.Это не торгашеские рассуждения, а разумные.
Что, аналоговые датчики и другие источники сигнала отменили?Не отменили, но компаратор нужен достаточно редко.
Это в СТМ — мёртвый груз. В AVR всё по делу.Точнее наоборот.
Потому что разумная достаточность.Ага, вот как в вашем словаре называется кривой костыль…
50% — мало. У меня было до 4 раз.неумеючи лопатой тоже можно ногу отрубить
Опять эти торгашеские рассуждения. Из-за подобного практически нет хорошо сделанных вещей сейчас.касательно этого момента есть два метода снижения себестоимости продукта. Первый — дешевая рабочая сила и сокращение сроков разработки. Оба метода губительны для качества, однако использование низкоуровневого программирования это осознанное увеличение сроков разработки ведущее к повышению себестоимости.
Что, аналоговые датчики и другие источники сигнала отменили?Далеко не в каждом проекте они есть. Тем более далеко не каждый датчик требует усилителя.
Это в СТМ — мёртвый грузнапример какой?
Потому что разумная достаточность.неразумные ограничения по трассировке
Мы ведь пишем «a = 2», а не «2 = a»MOV A, B / MOV B, A — поместить в A, B или поместить A в B — просто учимся правильно читать, а не «как привыкли». Вы же для процессора пишете, а не для нас. А для процессора логичнее сначала взять 2, а потом поместить его в а. И, например, я в алгоритмах часто пишу «2 -> a» ввиду того, что думаю не набором команд, а думаю над алгоритмом.
просто взяли и удалили все упоминания с сайта.Абсолютно неудачный пример. Там контора топикстартера сами себе ЗБ.
просто учимся правильно читать, а не «как привыкли»Можете читать и писать как угодно. Хоть задом наперёд, хоть по спирали, хоть ещё каким рандомным паттерном. И сколько угодно говорить что это «нормальные альтернативы». А я буду называть нормальным только тот язык, где lvalue располагается слева, а rvalue — справа.
Абсолютно неудачный пример.Документацию выпилили? Да. Никаких рекомендаций не оставили? Тоже да.
Буратины — да. Связались с СТМ.
А я буду называть нормальным только тот язык, где lvalue располагается слева, а rvalue — справа.Гениально! Нет. Шедеврально!
You've made my day.
ARM
Архитектура PDP11 была лучше x86, MIPS опрятнее чем ARM. И что? И какая разница, и какая есть историческая альтернатива? ARM — самое обычное, унылое и изначально примитивное RISC ядро. Но зато какие огромные плюсы: «однастрана архитектура — один народ MCU_Core — один фюрер объектный код» (для «полной победы коммунизма» осталось только стандартизировать работу с периферией).
Тебе не кажется, что в итоге (из-за такого отношения к ARM) тебя могут просто обойти на повороте другие люди? В конечном смысле все решает не архитектура, а инженерное искусство, в т.ч. умение правильно и красиво написать код. На ARM-е нельзя написать правильного (с твоей точки зрения) и полезного кода?
Убогий, кривая архитектура, кривой набор команд, кривой ассемблер, при этом расползается повсюду как чума.Вот здесь я не согласен со столь уважаемым мной нашим православным самородком Лайфловером.
Архитектура PDP11 была лучше x86, MIPS опрятнее чем ARM. И что? И какая разница, и какая есть историческая альтернатива? ARM — самое обычное, унылое и изначально примитивное RISC ядро. Но зато какие огромные плюсы: «одна
Тебе не кажется, что в итоге (из-за такого отношения к ARM) тебя могут просто обойти на повороте другие люди? В конечном смысле все решает не архитектура, а инженерное искусство, в т.ч. умение правильно и красиво написать код. На ARM-е нельзя написать правильного (с твоей точки зрения) и полезного кода?
- well-man2000
- 02 июля 2015, 21:17
- ↑
- ↓
Проблема AVR в настоящее время не в том, что он плохой/устаревший, а в том, что он 8-битный. Успех пришел к ARM не из-за того, что он гармоничный/ладно_спроектированный e.t.c, а в том, что он был 32-х битный и простой/примитивный по внутренней архитектуре, т.е. с малым кол-вом транзисторов, а значит очень малопотребляющий по сравнению с имеющимися альтернативами.
Какой тогда 32-битный MCU ты лично УВАЖАЕШЬ? Т.е. какая альтернатива ARM-у с твоей точки зрения?
Какой тогда 32-битный MCU ты лично УВАЖАЕШЬ? Т.е. какая альтернатива ARM-у с твоей точки зрения?
- well-man2000
- 03 июля 2015, 00:36
- ↑
- ↓
Проблема AVR в настоящее время не в том, что он плохой/устаревший, а в том, что он 8-битный.Ну-ну. А я основной вой слышу по поводу «фарша мало», «дорого» (аж на 15 рублей дороже, ужос!!!) и т.д.
Какой тогда 32-битный MCU ты лично УВАЖАЕШЬ?Не знаю что ещё есть 32-битного кроме кортиков. По крайней мере доступного/распространённого — точно ничего.
Но вот такое дело. Скажем, некоторое время назад пиарили опенсорс проект — SDR на STM32. И мне стало интересно как он считает. Заглянул и увидел что-то вроде:
int32_t c = (int32_t)((int64_t)a * b >> 32);
Эм. А как же этот ваш SMULL?Это я к тому, что может не так и нужны эти 32 бита, если пишется такой расточительный код.
Не знаю что ещё есть 32-битного кроме кортиков.Может быть тебе из-за твоего «дурного» и пассионарного характера стоит обратить тогда свое внимание/симпатии к MIPS (благодаря PIC32 он еще не сдох) — вполне православный, простой и даже true академичный проц :D
P/S В последней (6-й) редакции книжки «Архитектура компьютера» МЕГА-деда Эндрю Таненбаума он подробно рассматривает 3 архитектуры:
1/ x86 (почему — всем и так понятно)
2/ ARM (ну ты понел почему)
3/ AVR (раньше была 8051, но он видимо выбрал AVR не из-за описанных тобой всех преимуществ и удобства архитектуры, а из-за такого простого слова, как «Arduino» :DDDD
- well-man2000
- 03 июля 2015, 01:18
- ↑
- ↓
А я основной вой слышу по поводу «фарша мало», «дорого» (аж на 15 рублей дороже, ужос!!!) и т.д.
Так ведь правильно воют то. Взять тот же STM8. Например, STM8L152. Можно ли найти AVR ему на достойную замену? Чтобы за 50р были схожие возможности по созданию микропотребляющих устройств, LCD контроллер, ЦАП, DMA? А если такой мк есть у ATMEL, то может быть и дешевые классные отладочные платы под него в наличии? Вместе со встроенным программатором/отладчиком? Ну ладно если вдруг нет плат, то может программатор/отладчик можно купить в китае за 200-300р, который позволит работать со ВСЕМИ моделями данной архитектуры?
Один MCU_Core
Тут вы перегнули. Прям таки один… У них дофинга архитектур и куча разных наборов инструкций.
осталось только стандартизировать работу с периферией
Зачем? Вам нужен переносимый бинарный код между МК?
Это наложит дополнительные ограничения. Потом вы захотите обеспечить обратную совместимость :)
Получится как с Intel, который до сих пор вынужден эмулировать режимы обратной совместимости, который особо никому не нужны.
Заниматься литературщиной бывает весьма тяжко — трудно перефразировать известное высказывание в разрезе совсем другой предметной области. Но под «Один MCU_Core» надо понимать видимо «Одна экосистема MCU_Cores», т.к. рифмуется с понятием «Один народ», т.е. совокупность в чем-то родственных этнически индивидов. Имелось в виду общее в ARM MCU (в отличии от периферии конкретного производителя), т.е. то, что стандартизировано в CMSIS.
- well-man2000
- 03 июля 2015, 00:57
- ↑
- ↓
Заниматься литературщиной бывает весьма тяжко — трудно перефразировать известное высказывание в разрезе совсем другой предметной области
Да, та же фигня :) Я Вам тоже хотел ответить перефразировав «Свобода, равенство, братство», но не как-то не рифмовалось. Поэтому, как истинный представитель украинской фашистской хунты, я просто встал и бросил зигу :)
Убогий, кривая архитектура, кривой набор команд, кривой ассемблерПрямо про вашу любимую межку написано. Вы только забыли добавить, что и вся столь ненависная вам ардуйня на тех же авр-ках.
Ардуйня — это типичный ООП. Всё что не надо для примитивной и тормозной ардуйни, заметается под ковёр.
Ардуйня — это типичный ООП.
Коллега, если не секрет, а за что конкретно вы так не любите
:) Это шутка, не нужно отвечать на этот вопрос, я догадываюсь, что вы ответите.
Знаете, я посему-то решил, что вы за последнее время ка-то повзрослели, стали более рационально смотреть на вещи. Но я ошибся, все равно вся дискуссия (если это модно называть дискуссией) свелась к вашей старой идее – «Есть два мнения: одно мое, втрое неправильное», «Все быдлокодеры, а я — д’Артаньян»
Интересно будет вернутся к этой теме через несколько лет. Если вы не заметили, то Меги уже дано практически не развиваются (что можно понять, ибо их архитектура плохо масштабируется, ARV32 так и не взлетел). Мне вот интересно, вы все-таки пересмотрите свое мнение, или будете «последним из AVRшиков».
стали более рационально смотреть на вещиВещи стали ещё хуже. С чего бы мне смотреть на них более «рационально»?
Интересно будет вернутся к этой теме через несколько лет.Весьма вероятно впрочем, что за несколько лет капиталисты со столь любимыми вами торгашескими рассуждениями уничтожат интернет и некуда будет возвращаться.
С чего бы мне смотреть на них более «рационально»?Хотя бы с того, что это всего лишь вещи. Или с того, что большинству представителей сильного пола свойственно рационально-логическое мышление. Наконец, тут, преимущественно, общаются люди с техническими склонностями и/или образованием и мышлением, у которых рационально-логическое мышление развито даже больше, чем в среднем у таким типом мышления. Ваша же аргументация мне сильно напоминает поведение знакомых дам, которые руководствуются сугубо эмоциями и любые нестыковки между логическими и эмоциональными результатами объясняют фразой «ну я же девочка» (вероятно предполагая, что это должно все объяснить).
Весьма вероятно впрочем, что за несколько лет капиталисты со столь любимыми вами торгашескими рассуждениями уничтожат интернет и некуда будет возвращаться.Благодаря «торгашеским рассуждениям» интернет появился, доступ к нему постоянно дешевеет и расширяется. Замечу, что я совершенно согласен с тем, что это происходит именно из «торгашеских рассуждений». Вот только результат, почему-то, принципиально отличается от того, что видится вам.
приходилось. И на полузаброшенных заводах куда пару часов по колено в снегу идти, и на качалках посреди поля в паре часов езды от цивилизации и на режимном заводе, одним из заборов которого является граница узбекистана с таджикистаном. сути это не меняет. Или у тебя есть все, что бы починить девайс, или у тебя нет ничего. В 90 процентах проводится блочная замена и максимум потребуется пара отверок.
Поддержу коллегу xar .
Я конечно понимаю, что термин «в поле» весьма условен.
Но, сугубо ИМХО, в современных реалиях, все что производится даже в мелкой партии проектируется под блочную замену. Мне довелось работать в компании, которая занималась электроникой для автоматов самообслуживания, дык вот для «ремонтников», которые мотались по объектам был строгий запрет на попытку что-то чинить в схемотехнике – только замена блоков. (Кстати, после работы в этой компании я никогда не пользуюсь кофейными автоматами самообслуживания, и вам не советую :)
С другой стороны, у меня есть знакомые, которые профилируются на изготовлении специализированных устройств (зачастую в единичном экземпляре). Там, естественно, ни о какой блочной замене речь не идет, приходится именно ремонтировать на месте. Но от них я тоже не слышал идей «сделать на куче дискретных элементов, чтобы проще было ремонтировать». МК сокращает количество деталей, что, если я правильно помню теорию надежности – повышает эту самую надежность. Плюс, МК — это универсальная вещь, помимо формирования ШИМ он вам «по любому» пригодится и упростит светотехнику.
Я конечно понимаю, что термин «в поле» весьма условен.
Но, сугубо ИМХО, в современных реалиях, все что производится даже в мелкой партии проектируется под блочную замену. Мне довелось работать в компании, которая занималась электроникой для автоматов самообслуживания, дык вот для «ремонтников», которые мотались по объектам был строгий запрет на попытку что-то чинить в схемотехнике – только замена блоков. (Кстати, после работы в этой компании я никогда не пользуюсь кофейными автоматами самообслуживания, и вам не советую :)
С другой стороны, у меня есть знакомые, которые профилируются на изготовлении специализированных устройств (зачастую в единичном экземпляре). Там, естественно, ни о какой блочной замене речь не идет, приходится именно ремонтировать на месте. Но от них я тоже не слышал идей «сделать на куче дискретных элементов, чтобы проще было ремонтировать». МК сокращает количество деталей, что, если я правильно помню теорию надежности – повышает эту самую надежность. Плюс, МК — это универсальная вещь, помимо формирования ШИМ он вам «по любому» пригодится и упростит светотехнику.
Почему?
Есть такое выражение «Если вам нравится колбаса или политика, то вам лучше не знать как делается то и другое»
Есть некий регламент обслуживания кофейных автоматов, но жадность отдельных владельцев автоматов, помноженная на пофигизм и бесконтрольность обслуживающего персонала творят чудеса.
Зачем менять воду (а это требуется по регламенту обслуживания), если там стоит почти полная бочка. Можно просто долить. И зачем доливать бутилированной водой, если можно взять воду из-под крана. И т. д.
Один из владельцев сети автоматов (который, на редкость, педантично относился к санитарии) заставлял сервисников прилагать к отчету об обслуживании фотографию разобранных и очищенных узлов на фоне свежей газеты (газета выполняла функцию фиксации времени), но даже там его пытались всячески наколоть…
Я не помню каких-то уж совсем «страшилок» уровня «дохлая крыса в шнеке подачи», но насмотревшись на это изнутри, на кофе из автомата меня не тянет…
ну я собственно о том же. Когда под рукой нет магазина все будет зависеть от снаряженности ремонтника. У меня было три походных набора. 5кг для выезда на ввод в эксплуатацию, профилактику или замену крупных узлов (ноутбук и набор слесаря-сантехника), при этом запчасть или паппарат отправлялись отдельно. 15кг рюкзак это уже набор мелких расходников, один-два подозреваемых узла и больший набор инструмента, включая газовый паяльник, кусачки, изоленту и моток провода для того что бы, например припаять оторванный датчик. Последний вариант 5+25кг (авиационный) применялся всего четыре раза, два из них за границей, когда по какой либо причине аппарат доставить к нам дорого или невозможно. Тут лежит полный набор электроники достаточный для сборки еще полутора аппаратов. И лишь один раз я касался паяльником платы для замены заранен известной бракованной детали (всплыла левая серия когда товар уже был отправлен к покупателю). Такую политику выездного ремонта согласовывал сам лично. Основная причина — ремонт на выезде малоэффективен в связи с тем что нет комфортных условий для работы, лабораторного оборудования и невозможно иметь полную номенклатуру комплектующих, которые могут понадобиться. В следствии всего этого ремонт на выезде долог (если вообще возможен) и соответственно дорог (специалист должен где то жить и получать командировочные).
Исключением является военка и подобные отрасли, но это совершенно другой разговор, как и любая другая тема в этих областях.
Исключением является военка и подобные отрасли, но это совершенно другой разговор, как и любая другая тема в этих областях.
Угу. Начинается все с «нафига все так сложно, если можно просто?». Потом появляется любопытство пополам с желанием сделать «просто и круто». Обычно где-то в этом районе начинают появляться знания и понимание того, что «а слона-то я и не приметил».
Те, кто не доходит до второго этапа, как правило, зацикливаются на «все становится только хуже».
Те, кто не доходит до второго этапа, как правило, зацикливаются на «все становится только хуже».
Угу. Начинается все с «нафига все так сложно, если можно просто?». Потом появляется любопытство пополам с желанием сделать «просто и круто». Обычно где-то в этом районе начинают появляться знания и понимание того, что «а слона-то я и не приметил».
Это просто брюзжание_старого_неудачника, т.е. человека, который в молодости по призванию учился на то, чтобы разрабатывать самый лучший СОВЕТСКИЙ микропроцессор/компьютер, но волею судеб просидевшего все 90-е и 2000-е на PC вначале на MS-DOS, а затем на OS/2 (говнокодируя и обслуживая офисный планктон — бухов/барыжный_учет/банковское ПО), в 2008-2009-м срочно пересевшего на Линух, а в 2011-2012-м вернувшегося к любимому делу юности, но уже не более чем, как старикан-любитель :DDDD
У 95-99% бывших совков жизнь сложилась аналогично (пришлось добывать бабло или жратву делами отличными от призвания), но я, пережив демократическо-либеральный дурдом, все же очень рад за таких молодых спецов, как Лайфловер.
- well-man2000
- 06 июля 2015, 01:01
- ↑
- ↓

у меня… далеко не одно любимое дело, да и до старикана мне ну очень далеко.Ты очень много говоришь: я-Я-Я-Я! А вот я был в середине пятого десятка(как и ты ЩАС) и уже был всемирно известным ученым, когда меня разбил инсульт, но и с половиной мозга я сделал еще ряд величайших открытий. Но ты то — не Луи Пастер :DDDDD
- well-man2000
- 06 июля 2015, 10:23
- ↑
- ↓
В этом топике вообще почти ничего нет по делу — одна злобная грызня с Лайфловером, которую (как и обычно) разжег здесь ты (я перешел здесь на «ты», как это делает чисто для удобства VGA, когда разговаривает с кем-то давно знакомым). У меня всего 7 постов здесь «не по делу», у тебя — 56, и все они «не по делу». И кто получается захламляет топики (в том числе и полезные) вот таким жидким, нудно-монотонным, пастообразным спамом с оттенком злобы и менторского самолюбования, который даже не несет какой-то мало-мальски литературной приятности или эстетичности?
- well-man2000
- 06 июля 2015, 17:03
- ↑
- ↓
В этом топике вообще почти ничего нет по делуВо всяком случае обсуждались технические вопросы, без перехода на обсуждение личностей. Тебе же нетерпелось пообсуждать меня. Как обычно.
одна злобная грызня с ЛайфловеромЗлобная грызня это по твоей части. И предыдущий пост тому яркий пример.
И кто получается захламляет топики (в том числе и полезные) вот таким жидким, нудно-монотонным, пастообразным спамом с оттенком злобы и менторского самолюбования, который даже не несет какой-то мало-мальски литературной приятности или эстетичности?Ты, как обычно. Даже с картинками, тоже как обычно.
Может кто знает в чем может быть причина подмаргиваний ленты белым цветом на фоне уже горящей, например, красным или вообще погашенной. Подмаргивание не постоянное. Между подмаргиваниями может быть несколько секунд, может быть несколько минут. Причем подмаргивают не все светодиоды ленты и не всегда одни и те же. Светодиоды 4-х цветные RGBW. И похоже, что подмаргивает именно белый канал, хотя в программе по этому каналу все время «нули» пишутся.
Комментарии (254)
RSS свернуть / развернуть