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

Поиск

Показаны результаты для тегов 'таймер'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Сайт и форум
    • Новости и обсуждения сайта и форума
    • Другие известные форумы и сайты по электронике
    • В помощь начинающему
    • International Forum
    • Образование в области электроники
    • Обучающие видео-материалы и обмен опытом
  • Cистемный уровень проектирования
    • Вопросы системного уровня проектирования
    • Математика и Физика
    • Операционные системы
    • Документация
    • Системы CAD/CAM/CAE/PLM
    • Разработка цифровых, аналоговых, аналого-цифровых ИС
    • Электробезопасность и ЭМС
    • Управление проектами
    • Нейронные сети и машинное обучение (NN/ML)
  • Программируемая логика ПЛИС (FPGA,CPLD, PLD)
    • Среды разработки - обсуждаем САПРы
    • Работаем с ПЛИС, области применения, выбор
    • Языки проектирования на ПЛИС (FPGA)
    • Системы на ПЛИС - System on a Programmable Chip (SoPC)
    • Методы и средства верификации ПЛИС/ASIC
  • Цифровая обработка сигналов - ЦОС (DSP)
    • Сигнальные процессоры и их программирование - DSP
    • Алгоритмы ЦОС (DSP)
  • Микроконтроллеры (MCU)
    • Cредства разработки для МК
    • ARM
    • RISC-V
    • AVR
    • MSP430
    • Все остальные микроконтроллеры
    • Отладочные платы
  • Печатные платы (PCB)
    • Разрабатываем ПП в САПР - PCB development
    • Работаем с трассировкой
    • Изготовление ПП - PCB manufacturing
  • Сборка РЭУ
    • Пайка и монтаж
    • Корпуса
    • Вопросы надежности и испытаний
  • Аналоговая и цифровая техника, прикладная электроника
    • Вопросы аналоговой техники
    • Цифровые схемы, высокоскоростные ЦС
    • RF & Microwave Design
    • Метрология, датчики, измерительная техника
    • АВТО электроника
    • Умный дом
    • 3D печать
    • Робототехника
    • Ремонт и отладка
  • Силовая электроника - Power Electronics
    • Силовая Преобразовательная Техника
    • Обратная Связь, Стабилизация, Регулирование, Компенсация
    • Первичные и Вторичные Химические Источники Питания
    • Высоковольтные Устройства - High-Voltage
    • Электрические машины, Электропривод и Управление
    • Индукционный Нагрев - Induction Heating
    • Системы Охлаждения, Тепловой Расчет – Cooling Systems
    • Моделирование и Анализ Силовых Устройств – Power Supply Simulation
    • Компоненты Силовой Электроники - Parts for Power Supply Design
  • Интерфейсы
    • Форумы по интерфейсам
  • Поставщики компонентов для электроники
    • Поставщики всего остального
    • Компоненты
  • Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
    • Обсуждение Майнеров, их поставки и производства
  • Дополнительные разделы - Additional sections
    • Встречи и поздравления
    • Ищу работу
    • Предлагаю работу
    • Куплю
    • Продам
    • Объявления пользователей
    • Общение заказчиков и потребителей электронных разработок

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Город


Код проверки


skype


Facebook


Vkontakte


LinkedIn


Twitter


G+


Одноклассники


Звание

Найдено: 0 результатов

  1. Задача состоит в том, что необходимо чтобы светодиод мигал с изменяющейся частотой по нарастающей, т.е. сначала низкая частота, потом доходя до максимальной спадала обратно до начальной. Код изложен выше. Его я нашел в инете. Проблема в том, что не происходит изменения частоты мерцания светодиода, он просто мигает как мне кажется с постоянной частотой. Возможно проблема в настройках таймера или еще чего-то. Я только начал изучать stm8 нужна ваша помощь.
  2. Для систем с цифровым управлением одним из важнейших параметров является разрешение. Чем точнее выполняется генерация и измерение сигналов, тем выше будет качество управления. Это касается таких приложений как источники питания, мощные инверторы, системы освещения, управление электродвигателями и прочие. Специально для ответственных задач компания STMicroelectronics предлагает использовать микроконтроллеры STM32 со встроенным таймером повышенного разрешения HRTIM. Читать статью >>
  3. Добрый день, возникла проблема с обработкой прерывания по переполнению от таймера общего назначения TIM6 в микроконтроллере STM32F105RC. Среда разработки CooCox. TIM_ClearITPendingBit(TIM6, TIM_IT_Update) не сбрасывает флаг прерывания и я соответсвенно попдаю в него снова, но уже не по времени,которое мне необходимо,если верить системному таймеру. Данную строку двигал в разные часть обработчика прерывания, но в показанном мной коде,она должна стоять в этом месте,как я выяснил из литературы(проверяем, что прерывание от таймера и затем чистим(насколько я выяснил это надо сделать как можно быстрее)). Так же меня скорость тиков таймера с требуемых 100us до 1ms, так как думал,что не успеваю очистить и попадаю снова в прерывание из-за скорости. Результат один и тот же. По идее мне нужны настройки тиков таймера каждые 0,1ms и дальше период прерываний задается конфигурированием, пока работаю с конфигурацией,что прерывание должно быть каждые 96ms, те период 960 тиков или 96ms. Вопрос , что я сделал неправильно,что таймер так себя ведет? void TIM6_IRQHandler(void) // обработчик прерывания { time = portGetTickCount(); // тут получаем время от системного таймера //TIM6 ->SR &= ~TIM_SR_UIF; //TIM_ClearITPendingBit(TIM6, TIM_IT_Update); if (TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET) { TIM_ClearITPendingBit(TIM6, TIM_IT_Update); // ДАННАЯ СТРОКА судя по отладчику не сбрасывает флаг прерывания if (sync_timer_callbacks[0]) { if ( sync_timer_callbacks[0]() ) { } } } } //настройка таймера void sync_timer_now_setup(uint16 alarm, uint16 ticks, uint16 period) { uint16 now; NVIC_InitTypeDef NVIC_InitStructure; sync_timer_periods[alarm]=period; now = portGetTickCnt(); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4); switch (alarm) { case 0: RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6, ENABLE); //beacon timer setup TIM_TimeBaseStructInit(&base_timer0); base_timer0.TIM_Prescaler =(3600)-1; //one tick every 100us base_timer0.TIM_Period = ticks; TIM_TimeBaseInit(TIM6, &base_timer0); TIM_ITConfig(TIM6, TIM_IT_Update, ENABLE); TIM_Cmd(TIM6, ENABLE); NVIC_InitStructure_timer0.NVIC_IRQChannel = TIM6_IRQn; NVIC_InitStructure_timer0.NVIC_IRQChannelPreemptionPriority = 13; NVIC_InitStructure_timer0.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure_timer0.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure_timer0); break; case 1: RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // timeout timer TIM_TimeBaseStructInit(&base_timer1); base_timer1.TIM_Prescaler = 3600-1; base_timer1.TIM_Period = ticks; TIM_TimeBaseInit(TIM3, &base_timer1); TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); TIM_Cmd(TIM3, ENABLE); NVIC_InitStructure_timer1.NVIC_IRQChannel = TIM3_IRQn; NVIC_InitStructure_timer1.NVIC_IRQChannelPreemptionPriority = 14; NVIC_InitStructure_timer1.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure_timer1.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure_timer1); break; case 2: RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //timer for sending in nodes TIM_TimeBaseStructInit(&base_timer2); base_timer2.TIM_Prescaler = 3600-1; base_timer2.TIM_Period = ticks; TIM_TimeBaseInit(TIM4, &base_timer2); TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); TIM_Cmd(TIM4, ENABLE); NVIC_InitStructure_timer2.NVIC_IRQChannel = TIM4_IRQn; NVIC_InitStructure_timer2.NVIC_IRQChannelPreemptionPriority = 12; NVIC_InitStructure_timer2.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure_timer2.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure_timer2); break; default: break; } } //настройка системной частоты, выбор источников тактирования int RCC_Configuration(void) { ErrorStatus HSEStartUpStatus; RCC_ClocksTypeDef RCC_ClockFreq; /* RCC system reset(for debug purpose) */ RCC_DeInit(); /* Enable HSE */ RCC_HSEConfig(RCC_HSE_ON); /* Wait till HSE is ready */ HSEStartUpStatus = RCC_WaitForHSEStartUp(); if(HSEStartUpStatus != ERROR) { /* Enable Prefetch Buffer */ FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); /****************************************************************/ /* * HCLK=72MHz, PCLK2=72MHz, PCLK1=36MHz */ /****************************************************************/ /* Flash 2 wait state */ FLASH_SetLatency(FLASH_Latency_2); /* HCLK = SYSCLK */ RCC_HCLKConfig(RCC_SYSCLK_Div1); /* PCLK2 = HCLK */ RCC_PCLK2Config(RCC_HCLK_Div1); /* PCLK1 = HCLK/2 */ RCC_PCLK1Config(RCC_HCLK_Div2); /* ADCCLK = PCLK2/4 */ RCC_ADCCLKConfig(RCC_PCLK2_Div6); /* Configure PLLs *********************************************************/ /* PLL2 configuration: PLL2CLK = (HSE / 4) * 8 = 24 MHz */ RCC_PREDIV2Config(RCC_PREDIV2_Div4); RCC_PLL2Config(RCC_PLL2Mul_8); /* Enable PLL2 */ RCC_PLL2Cmd(ENABLE); /* Wait till PLL2 is ready */ while (RCC_GetFlagStatus(RCC_FLAG_PLL2RDY) == RESET){} /* PLL1 configuration: PLLCLK = (PLL2 / 3) * 9 = 72 MHz */ RCC_PREDIV1Config(RCC_PREDIV1_Source_PLL2, RCC_PREDIV1_Div3); RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_9); /* Enable PLL */ RCC_PLLCmd(ENABLE); /* Wait till PLL is ready */ while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){} /* Select PLL as system clock source */ RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); /* Wait till PLL is used as system clock source */ while (RCC_GetSYSCLKSource() != 0x08){} } RCC_GetClocksFreq(&RCC_ClockFreq); /* Enable SPI1 clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); /* Enable SPI2 clock */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); /* Enable GPIOs clocks */ RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE); return 0; } //запуск системного таймера int SysTick_Configuration(void) { if (SysTick_Config(SystemCoreClock / CLOCKS_PER_SEC)) { /* Capture error */ while (1); } NVIC_SetPriority (SysTick_IRQn, 0); return 0; }
×
×
  • Создать...