Перейти к содержанию
    

adnega

Свой
  • Постов

    3 603
  • Зарегистрирован

  • Посещение

  • Победитель дней

    3

Весь контент adnega


  1. Можете подробнее рассказать о них? Это не норма, такие вещи нужно делать аппаратно и/или подбирать соответствующее аппаратное решение. Я уже 10 лет не пользуюсь запретом/разрешением прерываний, а проектов сделал очень много. ЧЯДНТ?
  2. Jenya7, вы по все видимости начинающий разработчик - прислушайтесь к советам опытных МК-программистов. Зачем вам аппаратный таймер, если вы от него даже прерываний боитесь? Это две крайности. Нужно сделать аппаратный таймер для счета программного счетчика с интервалом 1 или 10 мс. Затем все миллисекундные задержки и выше делать программно. Только так. Если у вас какая-то неприязнь к такому решению, то вы в чем-то заблуждаетесь - можете высказать свои "фи", и мы вас переубедим. Повторюсь, у Cortex-ов есть специальный таймер SysTick, и 99% проектов использует его для миллисекундных и выше задержек, с программным отсчетом времени. Задержки на микросекунды и ниже уже могут потребовать аппаратный таймер. Использование аппаратного таймера жестко привязывает проект к данной архитектуре и данному камню - проект будет слабо переносимым и склонным к аппаратным конфликтам с другими библиотеками и т.п. Насколько я понимаю, ТС хочет сделать некую инициализацию, чтоб потом вычитывать из некого регистра число, равное числу миллисекунд. Желательно, чтоб регистр был 32-битным. Вроде, у LPC17xx таймеры были 32 битными с 32-битным предделителем. У Cortex-M есть NVIC, который может делать вложенные прерывания с приоритетами. Если 32-битная переменная выровненная, то доступ к ней будет атомарным. Но я так понял, что из счетчика миллисекунд бы будете только вычитывать.
  3. У ТС именно "мили". Нужно понять что это значит.
  4. У меня давно подозрения к данному участнику. Периодически тут появляются всякие Николаи Семеновичи с 30 летним опытом, с 30тыр зарплатой, тысячами написанных программ и сотнями разработанных надежных устройств. Но ни одного доказательства показать не могут. ;)
  5. Перевожу: есть 24-битный вычитающий таймер. Когда он досчитает до нуля, то перегружается значением из SYST_RVR. Таким образом можно получить периодические прерывания, а в них уже работать с софтовыми интервалами. Обращаю внимание на бит CLKSOURCE регистра SYST_CSR. Он выбирает источник тактирования. У STM32, например, можно тактировать от HCLK или HCLK / 8 за счет этого бита.
  6. Может, поискать в документации? Там все очевидно: и источник, и делитель.
  7. Ничего страшного. Я обычно делаю 10 мс, но при помощи SysTick. В Cortex именно этот таймер используется для этих целей. А что значит "нормальная работа"? Переполнения конечно же нужно обрабатывать. При 32-битном счетчике переполнения будут каждые 49 дней, но их тоже нужно обрабатывать.
  8. Тем, что в системе могут оставаться высокоприоритетные прерывания. Разумеется в них доступа к этой очереди быть не должно.
  9. Для простоты реализации атомарности.
  10. Работа с EEPROM довольно затратная по времени операция. Лишать систему прерываний на это время довольно опасно. Я бы через SVC сделал доступ к очереди (быстрая часть), а в mainloop сделал бы вычитывание из очереди и запись в EEPROM.
  11. Через прерывание может получится асинхронно, т.е. флажок взвели, а перед обработчиком может выполниться еще несколько инструкций. Можно через SVCall, тогда все будет синхронно. Про SVC подробно написано в "Joseph Yiu. The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors" раздел "10.3 SVC exception".
  12. Все прекрасно работает. Нужно записать правильное значение в GPIOA->MODER (пины 13 и 14 в MODE_OUTPUT). GPIOA->MODER = 0 | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN0) // ( 6) LCD1602_RS | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN1) // ( 7) LCD1602_E | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN2) // ( 8) LCD1602_D4 | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN3) // ( 9) LCD1602_D5 | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN4) // (10) LCD1602_D6 | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN5) // (11) LCD1602_D7 | (GPIO_MODE_INPUT << GPIO_MODER_PIN6) // (12) ENC_A | (GPIO_MODE_INPUT << GPIO_MODER_PIN7) // (13) ENC_B | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN9) // (17) CON_TX. USART1_TX | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN10) // (18) CON_RX. USART1_RX | (GPIO_MODE_INPUT << GPIO_MODER_PIN11) // (17) free | (GPIO_MODE_INPUT << GPIO_MODER_PIN12) // (18) free | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN13) // (19) TXEN [SWDIO (debug)] | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN14); // (20) WL [SWCLK (debug)]
  13. О чем эта тема? У вас вопрос, где люди закупаются без проблем? Или опрос решили устроить "Это у всех так сейчас?" (явно провокационный).
  14. Вообще-то, часы так не работают - стрелки вращаются с разной скоростью и нет никакого способа фиксировать прямой угол. Стрелки имеют фиксированную длину и их не изменить. Что показывает "кручение в одном направлении"? А где аналог модуля комплексного числа и фазы? Хуже аналогию было сложно придумать. Николай Семенович! Это вы?
  15. Вы реальной разработкой занимались когда-либо? Любой решение оно стоит денег (материалы, человекочасы, новые технологии, новое оборудование и т.п.) Чтобы что-то обосновать, нужны количественные оценки. Любое надежное решение оно и денег в конечном итоге много стоит. Вряд ли кто согласится лишнее выкладывать за сверхнадежность. Нормативной базой, регулирующей эту область, очерчивается необходимый и достаточный уровень. Есть тестер - называется "Доска Гальтона".
  16. Не бывает ничего одинакового в макромире. Есть револьвер с обоймой без одного патрона, и из него в вас достоверно выстрелят. Но у вас есть возможность достать из обоймы еще один патрон. Будете ли вы использовать эту возможность, если рядом с вами живой человек, который отказался от аналогичного предложения и выжил?
  17. А что числа? Люди еще и различные алгебры придумали где эти-ваши сложения/умножения сильно не похожи на то, что учат первоклассники.
  18. Причинно-следственная связь может быть такой: 1. есть комплексные числа, которые состоят из двух независимых частей; 2. комплексные числа можно удобно отображать в виде векторов на плоскости; 3. ба, основные операции над комплексными числами имеют яркую геометрическо-векторную иллюстрацию; 4. при описании сигналов гармонической природы удобно пользоваться амплитудой и фазой; 5. полярные и декартовы координаты можно переводить туда-сюда, и есть наглядная графическая иллюстрация в виде векторов; 6. а, давайте, попробуем гармонические сигналы описывать комплексными числами... 7. профит!
  19. Отведайте и ее консольного собрата ST-LINK_CLI.exe с ключиком -Dump<Address> <Memory_Size> <File_Path>
  20. А так? #define MEMARR_BASE 0x40000000 typedef union { uint32_t mem_dw[MAXMEM / 2]; uint16_t mem_w[MAXMEM]; uint8_t mem_b[MAXMEM * 2]; } s_mem; volatile s_mem *ss_mem = (volatile s_mem *)MEMARR_BASE; ss_mem->mem_b[0]; ss_mem->mem_w[1]; ss_mem->mem_dw[2];
×
×
  • Создать...