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

adnega

Свой
  • Постов

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

  • Посещение

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

    3

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


  1. stm32f4, Input Compare

    Для тактовой 168МГц 1.5мс это аж 252000 тактов. Если процедура обработки займет 100 тактов, то проц будет нагружен на 0.04%. Можно не заморачиваться и сделать обработку в прерывании. Хотя есть одна уязвимость. Если на вход подать меандр с частотой мегагерц 10, то скорее всего все умрет. Я бы сделал так: 1. У Вас уже есть механизим получения длительности и периода импульса аппаратно на таймере (правда, прерывания по первому и второму каналу нужно отключить). 2. Добавляете еще один (третий) канал сравнения на 1.5мс (и включаете ему прерывания). 3. При возникновении события по третьему каналу входим в прерывание и анализируем флаги в статусном регистре. Если флаг второго канала установлен, то спад от импульса пришел ранее 1.5мс и это короткий имульс - отбрасываем. Если флаг второго канала НЕ установлен, то спада импульса еще не было, и получается импульс шире 1.5мс - интересующий нас случай. 4. Можно показать, что сигналы короче 1.5мс (частота выше 666Гц) не будут вызывать прерывания. В самом хужшем случае прерывания будут каждые 1.5мс с указанной выше нагрузкой (порядка 0.04%).
  2. А я покрывал глицерином и в пакетик) Не уверен, что это есть решение, но советую попробовать.
  3. stm32f4, Input Compare

    Период импульса не важен? Если нужна аппаратная реализация с генерацией прерывания при поступлении импулься широной от T1 до T2 без участия CPU, то самое простое что мне видится: - нстроить таймер на запуск по фронту с входа; - настроить первый канал на время T1 с генерацией DMA-запроса; - настроить второй канал на время T2 с генерацией DMA-запроса; - DMA-запрос от первого канала настроить на запись управляющего слова в регистр РАЗРЕШЕНИЯ прерывания от внешнего входа по спаду импульса; - DMA-запрос от второго канала настроить на запись управляющего слова в регистр ЗАПРЕЩЕНИЯ прерывания от внешнего входа по спаду импульса; - иметь ввиду, что DMA имеет "приличное" время отклика на событие (порядка 12 тактов), поэтому очень короткие импульсы (с точность 100нс) отловить не получится. Читать TIMER, DMA, EXTI. Надеюсь, ясно описал) PS. Кстати, может и не получится( Чисто аппаратная реализация (без участия CPU) не всегда возможна. Почему нельзя использовать прерывания?
  4. В свое время морозили STM32F103RET6 до минус 65C. До минус 50C все работало, при минус 60C начинало отказывать (скорее всего логика и ключи, т.к. проц по интерфейсу работал исправно), при прогреве до минус 55C работоспособность восстанавливалась. Часовой кварц такой: KX-327ST.
  5. 9 руб./шт. по-моему это не цена. А для оптрона нужен источник тока? DC/DC 5В->5В 1W стоит гораздо дороже.
  6. Упрощенная запись оператора if if(cond) x=val1; else x=val2; может быть записано так x = (cond)? val1 : val2;
  7. . Трансформатор можно применить такой: CLP42BNP-101 (SUMIDA)
  8. Есть готовые трансформаторы 1:1 по 9 руб./шт. Поэтому все же "дешево". По поводу наводок. Самая распространенная 50Гц и гармоники. Поскольку на входе индуктивность (причем маленькая, около 100мкГн), то для такого низкочастотного сигнала трансформатор превращается в "гвоздь". Моделирование показывает, что практически прямое (через 10 Ом) попадание 220В 50Гц на вторичку трансформатора не оказывает ни какого влияния на работу схемы (правда, моделька с линейной индуктивностью и не учитывает насыщение). К тому же ток под 30А легко расплавит предохранитель на выходе устройства. И наоборот, высокочастотный 5МГц сигнал (так же 220В через 10 Ом) с учетом индуктивности проводов и входной емкости 560пФ практически полностью шунтируется емкостью. На первичной стороне конечно наблюдается модуляция, но около 10%. Все становится плохо только в районе 200кГц. Схема в указанных выше условиях не то что не работает, а может и "пыхнуть первичкой" (на коллекторе транзистора порядка 80В).
  9. Сделал примерно по такой схеме (см. вложение). Только трансформатор сделал сам: ферритовое кольцо (М2500) К10х6х4.5, 16 витков первичка, 16 витков вторичка (обмотки не касаются друг друга, занимают сектора градусов под 120). Софт написал для LPC1111FHN33/101 - обрабатывает 8 входов, ток потребления всех схемы порядка 13мА. Периодически транзистор открывается коротким (420нс) импульсом, затем через время T1 в течение времени T2 ждем появления лог. 0 на входе. Если ноль не появился - значит КЗ, если появился - ОБРЫВ. T1 - должно быть больше 600 "попугаев" из приложенного рисунка. T2 - любое, чтобы туда попадали импульсы от ОБРЫВа (скорее влияет на время опроса). Частота колебаний порядка 200кГц (зависит от номиналов в схеме и длины проводов). Из плюсов: дешево, просто, гальваноизоляция от основной схемы и между каналами, защищено от НЧ и ВЧ наводок (?), нагрев феном до 100С не влияет на работоспособность. Из минусов: зависит от номиналов и длины проводов (впрочем, как любая аналоговая схема), чувствительна к емкости и сопротивлению на линии. Например, два конца могли бы служить датчиками протечки воды на полу)) Из вопросов: 1. Как с наводками? 50Гц, конечно не проходят, но как быть с другими частотами и энергиями? 2. Как с излучением? Судя по потребляемой мощности энергии не так уж и много, но как оценить? 3. Можно рекомендовать к применению данную схему?
  10. Temperature sensor

    По документации. Есть три основных документа: - Datasheet (DS). В нем описаны всякие разные чипозависимые вещи. Напряжения, времянки, распиновка корпуса и т.п. Короче, справочник с цифрами. - Reference Manual (RM). В нем описано как программировать семейство микроконтроллеров. Регистры, схемы, порядок инициализации и т.п. Короче, справочник по регистрам. - Errata Sheet (ES). В нем описано какие проблемы могут быть у микроконтроллера. Каждай раздел состоит из описания проблемы и способа ее решения. Короче, справочник по ошибкам. У Вас все эти документы есть? Последних версий? Кроме основных документов могут быть полезными AN (примеры применений), справочник по программированию Flash, справочник по ядру Cortex и т.п. При желании все документы без труда ноходятся на www.st.com Так вот, где сидит "16-17 канал АЦП" можно узнать из RM; какая частота у АЦП и ЦАП, коэффициенты для температурного сенсора - из DS.
  11. STM32F4, Input capture

    переменные объявлены так: volatile int ir_pulse; volatile int ir_period; В ir_get нет ничего специфичного. Переменные у Вас равны 0xFFFFFFFF. Правильно ли Вы смотрите их отладчиком? Дошагиваете отладчиком до места присваивания из регистров? В каждом ли прерывании переменные равны 0xFFFFFFFF (в первом, в последующих)?
  12. STM32F4, Input capture

    Может, "volatile" добавить?
  13. STM32F4, Input capture

    Не вижу настройки NVIC. "Максимальное разрешение" - множитель задающий масштаб в регистрах захвата. В примере при тактовой 72МГц, получается масштаб "единица на 10мкс".
  14. STM32F4, Input capture

    Дык таймер-то никто не запустил. Вообще в STM32F очень навороченные таймеры: легко делается анти-ШИМ (на двух каналах, которые подключаются к одному пину) - в одном из каналов будет период, а в другом - длительность импульса. Суть такова: - по фронту импульса таймер сбрасывается и генерится прерывание, но предварительно сохраняется текущее значение таймера в первый (не путать с CCR1) регистр захвата; - по спаду импульса копируется текущее значение таймера во второй регистр захвата; - в прерывании имеем период и длительность импульса; - можно настроить прерывание по переполнению и иметь информацию об отсутствии импульсов. Например, так: //------------------------------------------------------------- // init_TIMER2(void) //------------------------------------------------------------- // Инициализация таймера 2 захват параметров ШИМ-сигнала на // линии 2 //------------------------------------------------------------- void __inline init_TIMER2(void) { TIM2->CR1=0; // счетчик выключен TIM2->PSC=720; // максимальное разрешение TIM2->CCMR1= (2<<TIM_CCMR1_CC1S) |(1<<TIM_CCMR1_CC2S); TIM2->CCER= (1<<TIM_CCER_CC1E) |(1<<TIM_CCER_CC1P) |(1<<TIM_CCER_CC2E) |(0<<TIM_CCER_CC2P); TIM2->SMCR= (4<<TIM_SMCR_SMS) |(6<<TIM_SMCR_TS); TIM2->DIER=6; TIM2->CR1=1; } //------------------------------------------------------------- // void TIM2_IRQHandler(void) //------------------------------------------------------------- // Прерывание от T2 //------------------------------------------------------------- void TIM2_IRQHandler() { if(TIM2->SR&2) { ir_pulse=TIM2->CCR1; } if(TIM2->SR&4) { ir_period=TIM2->CCR2; ir_get(ir_pulse,ir_period); } TIM2->SR=0; }
  15. ШИМ в STM32F4

    А в Reference Manuale на рисунке Clock Tree можно найти прямоугольник типа: if(APBx pres = 1 x1) else x2 Т.е. если для APB Вы установили отличный от 1 делитель (а в случае 168МГц это так), то частота таймеров увеличивается в два раза. PS. На STM32F1xx тоже так было...
  16. NVIC stm32

    Может виснет не NVIC_EnableIRQ(TIM2_IRQn), а код из обработчика прерывания?
  17. Из википедии: Многие устройства D-Link работают под управлением специализированных ОС с ядром Linux, что даёт права и возможности изменения прошивок (firmware) и создания альтернативных прошивок. Существуют отдельные энтузиасты, а также команды разработчиков альтернативного встраиваемого программного обеспечения[1][2] для ряда моделей многих производителей телекоммуникационного оборудования. У части потребителей эти прошивки пользуются популярностью, так как добавляют функциональность устройствам, а также исправляют ошибки более оперативно, чем официальные службы поддержки... По моему, самый простой и дешевый вариант для управления светодиодом по WiFi с питанием от розетки.
  18. Еще неплохо обращать внимание на падение напряжения открытого перехода. Где-то читал про подделки диодных мостов. Недавно товарищ FR307 купил, так они в БП калились и... сильно отличались по внешнему виду от "холодных" FR307.
  19. STM32F207+LwIP+FREERTOS - ARP?

    У меня (KSZ8041NLI) работает нормально. Правда, все самописное.
  20. ШИМ в STM32F4

    Может Вы запустили ШИМ на ноге PA0, которая в STM32F4DISCOVERY соединена с питанием через резистор (330 Ом) и конденсатор (100 нФ)?
  21. STM32F207+LwIP+FREERTOS - ARP?

    Странно. У меня на F4 пакеты стабильно принимались, но отправка работала очень не стабильно (иногда без потерь, иногда 100% потерь). TXEN и TXD проявляли активность. Проблема была в том, что для этих ног GPIO были сконфигурированы со SPEED 2МГц. Поставил 100МГц - уже третий день ни одного ping-пакета не потеряно. Проверьте на всякий случай свои настройки. Кста, тоже пользуюсь wireshark (под Win XP) - проблем с потерей пакетов не замечал.
  22. ШИМ в STM32F4

    Это не глупый, а правильный вопрос (которого от Вас ждут второй день). Набор регистров AFR выбирает для пина необходимую альтернативную функцию. Например, на выбранном Вами пине PA2 "сидит" еще: - TIM2_CH3; - TIM5_CH3; - TIM9_CH14 - USART2_TX; - ETH_MDIO. Каким образом камень узнает, что вы хотите видеть на пине PA2? Никаким! Для этого Вы настраиваете PA2 для работы, скажем, с TIM2_CH3 (а это AF1) в регистре альтернативных функций AFR. Поглядеть на каком пине что сидит и номер альтернативной функции можно в datasheet в таблице "Alternate function mapping". Справедливости ради замечу, что раньше выбор той или иной альтернативной функции определялся тактированием того или иного периферийного узла и не было возможности частично задействовать некоторые пины в группе выводов для SPI, а некоторые для TIMER. От этого errata у STM32F1xx разрасталась. И слава Инженерам STM, что в F4 нет такого гемора.
  23. ШИМ в STM32F4

    GPIOA->AFR[1] Нужно GPIOA->AFR[0]
  24. ШИМ в STM32F4

    Вы же аппаратный ШИМ от таймера решили задействовать? Тогда Вам нужно "Alternate function mode", а это маска (2 << (2 * 2)) == 0x20. И не забудьте GPIOA->AFRL = (1 << (2 * 4)) == 0x100. Рекомендую прочитать/посмотреть datasheet (DS) в районе 58 страницы. И Reference manual (RM) в районе 139 страницы (и ниже). PS. Советую неспеша разобраться с предметной областью самостоятельно, а не заводить "лишние" темы на форуме. Вопросы лучше задавать конкретные: хочу сделать то-то, делаю так-то, не получаетя. Проверьте досконально свой код на предмет опечаток, описок, соответствия DS и RM. До ШИМа каких-нить успехов достигли? Ну, там, светодиоды позажигать получилось ли...
  25. ШИМ в STM32F4

    Да ну! Можете прокомментировать назначение строчки GPIOA->MODER |=0x4; ? По-моему, ни к PA2, ни к выбору альтернативной функции она отношения не имеет...
×
×
  • Создать...