dimir 2 5 февраля Опубликовано 5 февраля (изменено) · Жалоба Настроил таймер на режим output compare togle.И всё погасло а тыкал на выход С1-112А абсолюный ноль.Что не так? Спойлер void timer_2_init(void) { RCC->APB2ENR|=RCC_APB2ENR_IOPAEN; GPIOA->CRL |= GPIO_CRL_CNF0_1; GPIOA->CRL &= ~GPIO_CRL_CNF0_0; GPIOA->CRL|=GPIO_CRL_MODE0; RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; RCC->APB1ENR |= RCC_APB1ENR_TIM2EN; TIM2->PSC =2-1; // ����������� �������� ��� ������ ����� 1000 ��� � ������� TIM2->ARR = 3 - 1; //65535 TIM2->CCR1= 2; TIM2->CCMR1&=~TIM_CCMR1_CC1S; TIM2->CCMR1|=_VAL2FLD(TIM_CCMR1_OC1M,2); TIM2->CCMR1&=~TIM_CCMR1_OC1PE; TIM2->CCER&=~TIM_CCER_CC1P; TIM2->CCER|=TIM_CCER_CC1E; TIM2->EGR |= TIM_EGR_UG; TIM2->DIER |=TIM_DIER_CC1IE; //TIM2->DIER |= TIM_DIER_UIE; TIM2->CR1 |= TIM_CR1_CEN; NVIC_EnableIRQ(TIM2_IRQn); //NVIC_GetPriority(TIM2_IRQn,0); } Изменено 7 февраля пользователем haker_fox Тему перенёс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimir 2 8 февраля Опубликовано 8 февраля · Жалоба Ау спецы? Где вы ? На СВО? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
0men 2 9 февраля Опубликовано 9 февраля · Жалоба On 2/8/2024 at 8:39 PM, dimir said: Ау спецы? Где вы ? На СВО? есть работающий код на HALе Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimir 2 9 февраля Опубликовано 9 февраля · Жалоба HAL это хорошо.Спасибо заранее.Этот режим мне нужен для генератора меандр.Но генератор не просто на одной частоте.Как сделать управлением прескаллера.В майне по умолчанию.?Если можете проконсультировать амматора. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ozforester 0 9 февраля Опубликовано 9 февраля (изменено) · Жалоба Пока HAL не подоспел. Однократно устанавливалось смещение на базу транзистора. Регистры, биты и позиции не шифровались, прямиком из референс-мануала. Включался 4 канал таймера 4 на ноге B9 stm32f1. /* * P W M T I M 4 - C H 4 (PB9,AF) */ void pwm_on ( int ccr ) { RCC_APB2ENR |= (1<<0); // afio clocking RCC_APB2ENR |= (1<<3); // clocking port B GPIOB_CRH &= ~( 0b1111 << 4 ); // pb9 reset GPIOB_CRH |= ( 0b1010 << 4 ); // pb9 af out pp 2 RCC_APB1ENR |= (1 << 2) ; // TIM4 clocking TIM4_PSC = 72 - 1 ; // 1 MHz TIM4_ARR = 1000 - 1 ; // 1kHz TIM4_CCR4 = ccr ; // width = bias TIM4_CCMR2 |= (0b111 << 12)|(0<<15); // pwm mode 1 TIM4_CCER |= (1 << 12) ; // CC4 output enable TIM4_CR1 |= 1 ; // counter enable } Изменено 9 февраля пользователем ozforester Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimir 2 9 февраля Опубликовано 9 февраля (изменено) · Жалоба Как мне менять частоту генерации меандра?Я нашёл в своём коде пару ошибок.Из за них код не работал.Но вот решить проблему вот такого плана не смог.Нужно менять частоту поэтапно от нуля включить на частоту 800 кГц .Потом шаг 80 кГц и менять до заданного значения метод итерации. Изменено 9 февраля пользователем dimir Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardWareMan 3 10 февраля Опубликовано 10 февраля · Жалоба Частота зависит от периодов счёта и прескалера. Коэффициенты без проблем вычисляются из значений частоты периферии (брать APB1/APB2 к которому принадлежит выбранный таймер) и требуемой частоты. В чём проблема управлять частотой генерации таймера, если выбранный вами таймер без lock режима? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimir 2 10 февраля Опубликовано 10 февраля · Жалоба В 10.02.2024 в 06:13, HardWareMan сказал: Частота зависит от периодов счёта и прескалера. Коэффициенты без проблем вычисляются из значений частоты периферии (брать APB1/APB2 к которому принадлежит выбранный таймер) и требуемой частоты. В чём проблема управлять частотой генерации таймера, если выбранный вами таймер без lock режима? Это я знаю. Каким образом это можно реализовать.Одной переменной не обойтись. Просто в основном цикле вычислить и подставить -не работает.Так покажите пример. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 85 10 февраля Опубликовано 10 февраля (изменено) · Жалоба 44 минуты назад, HardWareMan сказал: Коэффициенты без проблем вычисляются ...с той проблемой, что частота и период связаны обратно-пропорциональным соотношением F = 1/T, и шаг перестройки частоты нелинеен при линейном изменении периода. При малых значениях PSC и ARR шаг перестройки частоты получается весьма значительным, а при большом значении - малым. Например, разница между 1 и 2 в делителе даст перестройку по частоте 1/1 и 1/2, а разница делителей 50000 и 50001 даст перестройку по частоте 1/50000 и 1/50001. И никакого постоянного шага в 80 кГц, как хотел бы топикстартер, не выйдет. Это ж простые арифметические истины 3-4-го класса школы. Это объяснялось уже не раз. Повторять как бы смысла нет. \(Fupd = {Fclk \over DIV (PSC +1) (ARR + 1)}\) где Fclk - частота тактирования МК (HCLK), DIV - коэфф.деления после шины APB, от которой таймер запитан, PSC и ARR - значения в регистрах таймера. Понятно в этой формуле, что если PSC и ARR малы, то изменение на 1 будет давать большой скачок изменения частоты. Да и вообще, при линейном изменении PSC и ARR частота циклов таймера будет изменяться нелинейно. Ну это же школьная, мать ее, тематика. Изменено 10 февраля пользователем EdgeAligned Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimir 2 10 февраля Опубликовано 10 февраля · Жалоба Я это понимаю .Но вы мне покажите пример на пальцах хотя бы объясните.Как оно будет работать в основном цикле? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 10 февраля Опубликовано 10 февраля · Жалоба Никак оно не будет работать. Сто раз уже писали - нужен DDS - возьми DDS и не сношай людям мозги. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 38 10 февраля Опубликовано 10 февраля · Жалоба Но вот решить проблему вот такого плана не смог.Нужно менять частоту поэтапно от нуля включить на частоту 800 кГц .Потом шаг 80 кГц и менять до заданного значения метод итерации. Ну вот и посчитай на бумажке коэффициенты деления для 80, 160, 240..(весь ряд сам допиши, у мну устный счёт плохо) 800 кГц Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimir 2 11 февраля Опубликовано 11 февраля · Жалоба В 11.02.2024 в 00:53, Obam сказал: Но вот решить проблему вот такого плана не смог.Нужно менять частоту поэтапно от нуля включить на частоту 800 кГц .Потом шаг 80 кГц и менять до заданного значения метод итерации. Ну вот и посчитай на бумажке коэффициенты деления для 80, 160, 240..(весь ряд сам допиши, у мну устный счёт плохо) 800 кГц Ряд можно дописать .Программу написать .Но она не будет выполнять данную работу.А примера нет.Есть только видео stm32 & DDS .Si5351A -DDS прямоугольных импульсов.Но нужно создавать программу под неё.Да зная структурную схему DDS можно её самому сделать на базе stm32 но не на контроллере которого хочу я применить.Покажите пример. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardWareMan 3 11 февраля Опубликовано 11 февраля · Жалоба 30 minutes ago, dimir said: Ряд можно дописать .Программу написать .Но она не будет выполнять данную работу. А откуда такая уверенность, что не будет работать? 30 minutes ago, dimir said: А примера нет. ... Покажите пример. Учитывая, что ТС повторяет данную мантру в каждом сообщении я начинаю подозревать, что он не хочет пробовать что-то делать сам, а хочет получить готовое решение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
tonyk_av 44 11 февраля Опубликовано 11 февраля · Жалоба 3 hours ago, HardWareMan said: Учитывая, что ТС повторяет данную мантру в каждом сообщении я начинаю подозревать, что он не хочет пробовать что-то делать сам, а хочет получить готовое решение. Так и есть. Я один и тот же вопрос от этого ivan dimir вижу на многих сайтах. У него подход к делу такой: прикинуться шлангом, выложить какой-нибудь бред, а потом ждать, пока грамотные челы ему всё разжуют и напишут. При этом он сам даже напрягаться не хочет, чтобы изучить теорию. Поэтому я удивляюсь, что многие до сих пор ведутся и тратят на него своё время. 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться