roboforum.ru

Технический форум по робототехнике.
Текущее время: 26 ноя 2024, 18:40

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




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 14:49 
Не в сети
Аватара пользователя

Зарегистрирован: 31 янв 2013, 21:17
Сообщения: 92
Ребята, подскажите как управлять с помощью таймера 20 GPIO?
Мне нужно на эти 20 gpio слать ШИМ, а мой таймер(TIM4) может только
слать 4 каналам(PD12,PD13,PD14,PD15) ШИМ, а мне нужно 20.

Код:
     uint16_t Prescaler =  8; // PCLK1 = 168MHz/8 ~= 21MHz
     uint16_t Period = 60000; // 20000; // 20 ms
    
     // Инициализируем таймер 4
     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

     TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
     TIM_TimeBaseStructInit (&TIM_TimeBaseStructure);
     TIM_TimeBaseStructure.TIM_ClockDivision = 0;
     TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
     TIM_TimeBaseStructure.TIM_Prescaler = Prescaler;
     TIM_TimeBaseStructure.TIM_Period = Period;
     TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);

     // Разрешаем таймеру обращаться к выходу PD12
     GPIO_PinAFConfig(GPIOD, GPIO_PinSource12, GPIO_AF_TIM4);
     GPIO_PinAFConfig(GPIOD, GPIO_PinSource13, GPIO_AF_TIM4);
     GPIO_PinAFConfig(GPIOD, GPIO_PinSource14, GPIO_AF_TIM4);
     GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_TIM4);
    
    
     //------------------------------------------------------------------------------------------
     // Инициализируем ШИМ
     TIM_OCInitTypeDef TIM_OCInitStructure;
     TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
     TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
     TIM_OCInitStructure.TIM_Pulse = 0;
     TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

     TIM_OC1Init(TIM4, &TIM_OCInitStructure);
     TIM_OC2Init(TIM4, &TIM_OCInitStructure);
     TIM_OC3Init(TIM4, &TIM_OCInitStructure);
     TIM_OC4Init(TIM4, &TIM_OCInitStructure);

     TIM_Cmd(TIM4, ENABLE);


_________________
Главное в жизни человека моего склада заключается в том, что он думает и как думает, а не в том, что он делает или испытывает.
(с) Альберт Эйнштейн


Последний раз редактировалось Askar 24 апр 2013, 14:55, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 14:52 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
Askar писал(а):
Ребята, подскажите как управлять с помощью таймера 20 GPIO?
Мне нужно на эти 20 gpio слать ШИМ, а мой таймер(TIM4) может только
слать 4 каналам(PD12,PD13,PD14,PD15) ШИМ, а мне нужно 20.

использовать несколько таймеров. Может и получится 20 ШИМов наскрести.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 14:57 
Не в сети
Аватара пользователя

Зарегистрирован: 31 янв 2013, 21:17
Сообщения: 92
Не нужно с одного таймера управлять 20-ти ногами
Как тут:
http://easyelectronics.ru/upravlenie-mn ... hinok.html
http://habrahabr.ru/post/147940/
http://alex-exe.ru/radio/robotics/servo-pc/

_________________
Главное в жизни человека моего склада заключается в том, что он думает и как думает, а не в том, что он делает или испытывает.
(с) Альберт Эйнштейн


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 15:16 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
А ты сам-то читал статьи, на которые ссылки даешь, а?

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 15:26 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Дайте мне stm32, 8 кило RAM, 1 канал таймера и 1 канал DMA. И 32 канала как с куста :-D


Последний раз редактировалось elmot 24 апр 2013, 15:28, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 15:27 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
elmot писал(а):
Дайте мне stm32, 4 кило памяти, 1 канал таймера и 1 канал DMA. И 32 канала как с куста :-D

С каким разрешением? :-)))

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 15:31 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Блин, обсчитался
5кило - 2 мксек, 10 кило -1 мксек. Ну вы понели:)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 16:28 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
да лана тебе - от разрешения память не зависит
две 32-битных переменных для состояния ног
32 переменных для каунтеров
32 переменных для отсечки

Но если делать с 1МГц, то ни на что времени больше не останется.

Добавлено спустя 5 минут 22 секунды:
Вообще я хрень написал
Вон на изиэлектроник все отлично описано как без гимора и не теряя разрешения все сделать

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 16:40 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
Я другое задумал:) Пишем по dma из памяти в out регистр порта GPIO. Тупо заполнили битовой картой 2.5мсек((32ноги = 4 байта)*2500 шагов)=10кб.
Зарядили таймер пересбрасываться каждые 20 мсек. и на частоте 1мгц переписываем блок памяти в порт:) Проц расслаблено курит ,32 ноги накачаны данными из dma.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 16:54 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
А dma, кстати, не гарантирует тайминги-то

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 17:10 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
с каких пор? если dma по таймеру-то запущен? Есть там какой-то режим память-память, он может и не гарантирует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 17:16 
Не в сети
Аватара пользователя

Зарегистрирован: 31 янв 2013, 21:17
Сообщения: 92
если честно я нечего не понял =)))))))))))))))))

_________________
Главное в жизни человека моего склада заключается в том, что он думает и как думает, а не в том, что он делает или испытывает.
(с) Альберт Эйнштейн


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 17:32 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
elmot писал(а):
с каких пор? если dma по таймеру-то запущен? Есть там какой-то режим память-память, он может и не гарантирует.

ДМА запрос-то ты генеришь идеально по таймеру. А вот выполняется он в порядке живой очереди :-)

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 17:59 
Не в сети
Аватара пользователя

Зарегистрирован: 10 ноя 2011, 12:02
Сообщения: 5691
Откуда: Turku, Finland
Skype: elmot73
прог. языки: Java и все-все=все
ФИО: Илья
С точностью +- процессорный такт? Это, знаете ли, неплохая точность


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: STM32F4DISCOVERY как подключить к таймеру-ШИМ 20 GPIO
СообщениеДобавлено: 24 апр 2013, 18:11 
Не в сети
Аватара пользователя

Зарегистрирован: 10 дек 2010, 13:16
Сообщения: 4995
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей
elmot писал(а):
С точностью +- процессорный такт? Это, знаете ли, неплохая точность

Не, кто-то тут докладывал, что может ощутимо тормознуть. Не помню кто.

Добавлено спустя 8 минут 6 секунд:
Кстати, таймер может генерить ДМА-запросы. Короче там можно офигенно все сделать практически полностью в автоматическом режиме. Прелоадишь таймер на компаре, генеришь апдейт ивент, прелоадишь следующее значение. Когда таймер дотикивает до компари, он генерит ДМА-запрос, дергает из буфера значение и кидает его на ноги, поинтер автоматически увеличивается (длина у буфера - по количеству каналов). Дальше в прерывании прелоадишь новое значение. И так по кругу. Процессора съедаешь - минимум. Все само крутится.
Сказка.

_________________
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу 1, 2  След.

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


Кто сейчас на конференции

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


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO