13.08.2018, 18:12
|
|
Прописка
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Passer_by
|
Теперь уже моя очередь удивляться...
|
Лучше почитайте K&R. Нет типа данных "бит" в Си. Байт есть, слово и полуслово тоже есть, а бит - отсутствует как таковой.
Сообщение от Passer_by
|
Обращение к биту
|
Ну и где у вас там тип данных "бит"?
Сообщение от Passer_by
|
Атомарность должен обеспечить разработчик микроконтроллера.
|
Да что-то много чего именно только вам все и должны. Вам не кажется это подозрительным?
Сообщение от Passer_by
|
А нужна она мне, или только желательна - второй вопрос.
|
Купите себе АРМ, целиком, и решите этот, неудобный для вас, вопрос окончательно. Заодно и половину вселенной, пусть звёзды светят только вам.
Сообщение от Passer_by
|
Основная задача микроконтроллера - как раз "ногодрыг" (ШИМодрыг, АЦПдрыг, SPIдрыг и прочий дрыг) в жестком реалтайме. А уж чего там внутри 8, 16, или 32 бита не имеет никакого значения.
|
Тогда вам только один путь - обратно на PIC-и. ARM со своей архитектурой не позволит вам достигнуть жёстких таймингов при ногодрыге, об этом уже сто раз говорили даже в этой теме. Можете не стараться и не тратить своё драгоценное время, как и время других.
Сообщение от Passer_by
|
В этом МК эта проблема значительно актуальнее, чем в других, поскольку приводит к ошибкам, которые очень трудно отлавливать.
|
Дело не в этом МК, совсем. Дело в вас, в ваших незнаниях и в ваших закостенелых неправильных привычках. Но вы можете продолжать идти своим привычным путём, доказывая всем и вся, что в ARM-е всё настолько плохо, что "аж кушать не могу".
|
|
|
|
18.08.2018, 01:42
|
|
Частый гость
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от NewWriter
|
Ошибаетесь. Этих команд - полтора десятка штук. Хотите взглянуть?
Вот половина из них:
|
Речь не идет о PIC16, речь о PIC24 и dsPIC.
То, что привели Вы - не является командами работы с битами.
Методы адресации операндов у этих ЦПУ те же, что и у CORTEX-ов.
Итак, сравниваем.
Cortex M0 C
Код:
|
if(!Flags.FlagBits.TelegrTimFl)
{
if(TelegrTimer==0)
Flags.FlagBits.TelegrTimFl=1;
else
TelegrTimer--;
} |
Дизассемблер того же самого.
Код:
|
347: if(!Flags.FlagBits.TelegrTimFl)
348: {
0x08000E9A 6810 LDR r0,[r2,#0x00]
0x08000E9C 0481 LSLS r1,r0,#18
0x08000E9E D405 BMI 0x08000EAC
349: if(TelegrTimer==0)
350: Flags.FlagBits.TelegrTimFl=1;
351: else
0x08000EA0 4B0F LDR r3,[pc,#60] ; @0x08000EE0
0x08000EA2 6FD9 LDR r1,[r3,#0x7C]
0x08000EA4 2900 CMP r1,#0x00
0x08000EA6 D066 BEQ 0x08000F76
352: TelegrTimer--;
353: }
0x08000EA8 1E49 SUBS r1,r1,#1
0x08000EAA 67D9 STR r1,[r3,#0x7C]
.....
0x08000F76 E022 B 0x08000FBE
.....
0x08000FBE 2101 MOVS r1,#0x01
0x08000FC0 0349 LSLS r1,r1,#13
0x08000FC2 4308 ORRS r0,r0,r1
0x08000FC4 6010 STR r0,[r2,#0x00]
0x08000FC6 E771 B 0x08000EAC |
dsPIC33E (оно же PIC24) C
Код:
|
#define PIDCalcFl FlagReg.Bits.Flag7
#define T10msFl FlagReg.Bits.Flag10
......
if(!AlmReg.AlmBits.StartBit)
{
PIDCalcFl=0;
if(T10msFl)
AlmReg.AlmBits.StartBit=1;
return;
} |
dsPIC33E (оно же PIC24) дизассемблер
Код:
|
1241: if(!AlmReg.AlmBits.StartBit)
0016A6 808350 MOV AlmReg, W0
0016A8 A35800 BTST.Z W0, #5
0016AA 3A0005 BRA NZ, .L239
1242: {
1243: PIDCalcFl=0;
0016AC A9F05C BCLR FlagReg, #7
1244: if(T10msFl)
0016AE AB505D BTST 0x105D, #2
0016B0 320236 BRA Z, .L238
1245: AlmReg.AlmBits.StartBit=1;
0016B2 A8B06A BSET AlmReg, #5
0016B4 370234 BRA .L238
1246: return;
1247: } |
Обратите внимание на команды BTST, BCLR, которых в принципе нет у Cortex M0.
Особо у Cortex-а улыбнуло вот это:
Код:
|
MOVS r1,#0x01
LSLS r1,r1,#13
ORRS r0,r0,r1
STR r0,[r2,#0x00]
B 0x08000EAC |
в ответ на простую строчку на С
Код:
|
AlmReg.AlmBits.StartBit=1; |
по сравнению с,
скомпилированным из
у PIC24.
И еще.
Если бы пример, приведенный для PIC-а "скормить" Cortex-у, то его код был бы значительно длиннее.
В представленных благородной публике примерах наглядно видна неатомарность работы с битами у Cortex-ов. Т.е. модификация бита у PIC24 выполняется за одну команду, в отличие от 5 у Cortex-а.
И если в течение этих 5 команд этот же бит будет модифицирован, например, в обработчике прерывания, то результат станет непредсказуемым.
|
|
|
|
18.08.2018, 02:44
|
|
Частый гость
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от NewWriter
|
Passer_by, вообще-т, я чет не врубаюсь - вам не нравится ARM-ядро?
|
Мне нравятся все ядра. Cortex в том числе. Особенно, когда там есть DMA.
А еще больше, когда он стоит значительно меньше доллара. Например, STM32F030F4P6...
Никто не спорит о том, что для задач транспорта данных STM32 подходит лучше всего. Там это дело можно решить практически аппаратно. И если бы Ваше сообщество не набросилось на меня за вполне справедливую и хорошо аргументированную критику этого семейства, я бы продолжил и привел рабочий пример полностью дуплексного транспорта данных по SPI через DMA для STM32F0. Поверьте, там есть сложности, связанные с наличием 4-х байтного приемного и передающего FIFO буферов.
Но если их преодолеть - наступает полное счастье, поскольку практически весь SPI переводится на аппаратный уровень за исключением "ногодрыга" выводом CS партнера шины, если МК ведущий. Такой подход позволяет "увести" обмен с EEPROM, к примеру, в "тень" и не "отвлекать" на это дело CPU, который в это время может решать другие задачи.
Если подводить итог, то каждому овощу - свой, вполне конкретный салат.
Тот же PIC16F1779, например, наилучшим образом подходит для аналого-цифровых систем. И никакой ARM не заменит его 4 усилителя, 8 компараторов, 8 ЦАП-ов, генератор рампы, 2 встроенных выходных каскада, способных отдать по 100 мА каждый и много чего еще за вполне вменяемые деньги. И широкий (от 2 до 5 В) диапазон питания. Но это другая тема, касающаяся моделирования подобных систем.
Последний раз редактировалось Passer_by; 18.08.2018 в 03:16.
|
|
|
|
18.08.2018, 10:27
|
|
Прописка
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Непонятен смысл ваших сравнений. Тем более, что все это было уже неоднократно. Ну и что дальше?
|
|
|
|
18.08.2018, 10:31
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Цитата:
|
То, что привели Вы - не является командами работы с битами.
|
Вы наверно плохо понимаете по-английски?
Даже в PIC16 прямая работа с битами через инструкции bfc PORTA, 1 происходит через алгогитм read-modify-write и чревата крайне неприятными последствиями в виде обнуления всего порта.
Ну если уж на то пошло, то а я вам скажу, что например для GPS или GSM лучше всего подходит процессор Mediatek, на котором сделан широкоизвестный GSM-модуль SIM800. И никакой микроконтроллер там не справится лучше.
А по аналоговой части есть у Analog Devices решения и получше PIC-ов. 24-битные АЦП с дифференциальными входами, программируемые ОУ. Так что этому вашему PIC16F1779 даже и близко не подпрыгнуть до таких высот. Чего это вы думаете, что PIC16F1779 - "лучшее решение"? Это лично вам кажется так, потому что он лично для вас доступен.
К тому же вы приводите сравнение с Cortex M 0, имеющим самый минимальный из Кортексов набор инструкций. Разница между младшим и старшим Кортексом - в два раза. И как раз в том числе и по битовым операциям, тут даже раз в пять.
Дак еще и сравниваете разные компиляторы, да еще возможно с разными уровнями оптимизации, по-разному преобразующие сишный код. Надо тогда уж руками на ассемблере писать, чтобы сравнить наборы инструкций.
А если вам надо эффективно дрыгать ногами, то ничто не сравнится с ПЛИС, потому что это набор логических элементов в чистом виде.
Посему, наша критика ваших "разоблачений" совершенно справедливая! Мы не согласны с вами и не собираемся принимать ваши "киселевские доказательства", потому что поверхностны и основываются на ваших очень и очень субъективных оценках.
Как говорится, "мнение редакции может не совпадать с мнением авторов статей".
Последний раз редактировалось NewWriter; 18.08.2018 в 10:38.
|
|
|
|
18.08.2018, 13:45
|
|
Частый гость
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от NewWriter
|
Вы наверно плохо понимаете по-английски?
Даже в PIC16 прямая работа с битами через инструкции bfc PORTA, 1 происходит через алгогитм read-modify-write и чревата крайне неприятными последствиями в виде обнуления всего порта.
|
Покажите мне команды Cortex, которые:
- устанавливают одиночный бит в любом слове в памяти данных,
- сбрасывают одиночный бит там же,
- проверяют одиночный бит,
- меняют состояния одиночного бита на противоположный,
- загружают одиночный бит из слова памяти данных в регистр состояния процессора.
Про алгоритм read-modify-write Ваши сведения устарели. Да и раньше, опасность была сильно преувеличена. При соблюдении элементарных правил ничего страшного не происходило.
Сообщение от NewWriter
|
А по аналоговой части есть у Analog Devices решения и получше PIC-ов. 24-битные АЦП с дифференциальными входами, программируемые ОУ. Так что этому вашему PIC16F1779 даже и близко не подпрыгнуть до таких высот. Чего это вы думаете, что PIC16F1779 - "лучшее решение"? Это лично вам кажется так, потому что он лично для вас доступен.
|
Где я сказал, что PIC16F1779 - лучшее решение? Оно оптимальное по критериям доставабильность, цене, возможностям. Изделия от AD продаются по цене бриллиантов. Лучше бы уж 32-bit Arm® Cortex®-M0 PSoC® 4 от Cypress привели. Там хоть цена приемлемая, хотя доставабельность нулевая. И софт разработчика - даром.
Сообщение от NewWriter
|
К тому же вы приводите сравнение с Cortex M0, имеющим самый минимальный из Кортексов набор инструкций. Разница между младшим и старшим Кортексом - в два раза. И как раз в том числе и по битовым операциям, тут даже раз в пять.
|
Дык, по цене старшего Cortex-а я возьму dsPIC33CH, если мне такое понадобится.
Сообщение от NewWriter
|
Дак еще и сравниваете разные компиляторы, да еще возможно с разными уровнями оптимизации, по-разному преобразующие сишный код. Надо тогда уж руками на ассемблере писать, чтобы сравнить наборы инструкций.
|
Компилятор для Cortex M0 ARM Compiler 5 V1.4.0 с уровнем оптимизации -О1. Ключи:
Код:
|
--c99 --gnu -c --cpu Cortex-M0 -g -O1 --apcs=interwork --split_sections
-I |
Компилятор для PIC - XC16 V1.33 с уровнем оптимизации -О1. Ключи:
Код:
|
-g -O1 -msmart-io=1 -Wall -msfr-warn=off |
Компилятор от Keil - один из самых лучших для Cortex-ов.
Точно так же, как и XC16 для PIC-ов.
Так что сравнение вполне корректное. И не в пользу Cortex-ов.
Сообщение от NewWriter
|
А если вам надо эффективно дрыгать ногами, то ничто не сравнится с ПЛИС, потому что это набор логических элементов в чистом виде.
|
Вы цену на простейший кристалл CPLD, хоть от Xlinx, хоть от Intel(Altera) когда в последний раз просматривали?
Сообщение от NewWriter
|
Посему, наша критика ваших "разоблачений" совершенно справедливая! Мы не согласны с вами и не собираемся принимать ваши "киселевские доказательства", потому что поверхностны и основываются на ваших очень и очень субъективных оценках.
Как говорится, "мнение редакции может не совпадать с мнением авторов статей".
|
С чем конкретно Вы несогласны? По пунктам. С примерами, как у меня.
С указанием на проявления субъективности в моих примерах.
И еще. Софт разработчика для Cortex-ов очень даже платный, в отличие от PIC-ов.
|
|
|
|
18.08.2018, 14:06
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Passer_by
|
Покажите мне команды Cortex, которые:
|
Вы наверно плохо умеете читать по-английски? Да и по-русски тоже, судя по всему, не рубите. Я ж всё написал, все плюсы и минусы. Вы просто не читали. Чукча - не читатель.
Остальные ваши измышления - попросту не принимаются. По описанным тоже причинам.
Сообщение от Passer_by
|
С чем конкретно Вы несогласны? По пунктам.
|
Кажись, я написал. Иль вы тупой вумать, что не рубите даже по-русски, извините за выражение? Дважды одно и тоже я не привык повторять. Всё я нормально обсказал, картинки показал, чеж еще, сударь, вам надо, а?
Так что завязывайте уже пздеть, чувак, просто уже зае-л ваш поток самосоздания.
Сообщение от Passer_by
|
Да и раньше, опасность была сильно преувеличена.
|
уууу... да... Слуште, мы (большинство из нас), этого RMW обожрались в свое время до усрачки, извините за мой французский. Спросите тех, кто постарше вас лет эдак на 7-10 (в плане работы с МК). В то время каждый знал, что если там, где включены аналоговые входы на порту, пытаться дергать отдельную ножку, весь порт сбросится в ноль. Вы, видимо, недавно пришли в сферу МК, посему таких приколов не застали.
Однопортовый PIC12F675 вам для экпериментов. Попробуйте даже в Протеусе.
Последний раз редактировалось NewWriter; 18.08.2018 в 14:14.
|
|
|
|
18.08.2018, 15:29
|
|
Частый гость
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от NewWriter
|
Так что завязывайте уже пздеть, чувак, просто уже зае-л ваш поток самосоздания.
|
Как все плохо... Количество неадекватов зашкаливает.
Похоже, апологет STM32 - это диагноз.
Мальчики и девочки, не связывайтесь с STM32 - они плохо влияют на психику и адекватное восприятие мирового устройства...
Полностью отбивается критическое мышление, появляется зависимость от рекламы продукта лишь одного производителя. Да и продукт в ряду прочих не самый выдающийся.
За сим прощаюсь.
|
|
|
|
18.08.2018, 15:58
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Да нет, это у вас неадекватное восприятие - вы не умеете читать.
Cortex - это не только STM32, но и PIC тоже! И AVR тоже, да и TI, и AD, и еще докучи всяких. Были бы Кортексы такими плохими, их бы не ставили столько. STM32 просто самый удобный по цене. Как раз к вопросу цены.
Софт для Кортексов зависит от того, в какой МК он портирован. Для STM32 он совершенно бесплатен. Для STM32F0 давно уже бесплатен Кейл. Недавно вышла полнофункциональная бесплатная версия Atollic.
Нынче без знания Кортексов - никуда. Но если вам нравится PIC24/32 - вы конечно же можете работать исключительно с ними. Вас никто не отговаривает. Выиграли вы пару инструкций на битовых операциях - ну и возрадуйтесь. Зато в других операциях проиграете.
|
|
|
|
18.08.2018, 18:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.02.2013
Сообщений: 1,047
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Passer_by
|
Как все плохо... Количество неадекватов зашкаливает.
|
Вспомнился анекдот про двух лягушек...
Встречаются значит они и одна другую спрашивает - слушай, ты случайно не было на болоте за Тридевятым Царством ??
Неа, отвечает другая.
Ну и правильно, отвечает первая. Там такое блядство, такое блядство.
Вчера ходила - поимели, сегодня ходила - поимели и завтра снова пойду...
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:37.
|
|