ТMR0 никогда не именовался "системным". Это обычный 8-битный таймер с очень неудобными делителями и без автоперезагрузки счетного регистра. Его можно использовать в качестве системных тиков, но пихать ртос на 16-й пик - упаси боже. Тем более, какой ртос на ассемблере? Максимум, отсчитывать интервалы. Да и то, коэффициент неудобный, а автоперезагрузки нет.
Пока_без_кота писал(а):
Я сторонник учиться медленно, неторопливо, но "академически правильно", чтобы потом не переучиваться.
Огорчу сразу - в современном мире вам ассемблер не пригодится вообще. Не теряйте времени на его глубокое изучение. Возьмёте другой микроконтроллер из другой серии или поменяете платформу - заново придется учить. Ассемблер - самый низкоуровневый язык, после прямого машинного кода. На современных, особенно ARM-платформах ассемблер нужен только при очень глубокой отладке. Это вам не 35 инструкций, это раз в 7 больше. Хотите учиться на перспективу - выбирайте перспективные платформы. То, что вы делаете сейчас - не более, чем ознакомительное, для вхождения в тему, надолго останавливаться на этом не желательно. Ассемблер помогает познать аппаратную часть микроконтроллера и его работу. Но в сложных платформах на ассемблере вы основательно завязнете в самом начале.
КРАМ писал(а):
Потому что переносимый код не использует фичи контроллера, а значит не оптимален ни по архитектуре,
Переносимый код в пределах одного семейства сохраняет те свойства, которые были заложены при его написании, в пределах доступности периферии. Ассемблер вообще предполагает очень и очень зависимый от микроконтроллера код.
КРАМ писал(а):
Гораздо проще, чем найти нужный регистр в структуре периферийного модуля на STM32.
Да ну, что вы! В СТМ-е абсолютно линейное адресное пространство, от 0 до 0xFFFFFFFF, на 4 гигабайта адресов на всё - и на прогу, и на ОЗУ, и на регистры, и никаких банков, для каждого периферифного модуля выделен свой диапазон адресов со стартовым адресом. Остальные регистры находятся по порядку за первым регистром модуля и задаются смещением от первого. Адреса регистров одинаковы ВО ВСЕХ СТМ32 от самого младшего F0xx до топового H7xx. Например, адрес регистра выхода порта А будет одинаков во всех СТМах. Но на практике, искать адрес регистра не потребуется, в заголовочном файле уже все прописано. И в документации любой регистр найти можно в описании периферийного модуля. Регистров и битов у того же таймера или порта гораздо больше, чем в ПИКах, поэтому кажется, что сложнее найти. Благодаря линейному адресному пространству, не требуется искать, где конкретно находятся регистры модуля. Даже в отладчике, достаточно развернуть список периферийного модуля - и все регистры модуля будут представлены по порядку адресов
_________________ Подпись убрал вместе с автором. aen
Последний раз редактировалось Мурато Мяуконни Вт янв 03, 2017 21:13:11, всего редактировалось 1 раз.
Лет 8-10 назад на мастерсе Микрочипа в Питере были озвучены цифры количества пользователей АСМа. Уже тогда они стремились к нулю. Сейчас эти цифры наврядли пересекают границы 1%.
Вы знаете, даже небольшую любительскую программу я напишу с нуля гораздо быстрее и проще на современной архитектуре и не на ассемблере. И дело не столько во времени/деньгах, сколько простоте и удобстве. Попробуйте так же легко записать на ассемблере сишное выражение if ((m>3) && (m<10)) { for (int i = 0; i<20; i++) { a + i } }. Подобное запросто может встретиться в несложной любительской поделке типа термостата или мигалки.
Тому челу, который желал учиться так, чтобы не переучиваться, надо смотреть на перспективу. Рано или поздно он начнет делать более сложные поделки и тут он уткнется в сложность реализации на ассемблере и нехватку ресурсов микроконтроллера. Поневоле придется переучиваться - переход на новые ПИКи или на ПИК18 потребует переучивания ассемблерных инструкций. На ассемблере можно познать принципы работы внутрянки. И помигать светодиодами. Или посмотреть отладку. Но чем дальше будете идти, тем больше сил будете тратить на ассемблерную писанину.
_________________ Подпись убрал вместе с автором. aen
Потеря емкости аккумулятора напрямую зависит от условий хранения и эксплуатации. При неправильном хранении даже самый лучший литиевый источник тока с превосходными характеристиками может не оправдать ожиданий. Технология, основанная на рекомендациях таких известных производителей литиевых источников тока, как компании FANSO и EVE Energy, поможет организовать правильный процесс хранения батареек и аккумуляторов.
Вы знаете, даже небольшую любительскую программу я напишу с нуля гораздо быстрее и проще
Любительское - не значит что - то маленькое. Оно может быть и большим, и очень большим, но без дедлайна. Когда же время деньги, то это, конечно, СИ. Таким образом любитель выбирает себе язык по вкусу, а профи под задачу.
Мурато Мяуконни писал(а):
Рано или поздно он начнет делать более сложные поделки и тут он уткнется в сложность реализации на ассемблере и нехватку ресурсов микроконтроллера. Поневоле придется переучиваться - переход на новые ПИКи или на ПИК18 потребует переучивания ассемблерных инструкций.
18 - е пики не так страшны, как их малюют. Таже система команд, ну, чуток расширенная. Что касаемо перспектив, то здесь нужно уточнить у нашего начинающего, что именно подразумевается ? Если коммерческое программирование, то вы правы.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Ничоси "чуток". Вдвое. 75 инструкций против 35. Ну а USB на ассемблере сколько страниц текста займет? Очень большое, пусть и любительское, делать на ассемблере за неограниченное время - занятие весёлое, конечно. Дело не только во времени. Дело в объемах текста. И в головной боли при отыскании ошибок и устаканивании всего этого объема.
_________________ Подпись убрал вместе с автором. aen
Всё правильно, сишное выражение рассматривается как операции с переменными, в то время как на ассемблере деление на константу 512 можно записать как сдвиги и найти вручную наиболее выгодный алгоритм. Но вот генерируемый из Си код зависит от уровня оптимизации. поиграйтесь с оптимизацией и убедитесь в изменении размеров. Однако, попробуйте-ка писать на ассемблере на ARM-платформах - поседеете. Хотя, на тех платформах обычно не требуется для деления что-то изобретать на ассемблере. Там стоят аппаратные одноцикловые умножители и даже делители.
_________________ Подпись убрал вместе с автором. aen
Ох, сколько всего понаписали. Если всех начну цитировать, то запутаюсь, так что отвечу всем и сразу. В будущем я планирую учить Си, но только когда более-менее буду плавать в ассемблере. Я просто не могу себе позволить учить что серьезное не разобравшись с основами. А Си с его синтаксисом и возможностью "выстрелить себе в ногу" я считаю серьезным делом. И как Вы видите из моих вопросов, и моего кода, мне еще учиться и учиться. Причем учусь я пока просто в свое удовольствие, никто меня в спину не гонит, учебные задачи я себе придумываю сам. В ближайшем обозримом будущем профессионально заняться программированием МК я вряд ли смогу (уровень не тот), но вообще в планах на далекое туманное будущее есть такая мечта. Прошу прощения, что своими вопросами вызвал стычки между участниками форума, желаю каждому из дискуссии почерпнуть что-то новое, и остаться в +.
попробуйте-ка писать на ассемблере на ARM-платформах - поседеете
Последнее что делал (большое) в связка С, ASM и язък въсокого уровня бъло на 286, 386 (как давно ето бъло - 1986-91). С ARM не знаком, но вряд ли ASM у него сложнеее чем у 386.
_________________ Лом - ето город в Болгарии, а не инструмент юстировки електроники.
Однако, попробуйте-ка писать на ассемблере на ARM-платформах - поседеете.
Ассемблер Cortex-M0 поддерживает всего 56 инструкций, включая 6 32-битных (остальные 16-битные), из которых как минимум 5 используются исключительно редко. Писать небольшие проекты на ассемблере под CM0 тривиально и только лишь дело привычки. У меня опубликованы несколько простых проектов под ARM-CM0 на ассемблере, например, здесь или здесь.
У архитектур CM3/CM4 инструкций уже больше, в основном (но не только) за счёт DSP и инструкций с плавающей точкой. Однако, за счёт поддержки большего числа 32-битных инструкций поддерживается больше режимов адресации и вообще добавляется гибкость инструкций. Если говорить про простые проекты типа по ссылкам выше, программировать их на ассемблере под CM3/CM4 даже проще и удобнее чем для CM0. У них, в частности, уже и целочисленное деление имеется и для умножения опций больше. Может только лишь первый-второй проект пойдёт медленно - далее появятся наработки и темпы ускорятся.
Не спорю и согласен, что правильнее писать проекты на С, даже если время не поджимает. Однако, приверженцам программирования на ассемблере перейти с 8051/AVR8/PIC на ARM в плане самого ассемблера не составит никакого труда. Больше времени уйдёт на освоение различий в архитектуре и регистров конфигурации. С часто встречающимся высказыванием, что регистров у Кортексов уйма и в них легко заблудиться не согласен. Да, регистров в них больше, но так могут говорить только те, кто не пробовал, или попробовал лишь в течении часа, или дольше но просто не дано...
Ничего не мешало микрочипу выбрать любой другой банк для TMR0.
Расстановка регистров по банкам позволяет в подавляющем числе правильно написанных программ практически никогда банки не переключать, оставляя их указатель на нулевом. И расположение TMR0 в этом нулевом тому в помощь. Кроме того, этот таймер входит в число регистров которые ВСЕГДА БЫЛИ и ЕСТЬ в МК этой платформы. То есть даже тогда, когда банков нет вообще. Вспомним про base-семейство с 12 разрядным форматом команд...
sdn_ писал(а):
Вам не сложно, а ему будет сложно, если в четырех банках путается.
И тут Вы выдумали. Он не в банках путается, а в способах их переключения. Расположение регистров по банкам ему известно назубок.
Добавлено after 38 minutes 45 seconds:
Мурато Мяуконни писал(а):
ТMR0 никогда не именовался "системным". Это обычный 8-битный таймер с очень неудобными делителями и без автоперезагрузки счетного регистра. Его можно использовать в качестве системных тиков, но пихать ртос на 16-й пик - упаси боже. Тем более, какой ртос на ассемблере? Максимум, отсчитывать интервалы. Да и то, коэффициент неудобный, а автоперезагрузки нет.
Во первых, РТОС есть даже под 10-ые ПИКи. Во-вторых, РТОС изначально написан именно на ассемблере, а в Си Вы его лишь применяете. В-третьих, автоперезагрузки нет и в TMR1, но никто не мешает ее делать ручками в прерывании с коррекцией на латентность. В-четвертых, Вы старайтесь думать собственной головой, а не искать шаблоны у чужого дяди... Системным нулевой таймер является по сути и по причине его вполне определенного использования в РТОСе.
Мурато Мяуконни писал(а):
Огорчу сразу - в современном мире вам ассемблер не пригодится вообще. Не теряйте времени на его глубокое изучение. Возьмёте другой микроконтроллер из другой серии или поменяете платформу - заново придется учить. Ассемблер - самый низкоуровневый язык, после прямого машинного кода. На современных, особенно ARM-платформах ассемблер нужен только при очень глубокой отладке. Это вам не 35 инструкций, это раз в 7 больше. Хотите учиться на перспективу - выбирайте перспективные платформы. То, что вы делаете сейчас - не более, чем ознакомительное, для вхождения в тему, надолго останавливаться на этом не желательно. Ассемблер помогает познать аппаратную часть микроконтроллера и его работу. Но в сложных платформах на ассемблере вы основательно завязнете в самом начале.
Снова по пунктам. 1. Ассемблер ДЛЯ СЕРЬЕЗНЫХ ЗАДАЧ необходим еще более, чем для простых, а паче даже больше, чем Си. Последнее потому, что на Си не реализуется как раз самые узкие платформозависимые решения. А именно они позволяют сделать коммерческое решение конкурентным. То есть выиграть в цене/качестве. Писать только на Си - значит получать стандартное решение как у всех и выигрывать конкуренцию только за счет маржинальности проекта. Тут что кому нравится. 2. Нащщет количества инструкций Вы не в курсе. Базовое их число и в ARM и в иных RISC-платформах невелико и среди них часто используется всего полтора десятка. Остальное - расширение по способам адресации и никак не влияет на запоминание этих команд. 3. Нет никаких "перспективных" платформ. Есть только целесообразные для данной задачи. Ваша сентенция про "перспективность" имеет лишь целью сократить время и трудозатраты на ИЗУЧЕНИЕ. Что для настоящего инженера нонсенс.
Мурато Мяуконни писал(а):
КРАМ писал(а):
Потому что переносимый код не использует фичи контроллера, а значит не оптимален ни по архитектуре,
Переносимый код в пределах одного семейства сохраняет те свойства, которые были заложены при его написании, в пределах доступности периферии. Ассемблер вообще предполагает очень и очень зависимый от микроконтроллера код.
В пределах одного семейства АСМ абсолютно переносим. С точностью до ветвления ifdef. А при смене платформы даже у одного производителя Си непереносим настолько, насколько иная платформа дает преимущества над прежней. Переносимый код нивелирует возможности разных платформ и делает переход с одной на другую бессмысленным занятием. Все это особенно заметно в современных архитектурах с независимой от ядра периферии. Работа с такой периферией вообще не дает шансов на переносимость любого кода.
Мурато Мяуконни писал(а):
КРАМ писал(а):
Гораздо проще, чем найти нужный регистр в структуре периферийного модуля на STM32.
Да ну, что вы! В СТМ-е абсолютно линейное адресное пространство, от 0 до 0xFFFFFFFF, на 4 гигабайта адресов на всё - и на прогу, и на ОЗУ, и на регистры, и никаких банков, для каждого периферифного модуля выделен свой диапазон адресов со стартовым адресом. Остальные регистры находятся по порядку за первым регистром модуля и задаются смещением от первого. Адреса регистров одинаковы ВО ВСЕХ СТМ32 от самого младшего F0xx до топового H7xx. Например, адрес регистра выхода порта А будет одинаков во всех СТМах. Но на практике, искать адрес регистра не потребуется, в заголовочном файле уже все прописано.
Вы странно пишите НЕ О ТОМ. Одинаковое расположение регистров справедливо и для младших ПИКов. И писал я совсем не про физический адрес, знать который и для ПИКов нет никакой необходимости. Для них адрес прописан так же в заголовочном файле. Речь шла о том, что в структуре управляющих периферийным модулем регистров нужно найти ИМЯ того регистра, который содержит тот самый элемент управления, который необходим. То есть нужно держать в голове изрядное количество АББРЕВИАТУР, либо шнырять по даташиту в поисках оного.
В завершение. Я сам пишу и на Си и на АСМе. А иногда на смешанном коде. Потому что иначе реализовать задуманное НА ЛЮБОЙ платформе не выйдет. Сигнальные приложения требуют либо очень высокой мощности ядра, что делает МК весьма дорогим, либо специфической для задачи архитектуры, что позволяет достичь целей при умеренной цене,но требует некоторого времени на нестандартное алгоритмическое решение. В серьезных задачах собственно разработка алгоритма и написание кода занимают слишком мало места в технологической цепочке выпуска нового изделия, чтобы экономить на них. Зато ущерб от такой "экономии" способен обрушить конечный результат, сделав изделие неконкурентным в близкой и среднесрочной перспективе.
Добавлено after 8 minutes 48 seconds:
Ser60 писал(а):
С часто встречающимся высказыванием, что регистров у Кортексов уйма и в них легко заблудиться не согласен. Да, регистров в них больше, но так могут говорить только те, кто не пробовал, или попробовал лишь в течении часа, или дольше но просто не дано...
Регистров действительно уйма. Но заблудиться в них тому, кто их постоянно использует конечно невозможно. Тем более, что есть даташит. В этом смысле можно любой МК критиковать за объем даташита... Но Вы же как никто другой понимаете, что этот объем прямо пропорционален возможностям МК. Просто нужно его изучить.
Последний раз редактировалось КРАМ Ср янв 04, 2017 07:23:06, всего редактировалось 1 раз.
расстановка регистров по банкам позволяет в подавляющем числе правильно написанных программ практически никогда банки не переключать, оставляя их указатель на нулевом.
Изначально вопрос был в том, почему именно в 0 - м банке, а не в одном и том же. Один и тот же банк может быть и 30 - м банком.
КРАМ писал(а):
Кроме того, этот таймер входит в число регистров которые ВСЕГДА БЫЛИ и ЕСТЬ в МК этой платформы.
Значит возращаемся к моему предположению о историчности. Короче, позвоните в микрочип, вместо того, чтобы переливать из пустого в порожнее.
КРАМ писал(а):
И тут Вы выдумали. Он не в банках путается, а в способах их переключения. Расположение регистров по банкам ему известно назубок.
Ваши мысли не соответствуют Вашим текстам, увы. Последний Ваш коммент тому подтверждение. Кроме жонглирования словами смысла нет. Вообще.
Добавлено after 14 minutes 37 seconds:
sdn_ писал(а):
Изначально вопрос был в том, почему именно в 0 - м банке, а не в одном и том же. Один и тот же банк может быть и 30 - м банком.
Нулевой банк содержит все наиболее употребимые регистры. Туда отнесли не только нулевой таймер, но и порты, регистр флагов, все таймеры и управление таймерами и т.п. То есть минимизированы потуги переключения банков. Вопрос о КОНКРЕТНОМ НОМЕРЕ этого базового банка не обсуждался вообще, но именно этот банк является дефолтным после сброса. Поэтому естественно желание автора вопроса возвращать код на этот нулевой банк.
Можно и слона научить танцевать, но смысл??? Любая РТОС отъедает под себя ресурсы. На ПИК10 всё легко пишется и без РТОС. Че там, дергать тремя ножками без РТОС не получится чтоль?
КРАМ писал(а):
Вы странно пишите НЕ О ТОМ. Речь шла о том, что в структуре управляющих периферийным модулем регистров нужно найти ИМЯ того регистра, который содержит тот самый элемент управления, который необходим. То есть нужно держать в голове изрядное количество АББРЕВИАТУР, либо шнырять по даташиту в поисках оного.
Нет, ну почему же, вы завели разговор про регистры СТМ-а, вот я и пишу про них. Вы посмотрите на возможности СТМ32, вы поймете зачем столько регистров и битов. А запомнить их довольно просто. Например, чтобы настроить порт на вход/выход, нужно обратиться к регистру GPIOA->MODER, а записать в портA число с помощью GPIOA->ODR. Первое слово - группа регистров, второе слово - регистр в группе. В ПИКах с их банками нужно помнить, в каком банке сидит тот или иной регистр модуля. Надо помнить, что регистры порта находятся в разных банках - TRISA и PORTA. Операции с ЕЕПРОМ - эт ваапще скакание по банкам. Биты флагов прерываний вообще раскиданы по разным регистрам, с первого раза не догадаешься. INTCON, PIR1, PIE1...
КРАМ писал(а):
Вы старайтесь думать собственной головой, а не искать шаблоны у чужого дяди...
Если бы я не думал собственной головой, навряд ли я бы работал с чем-то сложнее ПИКов.
КРАМ писал(а):
1. Ассемблер ДЛЯ СЕРЬЕЗНЫХ ЗАДАЧ необходим еще более, чем для простых, а паче даже больше, чем Си. ... А именно они позволяют сделать коммерческое решение конкурентным
Ну уж вы наговорите сейчас. Конкурентоспособным товар делает НЕ ассемблер, а продуманность кода, отсутствие багов и недоработок. Узкоплатформенные решения? А это какие? Какая разница, обращаюсь я к периферии на асме или на си?
КРАМ писал(а):
2. Нащщет количества инструкций Вы не в курсе.
Очень даже в курсе - M4 - более 150, M7 - более 200. А если используете только полтора десятка, то зачем вообще напрягаться на ассемблере.
КРАМ писал(а):
3. Нет никаких "перспективных" платформ
Есть. Без знания Кортекса вас мало куда возьмут. Знание платформы ПИК16 - неперспективно, устаревшая и дорогая платформа. Для любительства сойдет, но тоже дорого. Особенно для любительства. Отваливать за неперспективный PIC16F876A столько же денег, сколько за STM32F103 со всеми наворотами - это кощунство.
КРАМ писал(а):
То есть минимизированы потуги переключения банков
Минимизированы, говорити? Ну-ну. Чего только стоит классическая проверка возникновения прерывания. Флаг прерывания в одном банке, а бит разрешения прерывания - в другом банке. И всё это на фоне единственного вектора прерываний!
_________________ Подпись убрал вместе с автором. aen
Последний раз редактировалось Мурато Мяуконни Ср янв 04, 2017 08:31:55, всего редактировалось 1 раз.
Ассемблер ДЛЯ СЕРЬЕЗНЫХ ЗАДАЧ необходим еще более, чем для простых, а паче даже больше, чем Си.
Здесь не помешает конкретизировать понятие "СЕРЬЕЗНАЯ ЗАДАЧА", а то можно подумать, что на Си вашу задачу эффективно не решить.
Не решить. Для dsPIC33 DSP-команды и команды do/repeat на Си не поддерживаются, а значит реализовать возможности цифровой обработки на недорогом и очень мощном контроллере нет возможности. Либо писать АСМ вставки, либо писать на АСМ все. Последнее оказывается много проще, если учесть необходимость соблюдения соглашений по передаче переменных в смешанном коде и рисков с этим связанных. Практика показывает, что на чистом АСМе я реализую сходню задачу быстрее и эффективнее, чем мои коллеги на смешанном коде. Но есть класс задач, где АСМ не эффективен. Это реализация стеков протоколов, где проще допилить на Си представленный разработчиком референсный код, нежели писать его реализацию на чистом АСМе. Тогда в ход идет смешанный код, если чистый Си не спасает.
Vano79 писал(а):
а примерчик для PIC16 нереализуемости на Си платформозависимых задач для общего развития привели бы.
Вы совершенно исказили смысл сказанного мной. Выше я привел пример нереализуемости на Си. А что касается 16-х, то я говорил об ОДИНАКОВОЙ переносимости в пределах этой платформы как Си, так и АСМа. Читабельность на Си несколько выше, да и то все зависит от манеры написания кода. Быстрый код на Си обычно связан с расчетом указателей, что делает код плохо читаемым.
дергать тремя ножками без РТОС не получится чтоль?
РТОС нужен не для дерганья тремя ножками, а для РАЗДЕЛЕНИЯ РЕСУРСОВ на исполняемые потоки.
Мурато Мяуконни писал(а):
Вы посмотрите на возможности СТМ32, вы поймете зачем столько регистров и битов. А запомнить их довольно просто. Например, чтобы настроить порт на вход/выход, нужно обратиться к регистру GPIOA->MODER, а записать в портA число с помощью GPIOA->ODR. Первое слово - группа регистров, второе слово - регистр в группе.
Я пишу на STM32 и рассказывать мне как и где искать не нужно. Однако попробуйте настроить перекрестную синхронизацию таймеров и Вы уже не будете столь убедительны...
Мурато Мяуконни писал(а):
В ПИКах с их банками нужно помнить, в каком банке сидит тот или иной регистр модуля. Надо помнить, что регистры порта находятся в разных банках - TRISA и PORTA. Операции с ЕЕПРОМ - эт ваапще скакание по банкам. Биты флагов прерываний вообще раскиданы по разным регистрам, с первого раза не догадаешься. INTCON, PIR1, PIE1...
В PIE1 нет никаких флагов. Это регистр разрешений. В INTCON находятся немаскируемые через PEIE прерывания. Это отражает структуру контроллера прерываний. Вы просто не разобрались как это работает в реальном коде. И искать по банкам там ничего не надо. Регистров в 16-х так мало, что запоминается все элементарно.
Мурато Мяуконни писал(а):
Если бы я не думал собственной головой, навряд ли я бы работал с чем-то сложнее ПИКов.
Это Вы на СТМ32 намекаете? Или на ADSP-SHxxx?
Мурато Мяуконни писал(а):
Очень даже в курсе - M4 - более 150
А в чем разница между знаковым или беззнаковым умножением с разными типами адресации? На самом деле это одна и та же команда. На то оно и RISC архитектура. Иначе АЛУ быстрым не сделать.
Мурато Мяуконни писал(а):
Без знания Кортекса вас мало куда возьмут.
Важно не куда возьмут, а сколько потом будут денег платить. А это зависит не от знания Кортексов,а уменя РЕАЛИЗОВАТЬ ПОСТАВЛЕННУЮ ЗАДАЧУ. Вы все про 16-ые ПИКи, да еще и без учета новых чипов, а я про РАЗНЫЕ ПЛАТФОРМЫ вообще. И совсем не обязательно АРМ. Я имел ввиду, что "перспективные" платформы есть лишь у тех, кто хочет сесть на одну лошадь и рулить ей как можно дольше. А это мало чем отличается от ортодоксов 16-х ПИКов. ЗЫ. Кстати, я на 16-х последний проект делал примерно год назад, да и то это была третьестепенная работа.
Добавлено after 2 minutes 4 seconds:
Мурато Мяуконни писал(а):
Недорогом и очень мощном? Ой, да вы шутник однако! серьезно, между прочим. Но это вопрос предпочтений. Кто на чем умеет, на том и делает.
А Вы попробуйте что нибудь сделать на dsPIC33EP512GM304 за 4 доллара и мы посмотрим куда пригоден M3...
Расстановка регистров по банкам позволяет в подавляющем числе правильно написанных программ практически никогда банки не переключать, оставляя их указатель на нулевом. И расположение TMR0 в этом нулевом тому в помощь..
Как бы это помягче сказать то... Вы ооооочень глубоко неправы. Если активно работаете с периферией микроконтроллера, а не делаете простых показывалок с софтовыми интерфейсами, то вам ну никак не удастся оставаться в нулевом банке. Обычная проверка возникновения/разрешения прерывания вас будет гонять между нулевым и первым банком. Работа с интерфейсами или АЦП тоже заставляет активно переключать банки. А уж коль потребление ОЗУ выходит за пределы первого банка, то и подавно. На TMR0 свет клином не сошелся!
КРАМ писал(а):
РАЗДЕЛЕНИЯ РЕСУРСОВ на исполняемые потоки.
Гдеее?? Каких ресурсов? В ПИК10 - каких ресурсов, какие потоки? Таймер да АЦП, 4 МГц. Вот не надо городить ересь там, где решается задача напрямую, без выёживания.
КРАМ писал(а):
STM32 ... Однако попробуйте настроить перекрестную синхронизацию таймеров и Вы уже не будете столь убедительны...
А что там сложного??? Нарисуйте на бумажке схематично связи - и настраивайте, делов то! Да, много регистров, много битов. Но все таймеры порождены от одного TIM1 и отличаются сокращенным набором возможностей. А для системного таймера и нужд РТОС там стоит таймер в ядре. А уж про возможности DMA, да в связке с таймерами, да для аппаратной загрузки значений регистров таймеров - это вообще отдельная песня. Да, объемно, но зато какие возможности.
_________________ Подпись убрал вместе с автором. aen
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения