Мелкие вопросы по МК и ПЛИС.

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18811
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

для поподробнее вам бы к докам обратиться... в MCS-51 часть ячеек ОЗУ имеладвойную адресацию - для обращения к байту и к каждлму из битов. для этих двух видов использовались разные команды. к ОЗУ можно было обратиться косвенно, к битам - нет.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Реклама
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Просто лысый решил поумничать... Не у всех Cortex есть bit banding... в М0 он отсутствует...
================
На мелких проектах и при нынешнем обилии ОЗУ... в битах вообще особого смысла нет...
Для любителей извращений можно посоветовать заюзать неиспользуемые регистры...
Таким макаром МЭЛТ когда-то в своих платах защиту делал... играл на разнице в регистрах МК51 Themic и Philips...
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
Друг Кота
Аватара пользователя
Сообщения: 26053
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Посмотрел.
Это не вполне непосредственная битовая адресация. Скорее это ОТОБРАЖЕНИЕ битовых команд на общее адресное поле.
Все битовые команды сначала попадают в битовый сопроцессор, который расширяет адресное поле для битов.
Фактически это ничем не отличается от битовых команд в архитектурах Атмела и Микрочипа. Там если рассмотреть структуру кода команды, то в ней условно разделены зоны опкода и адреса бита. Но на самом деле выборка происходит побайтно и дешифратор команд преобразует этот адрес бита в МАСКУ.
В этом смысле в 16-разрядном Микрочипе есть и "косвенная адресация" бит через команду BSW. Но собственно к адресации бит она никакого отношения не имеет.
Впрочем, я не вполне пока разобрался с архитектурой адресации бит в АРМ-Кортекс, вполне возможно, что и там это по сути псевдоадрес....
HHIMERA писал(а):Просто лысый решил поумничать... Не у всех Cortex есть bit banding... в М0 он отсутствует...
================
На мелких проектах и при нынешнем обилии ОЗУ... в битах вообще особого смысла нет...
Ну уж куда мне до Ххимеры... :wink:
Правда некоторые математические операции требуют побитовой обработки ОДНОГО слова, но это так... к слову... :wink:
И размер ОЗУ тут вообще ни к селу, ни к городу...
Если в кодах Хемминга требуется перестановка бит в ПОТОКЕ данных, то отсутствие адресации бит ЗАМЕДЛЯЕТ обработку...
Да и Бог с ним, с Хэммингом... Обработка графических полей для монохромных LCD превращается в громоздкий индусский код...

ЗЫ. К вопросу об универсальности копеечных М0. При отсутствии битовых команд и битового расширения адресов любая битовая команда превращается в НАБОР команд. Тогда и заявленная производительность - фикция...
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

КРАМ писал(а):Правда некоторые математические операции требуют побитовой обработки ОДНОГО слова, но это так... к слову... :wink:
Разве что к слову... пустому...
В М0 битовые операции повеселее... чем в том же АВР...
И размер ОЗУ тут вообще ни к селу, ни к городу...
Та да... 256 байт вполне хватит... :facepalm:
Если в кодах Хемминга требуется перестановка бит в ПОТОКЕ данных, то отсутствие адресации бит ЗАМЕДЛЯЕТ обработку...
Да и Бог с ним, с Хэммингом... Обработка графических полей для монохромных LCD превращается в громоздкий индусский код...
От незнания к вере???
Для монохромных дисплеев скорости М0 уж по любому хватает... там видео не требуется...
К вопросу об универсальности копеечных М0. При отсутствии битовых команд и битового расширения адресов любая битовая команда превращается в НАБОР команд. Тогда и заявленная производительность - фикция...
Фикция - это не разобравшись в архитектуре пытаться давать умные советы...
М0 это заменитель восьмибиток... и надо сказать - хороший заменитель... Всё остальное от незнания или непонимания... т.е. пустой трёп...
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

...любая битовая команда превращается в НАБОР команд...
не хуже чем AVR.
Cortex M0:

Код: Выделить всё

volatile uint32_t Flags;
#define BLINK   0x00000004
   Flags ^= BLINK;

   LDR      r1,[r4,#8]  ; Flags
   MOVS     r2,#4
   EORS     r1,r1,r2
   STR      r1,[r4,#8]  ; Flags
AVR:

Код: Выделить всё

volatile unsigned char Flags;
#define BLINK   0x04
  Flags ^= BLINK;

  LDI     R16, 4
  LDI     R30, LOW(Flags)
  LDI     R31, (Flags) >> 8
  LD      R17, Z
  EOR     R17, R16
  ST      Z, R17
STM8:

Код: Выделить всё

        LD        A, L:Flags
        XOR       A, #0x4
        LD        L:Flags, A
Реклама
Друг Кота
Аватара пользователя
Сообщения: 26053
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Ващето вывод одного бита при правильно написанном коде компилируется как ОДНА команда...
А в Кортексах не менее трех, да и то при наличии битовой адресации...
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

а как "правильно написать" такой код, пример пожалуйста. В PIC16 да:

Код: Выделить всё

bit BLINK;
  BLINK=~BLINK;

  movlw	(0+1) shl (_BLINK& (0+7))
  xorwf	_BLINK/(0+8),f
а Cortex высокоэффективный 3-ступенчатый конвейер (или 2-х), с предсказанием ветвлений не спасает?
Последний раз редактировалось oleg110592 Сб апр 12, 2014 18:39:20, всего редактировалось 1 раз.
Друг Кота
Аватара пользователя
Сообщения: 26053
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Сами и ответили на свой вопрос...
:)
В 10...16-х на выходе будет две команды movlw <#mask> и xorwf <register>
В 18-х и 24-х одна команда btg <register, #bit>

Просто вывод вида а |= 0x01<<3 превращается в bsf a, 3

PS. Обсуждались не преимущества Кортекса, а битовая адресация... :wink:
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

КРАМ писал(а):Обсуждались не преимущества Кортекса, а битовая адресация... :wink:
А что там обсуждать??? Уже разобрались...
А по поводу "преимущества Кортекса"... так это очевидно... несмотря на все попытки...
Для примера... реверс битов (разворот) байта...
b = __REV(__RBIT(a));
Во что это выльется в АВР или ПИК???
"Я не даю готовых решений, я заставляю думать!"(С)
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

обсуждались не преимущества Кортекса, а битовая адресация...
напугала фраза:
При отсутствии битовых команд и битового расширения адресов любая битовая команда превращается в НАБОР команд. Тогда и заявленная производительность - фикция...
проверил как с этим у других мк - круче в этом только пики. У меня, в моих программках мало работы с битами - кортексы рулят.
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

oleg110592 писал(а):круче в этом только пики. У меня, в моих программках мало работы с битами - кортексы рулят.
Да не ведись... Марк троллит по незнанию и в расчёте на незнание...
Инверсия бита самая невостребованная операция... а при групповых операциях кортексы рулят однозначно... Тут примеров можно кидать и кмдать...
"Я не даю готовых решений, я заставляю думать!"(С)
Друг Кота
Аватара пользователя
Сообщения: 26053
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

"Глубокая мысль" в том, что байтный доступ в МК - одно из основных свойств его как УПРАВЛЯЮЩЕГО устройства.
Поэтому и в ПИКах и в АРМах и в АВР создан общий инструмент.
И в АРМах механизм битной адресации дает большое удобство при обработке больших БИТНЫХ массивов.
Последний раз редактировалось КРАМ Сб апр 12, 2014 21:26:51, всего редактировалось 1 раз.
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

:facepalm:
"Вы не любите кошек? Да вы их просто готовить не умеете!"(С)
КРАМ писал(а):Ващето вывод одного бита при правильно написанном коде компилируется как ОДНА команда...
А в Кортексах не менее трех, да и то при наличии битовой адресации...
Чушь!!! От архитектуры Cortex это никак не зависит... у Cortex тоже "вывод одного бита при правильно написанном коде компилируется как ОДНА команда"... а в F2XX и F4XX ещё и выполняется за ОДИН такт!!! Учи матчасть!!! :)))
"Я не даю готовых решений, я заставляю думать!"(С)
Друг Кота
Аватара пользователя
Сообщения: 26053
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Собственно вывод бита - одна, но расчет адреса доступа - еще две, умножение и сложение...
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Не надо путать "тёплое с мягким"!!!
Load/Store - это архитектура... а периферия - производитель... При длинном выводе на F2XX один цикл - установка, один цикл - сброс... выходная частота - половина от тактирующей... У F0XX - два цикла - установка, два цикла - сброс... выходная частота - четверть от тактирующей...
Следуя твоим измышлениям - частота, как минимум, должна быть раз в шесть меньше... что не наблюдается...
"Я не даю готовых решений, я заставляю думать!"(С)
Друг Кота
Аватара пользователя
Сообщения: 26053
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Не надо путать теплое с синим...
:wink:
Под выводом я понимаю ЛЮБОЙ вывод, в том числе и в ОЗУ. А ОЗУ тактируется на частоте ядра.
Имея ввиду архитектуру, я говорю об ОТСУТСТВИИ битных команд В ПРИНЦИПЕ. Эти команды заменены на атомарный доступ в ОБЩЕМ адресном поле.
Либо через маску.
И собственно вывод мало кого интересует. Прежде надо АДРЕСОВАТЬ его. Формально, получив один адрес, можно зациклить вывод и получить идентичную 24-му Микрочипу частоту на ноге или в бите ОЗУ, но в линейном коде этот фокус не выйдет.

ЗЫ. И зря ты ломишься в открытую дверь, доказывая непонятно кому про рулез кортексов. Я вполне себе представляю область их применения, где им конкурентов найти трудно.
ЗЗЫ. Есть еще одна особенность архитектуры кортексов, которая мне показалась странной после ПИКов. Это отсутствие непосредственной адресации ОЗУ во всех командах кроме команд загрузки... Я конечно понимаю, что бОльшая часть данных обрабатывается как массивы и проблем особых в этом нет, но "осадочек остался"... :))) (это я так троллю) :music:
:)))
ЗЗЗЫ. Чиста мнение. Не слишком удобной оказалась и архитектура осциллятора. Формально схема синтеза тактовой частоты такая же, как в dsPIC33:
Fcy=Fxtal*M/(PREDIV*DIV1),
но из-за ограничения выходной частоты PLL диапазоном 16...48 (для F0xx) фактически второй делитель невозможно использовать при необходимости иметь частоту близкую к максимальной....
Chettuser

Сообщение Chettuser »

Не пойму я Вас обоих, один про dsPIC, второй про PIC32 - что к чему? Совершенно разные камни...
Друг Кота
Аватара пользователя
Сообщения: 26053
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Сообщение КРАМ »

Не, один про кортекс, а другой про пик32.
Причем тот, что про пик32, пытается доказать, что Микрочип с лицензированной МИПС глупее тех, кто лицензировал АРМ...
Зачем он это делает? Не знаю... :dont_know:
Родился
Сообщения: 1
Зарегистрирован: Вс апр 13, 2014 11:29:41

Сообщение andrei11 »

можно ли к одному порту ардуино уно подключить 8 светодиодов?
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Дык... в узкозаточенной задаче другой МК может и лучше ляжет... здесь никто и не спорит...
А вот как МК для широкого применения... для эмбедда и домашних поделок... STM8 и STM32 очень хороши... по всем параметрам... :music:
Но я ничего не навязываю... Просто после ПИК и АВР... на STM чувствуешь себя как-то свободно и раскованно... многие задачи решаются легко и играючись... С ними просто приятно работать...
"Я не даю готовых решений, я заставляю думать!"(С)
Ответить

Вернуться в «Разные вопросы по МК»