Например TDA7294

Форум РадиоКот • Просмотр темы - Не пойму, как тактируется systick
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт июн 17, 2025 23:00:08

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 12 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Не пойму, как тактируется systick
СообщениеДобавлено: Вс ноя 22, 2015 12:48:38 
Открыл глаза

Зарегистрирован: Ср май 28, 2008 14:33:11
Сообщений: 67
Откуда: Россия, Саров
Рейтинг сообщения: 0
Всем привет!
Ребята, объясните, пожалуйста, мне тупому: откуда берётся тактирование таймера systick у STM32F407 (плата Discovery)?

Вот код:
Код:
#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"

#define LED GPIO_Pin_14
#define TEST GPIO_Pin_7

void initGPIO(void)
{
    GPIO_InitTypeDef port;

    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOC, ENABLE);
    port.GPIO_Pin = LED;
    port.GPIO_Mode = GPIO_Mode_OUT;
    port.GPIO_OType = GPIO_OType_PP;
    port.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD, &port);
    port.GPIO_Pin = TEST;
    GPIO_Init(GPIOC, &port);
}

void SysTick_Handler(void)
{
    static uint32_t count = 0;

     count++;
     
     if (count == 200) {
         GPIO_ToggleBits(GPIOD, LED);
         count = 0;
     }
   
     GPIO_ToggleBits(GPIOC, TEST);
}

int main()
{
    if(SysTick_Config(1000000))
        for (;;);

    initGPIO();
   
    for (;;);
}



Здесь в обработчике прерывания я мигаю светодиодом на PD14, но на это можно не смотреть - это так, для красоты.
Интересное в последней строке обработчика. Здесь я дёргаю PC7 и вот что получается: Цепляю на PC7 осциллограф и вижу импульсы длительностью 22.5 МСек, то есть частота переключения PC7 равна 44.4 Гц, стало быть, с учётом величины, передаваемой в функцию SysTick_Config, получается, что на вход systick-а поступает частота 44.4 МГц. Вопрос: откуда такая величина берётся? Или я что-то не так понял?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не пойму, как тактируется systick
СообщениеДобавлено: Вс ноя 22, 2015 14:25:30 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 13
Рейтинг сообщений: 24
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Сообщений: 2029
Откуда: г. Тула
Рейтинг сообщения: 0
По умолчанию systick тактируется от частоты шины AHB (SYSCLK), поделённой на 8. Но тактирование можно переключить напрямую от шины AHB без деления. Данный функционал устанавливается в регистре STK_CTRL 2-й бит (CLKSOURCE). Наверное, таким кодом можно переключиться на тактирование от системной частоты:
Код:
STK->CTRL |= CLKSOURCE;

Должно быть, в драйвере есть свои функции для конфигурирования systick (ну не люблю я их, потому не знаю).

За подробностями можно посмотреть документацию на ядро Cortex M4:
http://www.st.com/web/en/resource/techn ... 046982.pdf

P.S. Кстати, при расчёте на 180 МГц тактовой частоты, частота вызова прерывания в таком случае составляет 22,5 Гц (полупериод выходного сигнала 44,4 мс), что в два раза меньше измеренного тобой и одновременно подозрительно равно до наоборот. Не спутаны ли частота с периодом?

_________________
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не пойму, как тактируется systick
СообщениеДобавлено: Пн ноя 23, 2015 09:57:58 
Открыл глаза

Зарегистрирован: Ср май 28, 2008 14:33:11
Сообщений: 67
Откуда: Россия, Саров
Рейтинг сообщения: 0
Вот что показывает осциллограф:
Изображение

Длительность развёртки 5Мс/дел.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не пойму, как тактируется systick
СообщениеДобавлено: Пт ноя 27, 2015 11:45:27 
Открыл глаза

Зарегистрирован: Ср май 28, 2008 14:33:11
Сообщений: 67
Откуда: Россия, Саров
Рейтинг сообщения: 0
Прошу прощения, я напутал: Длительность импульса не 22.5, а примерно 18 мс (не 4 с половиной, а 3 с чем-то клеточки), т.е. частота переключений ноги PC7 получается примерно 28 Гц. Всё равно непонятно, откуда берётся такое значение.


Вернуться наверх
 
В продаже новые LED-драйверы XLC компании MEAN WELL с диммингом нового поколения

Компания MEAN WELL пополнила ассортимент своей широкой линейки светодиодных драйверов новым семейством XLC для внутреннего освещения. Главное отличие – поддержка широкого спектра проводных и беспроводных технологий диммирования. Новинки представлены в MEANWELL.market моделями с мощностями 25 Вт, 40 Вт и 60 Вт. В линейке есть модели, работающие как в режиме стабилизации тока (СС), так и в режиме стабилизации напряжения (CV) значением 12, 24 и 48 В.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Не пойму, как тактируется systick
СообщениеДобавлено: Пт дек 27, 2024 20:37:38 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Доброго дня! тема давно закрыта, у меня сейчас тоже возникла проблема с systick.
Когда я так тирую с внутреннего генератора(16мгц), то systick работает нормально, а то есть обработчик исключения systick вызывается каждые 1 ms, и для визуального теста реализовал мигания светодиода в 1 секунду.
Когда я переключения генератор тактирования на кварц, и устанавливаю тоже 16мгц(для теста) то светодиод мигает уже с промежутком в 3 секунды. проверял все. инициализацию регистров systick, меня значениях в них и тд, но все равно так работает. Регистр значение(systick->LOAD) устанавливаю верное значение(15999 для частоты 16мгц). не понимаю почему он себя, кто с таким сталкивался? Вот прям так и кажется что проблема какая-то мелачевая, а найти ее не смог


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не пойму, как тактируется systick
СообщениеДобавлено: Сб дек 28, 2024 08:19:10 
Грызет канифоль
Аватар пользователя

Карма: 3
Рейтинг сообщений: 69
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 251
Рейтинг сообщения: 0
maksimdag0, можно вместо систика просто подёргать ногой в узком цикле и оценить, чему равен SYSCLK, ведь SYSTICK питается от него. Может у вас тактовое дерево настроено не так, может через ПЛЛ пропускаете но не настраиваете.

_________________
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 16 мая 2025 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: Не пойму, как тактируется systick
СообщениеДобавлено: Сб дек 28, 2024 09:11:38 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
HardWareMan писал(а):
maksimdag0, можно вместо систика просто подёргать ногой в узком цикле и оценить, чему равен SYSCLK

Если я правильно понял, вы предлагаете сделать дергание ногой в основном цикле while? Если да, разве таким обраом мы сможем осцилографом, на этой ножке, измерить частоту cpu?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не пойму, как тактируется systick
СообщениеДобавлено: Сб дек 28, 2024 09:28:49 
Открыл глаза
Аватар пользователя

Зарегистрирован: Пн июл 31, 2017 10:53:04
Сообщений: 44
Рейтинг сообщения: 0
Скинь инициализацию свою + что за мк


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не пойму, как тактируется systick
СообщениеДобавлено: Сб дек 28, 2024 11:31:35 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Микроконтроллер - STM32F407VET6.
Проект создавал в CubMX. Проект почти пустой, подключил только кварц, настроил два вывода на выход и инициализировал таймер 1 и все. Скриншоты инициализации и файл main прикалдываю во вложениях.

Светодиод должен моргать с промежтком в 1 секунду, а моргает с промежутком 3 секунды.

Продублирую функцию main, здесь в тексте:

int main(void)
{
/* USER CODE BEGIN 1 */

/* USER CODE END 1 */

/* MCU Configuration--------------------------------------------------------*/

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* Configure the system clock */
SystemClock_Config();

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_TIM1_Init();
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start_IT(&htim1);
/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */

SystemCoreClockUpdate();//проверка текущей тактовой частоты cpu

while (1)
{
HAL_GPIO_WritePin(GPIOA, LED_1_Pin, GPIO_PIN_RESET);
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA, LED_1_Pin, GPIO_PIN_SET);
HAL_Delay(1000);
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}

Добавлено after 1 minute 29 seconds:
Изенил немного инициализаю, поставил частоту 25Мгц, соотвественно и регистр SysTick->LOAD = 24999. Но проблема все равно остается, причем точно такая же, то есть диод мигает каждые 3 секунды, а не 1 секунду.
Инициализацию приложил


Вложения:
В это случаи счетчик LOAD равен 24999.png [65.21 KiB]
Скачиваний: 27
main.c [7.18 KiB]
Скачиваний: 29
В это случаи счетчик LOAD равен 15999.png [66.16 KiB]
Скачиваний: 29
Screenshot_1.png [27.77 KiB]
Скачиваний: 18
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не пойму, как тактируется systick
СообщениеДобавлено: Сб дек 28, 2024 11:54:09 
Мучитель микросхем

Зарегистрирован: Вт окт 01, 2024 15:22:33
Сообщений: 419
Рейтинг сообщения: 0
Изенил немного инициализаю, поставил частоту 25Мгц

Для начала у вас кварц точно на 25MHz?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не пойму, как тактируется systick
СообщениеДобавлено: Сб дек 28, 2024 12:29:28 
Прорезались зубы

Зарегистрирован: Чт апр 08, 2021 09:46:48
Сообщений: 225
Рейтинг сообщения: 0
Это начало и конец :D . Кварц на отладочной плате действительно стоит на 8мгц. В этом была причина.
Спасибо))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не пойму, как тактируется systick
СообщениеДобавлено: Сб дек 28, 2024 12:54:13 
Грызет канифоль
Аватар пользователя

Карма: 3
Рейтинг сообщений: 69
Зарегистрирован: Ср сен 02, 2015 07:47:20
Сообщений: 251
Рейтинг сообщения: 0
maksimdag0, 25/8=3,125 и есть.
Изображение

PS:
Всем привет!
Ребята, объясните, пожалуйста, мне тупому: откуда берётся тактирование таймера systick у STM32F407 (плата Discovery)?

Ответ одной картинкой:
Изображение

_________________
Репозиторий STM32: https://cloud.mail.ru/public/2i19/Y4w8kKEiZ
Актуальность репозитория: 16 мая 2025 года
Если чего-то не хватает с сайта st.com - пишите, докачаю.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y