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

adnega

Свой
  • Постов

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

  • Посещение

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

    3

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


  1. Я как раз обратное утверждал: что сейчас, что три года назад - никакой разницы - покупай сколько унесешь.
  2. В 2015 году я покупал резисторы 0805 по 0.14 руб в партии 5 000 шт. Сейчас они стоят по 0.31 руб от 1 шт или 0.27 руб в партии от 10 000 шт. А резисторы 0805 6.81 кОм (1%) по акции в Компэле вообще по 0.08 руб. в партии 15 000 шт. В Компэле активно внедряют СДС. Я думаю в этом основная причина изменений на сайте. Кста, несколько месяцев назад цены на сайте тоже пропали, а потом появились. Нужно поменьше слушать директоров, подкидывающих панику.
  3. +1 Нужен аналог такого GPIOA->MODER = 0 | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN0) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN1) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN2) | (GPIO_MODE_ANALOG << GPIO_MODER_PIN5) | (GPIO_MODE_ANALOG << GPIO_MODER_PIN6) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN7) | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN8) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN9) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN10) | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN13) // ! | (GPIO_MODE_ALTERNATE << GPIO_MODER_PIN14) // ! | (GPIO_MODE_OUTPUT << GPIO_MODER_PIN15); GPIOA->AFR[0] = 0 | (AF_PA0_TIM5_CH1 << GPIO_AFR0_PIN0) | (AF_PA1_ETH_RMII_REF_CLK << GPIO_AFR0_PIN1) | (AF_PA2_ETH_MDIO << GPIO_AFR0_PIN2) | (AF_PA7_ETH_RMII_CRS_DV << GPIO_AFR0_PIN7); GPIOA->AFR[1] = 0 | (AF_PA9_USART1_TX << GPIO_AFR1_PIN9) | (AF_PA10_USART1_RX << GPIO_AFR1_PIN10) | (AF_PA13_SWDIO << GPIO_AFR1_PIN13) // ! | (AF_PA14_SWCLK << GPIO_AFR1_PIN14); // !
  4. Дык, настраиваете SysTick на генерацию прерываний с интервалом 1 мс, а в обработчике прерывания делаете maintimer++; , где maintimer - 32-битная переменная, в которой будут лежать миллисекунды.
  5. Можете подробнее рассказать о них? Это не норма, такие вещи нужно делать аппаратно и/или подбирать соответствующее аппаратное решение. Я уже 10 лет не пользуюсь запретом/разрешением прерываний, а проектов сделал очень много. ЧЯДНТ?
  6. Jenya7, вы по все видимости начинающий разработчик - прислушайтесь к советам опытных МК-программистов. Зачем вам аппаратный таймер, если вы от него даже прерываний боитесь? Это две крайности. Нужно сделать аппаратный таймер для счета программного счетчика с интервалом 1 или 10 мс. Затем все миллисекундные задержки и выше делать программно. Только так. Если у вас какая-то неприязнь к такому решению, то вы в чем-то заблуждаетесь - можете высказать свои "фи", и мы вас переубедим. Повторюсь, у Cortex-ов есть специальный таймер SysTick, и 99% проектов использует его для миллисекундных и выше задержек, с программным отсчетом времени. Задержки на микросекунды и ниже уже могут потребовать аппаратный таймер. Использование аппаратного таймера жестко привязывает проект к данной архитектуре и данному камню - проект будет слабо переносимым и склонным к аппаратным конфликтам с другими библиотеками и т.п. Насколько я понимаю, ТС хочет сделать некую инициализацию, чтоб потом вычитывать из некого регистра число, равное числу миллисекунд. Желательно, чтоб регистр был 32-битным. Вроде, у LPC17xx таймеры были 32 битными с 32-битным предделителем. У Cortex-M есть NVIC, который может делать вложенные прерывания с приоритетами. Если 32-битная переменная выровненная, то доступ к ней будет атомарным. Но я так понял, что из счетчика миллисекунд бы будете только вычитывать.
  7. У ТС именно "мили". Нужно понять что это значит.
  8. У меня давно подозрения к данному участнику. Периодически тут появляются всякие Николаи Семеновичи с 30 летним опытом, с 30тыр зарплатой, тысячами написанных программ и сотнями разработанных надежных устройств. Но ни одного доказательства показать не могут. ;)
  9. Перевожу: есть 24-битный вычитающий таймер. Когда он досчитает до нуля, то перегружается значением из SYST_RVR. Таким образом можно получить периодические прерывания, а в них уже работать с софтовыми интервалами. Обращаю внимание на бит CLKSOURCE регистра SYST_CSR. Он выбирает источник тактирования. У STM32, например, можно тактировать от HCLK или HCLK / 8 за счет этого бита.
  10. Может, поискать в документации? Там все очевидно: и источник, и делитель.
  11. Ничего страшного. Я обычно делаю 10 мс, но при помощи SysTick. В Cortex именно этот таймер используется для этих целей. А что значит "нормальная работа"? Переполнения конечно же нужно обрабатывать. При 32-битном счетчике переполнения будут каждые 49 дней, но их тоже нужно обрабатывать.
  12. Тем, что в системе могут оставаться высокоприоритетные прерывания. Разумеется в них доступа к этой очереди быть не должно.
  13. Для простоты реализации атомарности.
  14. Работа с EEPROM довольно затратная по времени операция. Лишать систему прерываний на это время довольно опасно. Я бы через SVC сделал доступ к очереди (быстрая часть), а в mainloop сделал бы вычитывание из очереди и запись в EEPROM.
  15. Через прерывание может получится асинхронно, т.е. флажок взвели, а перед обработчиком может выполниться еще несколько инструкций. Можно через SVCall, тогда все будет синхронно. Про SVC подробно написано в "Joseph Yiu. The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors" раздел "10.3 SVC exception".
  16. Все прекрасно работает. Нужно записать правильное значение в 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)]
  17. О чем эта тема? У вас вопрос, где люди закупаются без проблем? Или опрос решили устроить "Это у всех так сейчас?" (явно провокационный).
  18. Вообще-то, часы так не работают - стрелки вращаются с разной скоростью и нет никакого способа фиксировать прямой угол. Стрелки имеют фиксированную длину и их не изменить. Что показывает "кручение в одном направлении"? А где аналог модуля комплексного числа и фазы? Хуже аналогию было сложно придумать. Николай Семенович! Это вы?
  19. Вы реальной разработкой занимались когда-либо? Любой решение оно стоит денег (материалы, человекочасы, новые технологии, новое оборудование и т.п.) Чтобы что-то обосновать, нужны количественные оценки. Любое надежное решение оно и денег в конечном итоге много стоит. Вряд ли кто согласится лишнее выкладывать за сверхнадежность. Нормативной базой, регулирующей эту область, очерчивается необходимый и достаточный уровень. Есть тестер - называется "Доска Гальтона".
  20. Не бывает ничего одинакового в макромире. Есть револьвер с обоймой без одного патрона, и из него в вас достоверно выстрелят. Но у вас есть возможность достать из обоймы еще один патрон. Будете ли вы использовать эту возможность, если рядом с вами живой человек, который отказался от аналогичного предложения и выжил?
×
×
  • Создать...