Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 13.08.2018, 18:12  
scorpi_0n
Прописка
 
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
scorpi_0n на пути к лучшему
По умолчанию 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-е всё настолько плохо, что "аж кушать не могу".
Реклама:
scorpi_0n вне форума  
Непрочитано 18.08.2018, 01:42  
Passer_by
Частый гость
 
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
Passer_by на пути к лучшему
По умолчанию 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;
по сравнению с,
Код:
BCLR FlagReg, #7
скомпилированным из
Код:
PIDCalcFl=0;
у PIC24.
И еще.
Если бы пример, приведенный для PIC-а "скормить" Cortex-у, то его код был бы значительно длиннее.
В представленных благородной публике примерах наглядно видна неатомарность работы с битами у Cortex-ов. Т.е. модификация бита у PIC24 выполняется за одну команду, в отличие от 5 у Cortex-а.
И если в течение этих 5 команд этот же бит будет модифицирован, например, в обработчике прерывания, то результат станет непредсказуемым.
Passer_by вне форума  
Непрочитано 18.08.2018, 02:44  
Passer_by
Частый гость
 
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
Passer_by на пути к лучшему
По умолчанию 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.
Passer_by вне форума  
Непрочитано 18.08.2018, 10:27  
scorpi_0n
Прописка
 
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
scorpi_0n на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Непонятен смысл ваших сравнений. Тем более, что все это было уже неоднократно. Ну и что дальше?
scorpi_0n вне форума  
Непрочитано 18.08.2018, 10:31  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,485
Сказал спасибо: 401
Сказали Спасибо 2,215 раз(а) в 1,313 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Цитата:
То, что привели Вы - не является командами работы с битами.
Вы наверно плохо понимаете по-английски?
Даже в PIC16 прямая работа с битами через инструкции bfc PORTA, 1 происходит через алгогитм read-modify-write и чревата крайне неприятными последствиями в виде обнуления всего порта.

Ну если уж на то пошло, то а я вам скажу, что например для GPS или GSM лучше всего подходит процессор Mediatek, на котором сделан широкоизвестный GSM-модуль SIM800. И никакой микроконтроллер там не справится лучше.
А по аналоговой части есть у Analog Devices решения и получше PIC-ов. 24-битные АЦП с дифференциальными входами, программируемые ОУ. Так что этому вашему PIC16F1779 даже и близко не подпрыгнуть до таких высот. Чего это вы думаете, что PIC16F1779 - "лучшее решение"? Это лично вам кажется так, потому что он лично для вас доступен.

К тому же вы приводите сравнение с Cortex M0, имеющим самый минимальный из Кортексов набор инструкций. Разница между младшим и старшим Кортексом - в два раза. И как раз в том числе и по битовым операциям, тут даже раз в пять.
Дак еще и сравниваете разные компиляторы, да еще возможно с разными уровнями оптимизации, по-разному преобразующие сишный код. Надо тогда уж руками на ассемблере писать, чтобы сравнить наборы инструкций.
А если вам надо эффективно дрыгать ногами, то ничто не сравнится с ПЛИС, потому что это набор логических элементов в чистом виде.

Посему, наша критика ваших "разоблачений" совершенно справедливая! Мы не согласны с вами и не собираемся принимать ваши "киселевские доказательства", потому что поверхностны и основываются на ваших очень и очень субъективных оценках.
Как говорится, "мнение редакции может не совпадать с мнением авторов статей".

Последний раз редактировалось NewWriter; 18.08.2018 в 10:38.
NewWriter вне форума  
Непрочитано 18.08.2018, 13:45  
Passer_by
Частый гость
 
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
Passer_by на пути к лучшему
По умолчанию 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-ов.
Passer_by вне форума  
Непрочитано 18.08.2018, 14:06  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,485
Сказал спасибо: 401
Сказали Спасибо 2,215 раз(а) в 1,313 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Passer_by Посмотреть сообщение
Покажите мне команды Cortex, которые:
Вы наверно плохо умеете читать по-английски? Да и по-русски тоже, судя по всему, не рубите. Я ж всё написал, все плюсы и минусы. Вы просто не читали. Чукча - не читатель.
Остальные ваши измышления - попросту не принимаются. По описанным тоже причинам.

Сообщение от Passer_by Посмотреть сообщение
С чем конкретно Вы несогласны? По пунктам.
Кажись, я написал. Иль вы тупой вумать, что не рубите даже по-русски, извините за выражение? Дважды одно и тоже я не привык повторять. Всё я нормально обсказал, картинки показал, чеж еще, сударь, вам надо, а?
Так что завязывайте уже пздеть, чувак, просто уже зае-л ваш поток самосоздания.

Сообщение от Passer_by Посмотреть сообщение
Да и раньше, опасность была сильно преувеличена.
уууу... да... Слуште, мы (большинство из нас), этого RMW обожрались в свое время до усрачки, извините за мой французский. Спросите тех, кто постарше вас лет эдак на 7-10 (в плане работы с МК). В то время каждый знал, что если там, где включены аналоговые входы на порту, пытаться дергать отдельную ножку, весь порт сбросится в ноль. Вы, видимо, недавно пришли в сферу МК, посему таких приколов не застали.
Однопортовый PIC12F675 вам для экпериментов. Попробуйте даже в Протеусе.

Последний раз редактировалось NewWriter; 18.08.2018 в 14:14.
NewWriter вне форума  
Непрочитано 18.08.2018, 15:29  
Passer_by
Частый гость
 
Регистрация: 05.08.2018
Сообщений: 29
Сказал спасибо: 0
Сказали Спасибо 15 раз(а) в 7 сообщении(ях)
Passer_by на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от NewWriter Посмотреть сообщение
Так что завязывайте уже пздеть, чувак, просто уже зае-л ваш поток самосоздания.
Как все плохо... Количество неадекватов зашкаливает.
Похоже, апологет STM32 - это диагноз.
Мальчики и девочки, не связывайтесь с STM32 - они плохо влияют на психику и адекватное восприятие мирового устройства...
Полностью отбивается критическое мышление, появляется зависимость от рекламы продукта лишь одного производителя. Да и продукт в ряду прочих не самый выдающийся.
За сим прощаюсь.
Passer_by вне форума  
Непрочитано 18.08.2018, 15:58  
NewWriter
Почётный гражданин KAZUS.RU
 
Аватар для NewWriter
 
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,485
Сказал спасибо: 401
Сказали Спасибо 2,215 раз(а) в 1,313 сообщении(ях)
NewWriter на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Да нет, это у вас неадекватное восприятие - вы не умеете читать.
Cortex - это не только STM32, но и PIC тоже! И AVR тоже, да и TI, и AD, и еще докучи всяких. Были бы Кортексы такими плохими, их бы не ставили столько. STM32 просто самый удобный по цене. Как раз к вопросу цены.
Софт для Кортексов зависит от того, в какой МК он портирован. Для STM32 он совершенно бесплатен. Для STM32F0 давно уже бесплатен Кейл. Недавно вышла полнофункциональная бесплатная версия Atollic.
Нынче без знания Кортексов - никуда. Но если вам нравится PIC24/32 - вы конечно же можете работать исключительно с ними. Вас никто не отговаривает. Выиграли вы пару инструкций на битовых операциях - ну и возрадуйтесь. Зато в других операциях проиграете.
NewWriter вне форума  
Непрочитано 18.08.2018, 18:59  
dgrishin
Почётный гражданин KAZUS.RU
 
Регистрация: 12.02.2013
Сообщений: 1,015
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
dgrishin на пути к лучшему
По умолчанию Re: Изучаем STM32 Cortex M3

Сообщение от Passer_by Посмотреть сообщение
Как все плохо... Количество неадекватов зашкаливает.
Вспомнился анекдот про двух лягушек...
Встречаются значит они и одна другую спрашивает - слушай, ты случайно не было на болоте за Тридевятым Царством ??
Неа, отвечает другая.
Ну и правильно, отвечает первая. Там такое блядство, такое блядство.
Вчера ходила - поимели, сегодня ходила - поимели и завтра снова пойду...
dgrishin вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Школа АRMрестлинга Uragan90 Микроконтроллеры, АЦП, память и т.д 54 22.08.2011 16:13
ARM Cortex M3 + Linux SiMiLya Микроконтроллеры, АЦП, память и т.д 10 17.06.2011 17:20
Помогите с STM32 - очень нужно... yakuzaa Микроконтроллеры, АЦП, память и т.д 60 04.08.2010 11:04
Как добавить поддержку для STM32 SFHK Микроконтроллеры, АЦП, память и т.д 11 18.12.2009 18:09


Часовой пояс GMT +4, время: 03:19.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot