реклама на сайте
подробности

 
 
33 страниц V  « < 18 19 20 21 22 > »   
Closed TopicStart new topic
> STM32 – вопросы – проблемы - решения.
KnightIgor
сообщение Nov 3 2011, 08:42
Сообщение #286


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(diwil @ Nov 3 2011, 09:29) *
Правой мышкой тоже не получалось.

оказалось нужно было поменять:

USB\VID_b0c0&PID_0020&MI_00
- на -
USB\VID_b0c0&PID_0020&REV_0200

и все встало (ну проблемы у меня с виндой sm.gif...). правда винда ругалась на производителя, но это уже ее проблемы...
спасибо еще раз большое.


Был рад помочь!

Да, Вы правы: я спросил коллегу, оказалось, что &MI_00 - это наше композитное устройство, Вы верно замену сделали.
Вот тут ссылка на информацию по теме от гуру в области USB - господина Тсунео (Tsuneo).
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Nov 5 2011, 12:18
Сообщение #287


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Для информации.

Вожусь с I2C (STM32F103).

Что этот интерфейс в камне есть совершенно непролазные дебри, уже всем известно. Я в свое время вроде хорошо разобрался с ним, даже с DMA он у меня качает туда-сюда. И тут вдруг при запуске чтения или записи натыкаюсь на занятость шины (в моих функциях-обертках доступа в начале идет проверка на занятость шины на случай многомастерной коммуникации).

Обнаружилось: уже после выдачи STOP в конце предыдущей операции по I2C бит BUSY еще стоит какое-то время, а процессор такой шустрый, что если вскорости вызвать очередную операцию по I2C, можно на этот бит и нарваться! Решение - типа недолгое ожидание (по эксперименту в районе времени передачи двух байт, на всякий случай с таймаутом на основе DWT), пока BUSY не уйдет.

Вторая заморочка: пока тестировал на 400kHz, не встречался, а опустил до 100kHz, наткнулся на прерывание по состоянию I2C_EVENT_MASTER_BYTE_TRANSMITTING. Я работал по I2C_EVENT_MASTER_BYTE_TRANSMITTED, т.к. это более удобно для особых случаев приема 1-го или 2-х байтов, а тут проскакивает _TRANSMITTING. Решение: приходится еще дожидаться в прерывании бита BTF, т.к. если просто вывалиться из прерывания, то I2C_EVENT_MASTER_BYTE_TRANSMITTED (то есть, установка бита BTF) его больше не вызывает, и машина приема виснет.

Может кому будет полезно.

Сообщение отредактировал KnightIgor - Nov 5 2011, 12:34
Go to the top of the page
 
+Quote Post
rockmp4
сообщение Nov 10 2011, 07:57
Сообщение #288





Группа: Новичок
Сообщений: 3
Регистрация: 10-11-11
Пользователь №: 68 232



.

Сообщение отредактировал rockmp4 - Nov 10 2011, 07:59
Go to the top of the page
 
+Quote Post
rockmp4
сообщение Nov 10 2011, 07:57
Сообщение #289





Группа: Новичок
Сообщений: 3
Регистрация: 10-11-11
Пользователь №: 68 232



Подскажите пожалуйста где взять все ПДФки с описанием всех настроек stm32f1xx (описание регистров, битов для настройки). А то на сайте ST нифига найти не могу, тока app notes, user manuals, а кокретно по настройке ничего.
Пытаюсь на них перелезть с tms320f28335, где все для людей: по АЦП, таймерам и т.д. отдельные даташиты с полным описанием и всеми регистрами.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Nov 10 2011, 08:12
Сообщение #290


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(rockmp4 @ Nov 10 2011, 09:57) *
А то на сайте ST нифига найти не могу, тока app notes, user manuals, а кокретно по настройке ничего.

Reference Manual, там же, на сайте ST.
Go to the top of the page
 
+Quote Post
rockmp4
сообщение Nov 10 2011, 08:22
Сообщение #291





Группа: Новичок
Сообщений: 3
Регистрация: 10-11-11
Пользователь №: 68 232



Цитата(ViKo @ Nov 10 2011, 15:12) *
Reference Manual, там же, на сайте ST.

Спасибо, попробую поковырять.
Go to the top of the page
 
+Quote Post
IDL
сообщение Dec 8 2011, 12:51
Сообщение #292


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 10-11-11
Пользователь №: 68 243



Помогите пожалуйста с внешним прерыванием! Проблема в том, что при возникновении внешнего прерывания процессор на него реагирует, но не переходит в обработчик прерываний, а зависает где то! И в основной цикл не возвращается. Может кто знает в чем дело?
CODE

#include "stm32f10x.h"

int main()
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;

GPIOC->CRH |= GPIO_CRH_MODE9;
GPIOC->CRH &=~ GPIO_CRH_CNF9;

GPIOA->CRL |= GPIO_CRL_MODE0;
GPIOA->CRL &=~ GPIO_CRL_CNF0_0;

RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
AFIO->EXTICR[0] |= AFIO_EXTICR1_EXTI0_PA;

EXTI->IMR |= EXTI_IMR_MR0;
EXTI->EMR |= EXTI_EMR_MR0;

EXTI->RTSR |= EXTI_RTSR_TR0;

NVIC_SetPriority(EXTI0_IRQn, 7);
NVIC_EnableIRQ(EXTI0_IRQn);

__enable_irq ();

while (1)
{
GPIOC->BSRR |= GPIO_BSRR_BS8;
for (volatile int x=0; x<100000; x++){}
GPIOC->BRR |= GPIO_BRR_BR8;
for (volatile int x=0; x<100000; x++){}
}
}

//Сам обработчик прерывания
void EXTI0_IRQHandler(void)
{
if ((EXTI->PR & EXTI_PR_PR0)==0)
{
GPIOC->BSRR |= GPIO_BSRR_BS9;
EXTI->PR |= EXTI_PR_PR0;
}
}


Сообщение отредактировал IgorKossak - Dec 8 2011, 20:48
Причина редактирования: [codebox]
Go to the top of the page
 
+Quote Post
=F8=
сообщение Dec 8 2011, 15:10
Сообщение #293


Знающий
****

Группа: Свой
Сообщений: 567
Регистрация: 7-07-07
Из: Донецк
Пользователь №: 28 954



Цитата(IDL @ Dec 8 2011, 15:51) *
Помогите пожалуйста с внешним прерыванием! Проблема в том, что при возникновении внешнего прерывания процессор на него реагирует, но не переходит в обработчик прерываний, а зависает где то! И в основной цикл не возвращается. Может кто знает в чем дело?


Не оно?
Go to the top of the page
 
+Quote Post
IDL
сообщение Dec 8 2011, 15:38
Сообщение #294


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 10-11-11
Пользователь №: 68 243



Цитата(=F8= @ Dec 8 2011, 18:10) *


Спасибо, но не помогло sad.gif
Go to the top of the page
 
+Quote Post
Aleksandr Barano...
сообщение Dec 8 2011, 16:00
Сообщение #295


Частый гость
**

Группа: Участник
Сообщений: 169
Регистрация: 31-08-05
Из: New York
Пользователь №: 8 118



А где размещен переход на EXTI0_IRQHandler?


--------------------
ASB
Go to the top of the page
 
+Quote Post
IDL
сообщение Dec 8 2011, 16:09
Сообщение #296


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 10-11-11
Пользователь №: 68 243



Цитата(Aleksandr Baranov @ Dec 8 2011, 19:00) *
А где размещен переход на EXTI0_IRQHandler?

В startup_stm32f10x_md_vl.s
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 8 2011, 16:56
Сообщение #297


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(IDL @ Dec 8 2011, 18:51) *
Помогите пожалуйста с внешним прерыванием! Проблема в том, что при возникновении внешнего прерывания процессор на него реагирует, но не переходит в обработчик прерываний, а зависает где то!

Если у вас обработчик расположен в *.cpp файле, то его надо объявить как extern "C":
Код
extern "C" void EXTI0_IRQHandler(void)
{
...


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
IDL
сообщение Dec 8 2011, 18:56
Сообщение #298


Участник
*

Группа: Участник
Сообщений: 47
Регистрация: 10-11-11
Пользователь №: 68 243



Цитата(AHTOXA @ Dec 8 2011, 19:56) *
Если у вас обработчик расположен в *.cpp файле, то его надо объявить как extern "C":
Код
extern "C" void EXTI0_IRQHandler(void)
{
...


Спасибо большое, но все равно не помогло sad.gif Наверное дело в чем то другом! Будем думать!
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Dec 8 2011, 19:04
Сообщение #299


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Как правильно запустить ШИМ на базе TIM1 в STM32f, а то перепробывал кучу разных вариантов даже готовые какието кем то деланные, но всёравно не работает.
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 8 2011, 19:18
Сообщение #300


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(ELEKTROS @ Dec 9 2011, 01:04) *
Как правильно запустить ШИМ на базе TIM1 в STM32f, а то перепробывал кучу разных вариантов даже готовые какието кем то деланные, но всёравно не работает.

Вот ШИМ на TIM1_CH2:
CODE
void pwm_init()
{
// Включаем тактирование порта A и альтернативных функций:
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN;

// Тактирование таймера:
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN;

// Настраиваем ногу TIM1_CH2 как альтернативный выход:
Pin<'A', 9>::Direct(ALT_OUTPUT);

// Настраиваем таймер:
TIM1->CR1 = TIM_CR1_ARPE; // Счёт вверх, без делителя
TIM1->CR2 = 0;
TIM1->ARR = timer_period; // Период
TIM1->PSC = timer_prescaler; // Прескалер
TIM1->RCR = 0;
TIM1->EGR = TIM_EGR_UG; // Генерим событие для немедленного обновления прескалера

// Настраиваем канал OC2 (output compare 2)
TIM1->CCER &= ~(TIM_CCER_CC2E | TIM_CCER_CC2P | TIM_CCER_CC2NE); // Отключаем выход
TIM1->CCR2 = 0; // Период
TIM1->CCMR1 =
(TIM1->CCMR1 & ~(TIM_CCMR1_OC2M | TIM_CCMR1_CC2S | TIM_CCMR1_OC2M)) |
TIM_CCMR1_OC2M_2 | TIM_CCMR1_OC2M_1 | // PWM 1 (0x6000),
TIM_CCMR1_OC2PE; //;

TIM1->CCER |= TIM_CCER_CC2E; // Включаем выход
TIM1->CR1 |= TIM_CR1_CEN; // Запускаем таймер
TIM1->BDTR |= TIM_BDTR_MOE; // Специальная фишка у T1 и T8 - Main Output Enable
}

void pwm_set(uint16_t value)
{
TIM1->CCR2 = value;
}


Сообщение отредактировал AHTOXA - Dec 9 2011, 08:15
Причина редактирования: [codebox]


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post

33 страниц V  « < 18 19 20 21 22 > » 
Closed TopicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 22:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01478 секунд с 7
ELECTRONIX ©2004-2016