crow писал(а):
Действительно роман написал, очень полезная информация.
Тогда ещё одну полезную вещь сходу скажу, а то потом долго будешь с этим копаться, если надумаешь влезать во всё это.
Итак, я думаю Ты знаешь, что в простейшем своём варианте любой процессор умеет выполнять арифметические действия (сложение, умножение, вычитание и деление). Ну т.е. например в один регистр помещаем одно число, а в другой другое число, даём команду сложения с помещением результата в третий регистр. Ну так это примерно работает. Конечно когда Ты программируешь на СИ, Тебе вот так отдельными командами не обязательно дёргать регистрами, можно использовать переменные.
Например: a=10+3
Тут сам компилятор языка Си сам придумает в какой регистр запихнуть 10, в какой 3, а в какой положить результат переменную "a". Конечно в Си можно и принудительно задействовать регистры, что-то вроде:
[cx001]=10
[bx001]=3
[ax001]=[cx001]+[bx001]
тут у Тебя идёт непосредственное обращение к регистрам. Ты принудительно запихиваешь в регистр cx001 число 10, потом принудительно запихиваешь в регистр bx001 число 3, а потом складываешь эти два числа с помещением результата в третий регистр ax001.
Ну я примерно написал, имена регистров и конкретный синтаксис обращения к ним может отличаться. Короче в Си можно как через переменные действовать, так и непосредственно к регистрам обращаться. Кстати такое непосредственное обращение к регистрам нужно тогда, когда мы управляем например той же USB. Т.е. в разные регистры шины USB что-то напихиваем и как-то руководим всем этим процессом некоторыми специальными командами...
Так вот, числа с которыми мы оперируем могут быть целые и дробные. Ну это я выделил две такие принципиально разные категории. Почему так?
Дело в том, что арифметические операции с целыми числами и дробными чисто технически выполняются по-разному на разных устройствах.
Сначала о представлении чисел.
Вот если у нас 8-и битный контроллер, то каждый регистр вмещает 8 двоичных разряда.
Ну короче либо нули, либо единицы можно во все эти разряды записать.
И вот тут встаёт вопрос как же представляются числа в контроллере.
Целые числа представляются так:
https://neerc.ifmo.ru/wiki/index.php?ti ... ельный_кодРаботает с ними, скажем так, обычный процессор.
Если числа дробные, то они записываются иначе:
https://neerc.ifmo.ru/wiki/index.php?ti ... щей_точкойС ними работает совершенно другое устройство, так называемый сопроцессор.
Кстати именно поэтому в языке нужно чётко указывать тип данных твоих переменных, это сделано для того, чтобы компилятор понимал в каком блоке их обрабатывать.
Целые числа нельзя складывать, умножать и делить на сопроцессоре, он работает только с числами с плавающей точкой, нельзя делать и обратное.
Так вот, ARM всегда был без сопроцессора, ну большинство его версий. Операции с плавающей точкой у него обычно выполняются как-то виртуально из-за чего требуют гораздо больше времени. Ну а вот в ARM Cortex-M4F есть сопроцессор, вот из за той самой буквы F, он может выполнять действия с числами с плавающей точкой, именно поэтому это такая полезная вещь...
Далее, если нужны только вычисления с плавающей точкой, то лучше всего взять контроллер TMS от Texas Instruments (это их собственная разработка, они на ней собственно и специализируются (на плавающей точке)):
http://www.ti.com/microcontrollers/c200 ... ducts.htmlОни специально целиком и полностью заточены под плавающую точку. Плавающая точка нужна тогда, когда идёт оперирование с дробными величинами. Например контроллер формирует регулирующее воздействие до данным датчика и своей внутренней придуманной программы системы регулирования. Или например когда мы формируем выходной сигнал произвольной формы цифровым способом, там синусоиду или прямоугольник. Вообщем в таких делах без дробных чисел, т.е. чисел с плавающей точкой не обойтись и тут более целесообразен будет TMS. Как Ты наверное понял, всё остальное, что понапихано в TMS типа той же USB и Ethernet будут так же как и в ARM-е представлены набором управляющих регистров, за которые нужно будет дёргать, чтобы управлять этими устройствами. Ну а чтобы понять как работает то же устройство, вот то же USB2.0, нужно будет как я уже показал прежде читать отдельно документацию на USB...
Конечно TMS в том применении, которое я только что обозначил, гораздо круче ARM-а, даже того же ARM Cortex-M4F, у которого есть отдельный модуль для работы с числами с плавающей точкой. Вот только никто как правило этот TMS не изучает, по нему очень мало всего написано в русскоязычном интернете, ARM в сто раз более популярный и по нему понаписано просто тонны информации. И на работу как правило берут со знанием ARM, короче TMS у нас почти никто не пользуется, ни работодатели, ни отдельные энтузиасты. Вот такая особенность.
crow писал(а):
Насчет забугорных МК действительно они вперед нас рванули. Но у нас еще есть порох в пороховнице. Пусть копаются тратят силы, а мы все это под себя используем. И посмотришь если мою заявку ФИПС одобрит, мы их всех в заднице оставим. Я планирую ее показать так же в новогодние каникулы.
...
...
А насчет моего загрузчика так скажу я его из тех же кодексов выкопал. Т.е. понимаешь это уже внеземная технология. И по тому мы можем такой рывок сделать, что буржуям и снилось.
Сrow, Ты же понимаешь, что вот все эти:
I2C:
https://ru.wikipedia.org/wiki/I%C2%B2CUART:
https://ru.wikipedia.org/wiki/Универсал ... передатчикUSB:
https://ru.wikipedia.org/wiki/USBВот кстати по ней кое-что:
http://www.softelectro.ru/usb.htmlEthernet:
https://ru.wikipedia.org/wiki/EthernetИ прочее и прочее никуда не денутся, они все не наши, наших в обозримом будущем (лет 20) не будет...
Это всё забугорное, стандарты придумали они, документация на английском, поэтому какую бы Ты удобную и прекрасную штуку по управлению этим всем ни придумал, Тебе сначала придётся прочитать и понять все эти стандарты, как они работают, а потом уже с этим знанием привносить своё упрощение того как это программировать...
По-факту это ничего не упростит, если кто-то захочет программировать на хорошем уровне понимания всего этого хозяйства, то он всё равно не избежит прочтения всех этих документов...
crow писал(а):
Меня возмущает, что все платно у них по использованию МК.
Что именно платно? Покупаешь плату разработки, вот такую например, как я уже показывал:
http://www.ti.com/tool/MSP-EXP432E401YЭто готовая плата на которой уже распаян вот этот вот контроллер:
http://www.ti.com/product/MSP432E401YНу она не самая дорогая, но всё-таки какие-то основные функции и устройства контроллера на ней выведены. Потом подключаешь это всё к компу и играешься до посинения, пока не получится что-то удобоваримое получить и нормально его запрограммировать. Даташиты бесплатные. Программы если хочешь хорошие, то пиратишь...
В чём проблема? Потом когда наиграешься, будешь точно такую же плату самостоятельно разрабатывать, но уже под свои цели со своей разводкой и со своими прочими премудростями, тут конечно придётся вложиться... Ну без этого никак...
Но Ты бы лучше забил на это, Ты не там видишь главную проблему.
Главная проблема - это перевод документации!!!!!!!!!!!!!!!!!!
crow писал(а):
Кстати ты там платой хвалился из фторопласта, могу тебе подарить. Тяжелая собака где то кило 3, если не больше весит. В кладовке парится.
Ух Ты, а размер у неё какой? Зря наверное облизываюсь, ща размер не подойдёт под мои задумки и всё...