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

 
 
20 страниц V  « < 13 14 15 16 17 > »   
Reply to this topicStart new topic
> STM32F103x, делимся впечатлениями
sonycman
сообщение Dec 25 2009, 21:04
Сообщение #211


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Dir @ Dec 26 2009, 00:34) *
Квадрат не вдоль, а поперек smile.gif))
Они не плоские, как резисторы, а высокие. Параллелепипед BLM21 выглядит на плате слегка монстрообразно. Паять эти BLM18 очень просто, потому как есть за что пинцетом ухватиться и не надо переворачивать, чтобы надпись сверху была. Но это все ИМХО, конечно. Некоторым и BLM21 мало, им больше подавай.

А, понятно smile.gif

Ну, если принести удобство в жертву ради красивостей... ладно, закажу на всякий случай и 18-тый, хотя он будет на плате как белая ворона среди кучи 0805 корпусов smile.gif
Имхо, некоторым и 0402 много, им меньше подавай wink.gif
Go to the top of the page
 
+Quote Post
Serj78
сообщение Dec 28 2009, 14:20
Сообщение #212


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Начал работать с STM32 и столкнулся с невозможностью запустить 1-й таймер в режиме ШИМ. Остальные таймеры работают, первый ни в какую.

Путем анализа регистра таймера выяснил, что он считает, на предделитель и ARR реагирует правильно. Но как-нибудь, в любом режиме заставить дергаться хоть один из выходов- никакне выходит, MOE в BTDR включен.

Где копать? может, я что-то не допонял?

Компилятор- Кейл uVision3.

Пытался разрешить прерывания по 1-му таймеру - Сapture/Сompare прерывания ни по одному из каналов не вызываются, только по update (зажигаю в прерывании светодиод)
C остальными таймерами- прерывания работают (правда, там они глобальные для всего таймера целиком, а дальше сам разбирайся., что не очень удобно).

Если смотреть на блок-схему первого таймера, то создается впечатление, что сигнал OC1_REF просто не вырабатывается sad.gif

Кто-нибудь работал с первым таймером? есть какие-нибудь особенности?
Go to the top of the page
 
+Quote Post
adnega
сообщение Dec 29 2009, 07:38
Сообщение #213


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



ШИМ по первому таймеру. Вывод двухполярного сигнала с частотой 44100Гц
Делаю так.

Код
#define    FPLL            72000000            // частота при работе от PLL, Гц
#define    PWM_N        (12)                // разрядность ЦАП, бит
#define    PWM_F        (44100)            // частота оцифровки, Гц
#define    PWM_P        ((FPLL/PWM_F)-1)    // предделитель


//-------------------------------------------------------------
// init_TIMER1()
//-------------------------------------------------------------
void __inline init_TIMER1()
{
    TIM1->ARR=PWM_P;        // запись периода
    TIM1->PSC=0;            // запись базы

    TIM1->CR1=(1<<2)
        |(1<<TIM_CR1_ARPE)
        |(1<<TIM_CR1_CEN);
    TIM1->CR2=
        (0<<TIM_CR2_OIS2)
        |(0<<TIM_CR2_OIS2N)
        |(0<<TIM_CR2_OIS3)
        |(0<<TIM_CR2_OIS3N);
    TIM1->CCMR1=
        (1<<TIM_CCMR1_OC2PE)
        |(OC_MODE_PWM1<<TIM_CCMR1_OC2M);
    TIM1->CCMR2=
        (1<<TIM_CCMR2_OC3PE)
        |(OC_MODE_PWM1<<TIM_CCMR2_OC3M);
    TIM1->CCER=
        (1<<TIM_CCER_CC2NE)
        |(1<<TIM_CCER_CC3NE);

    TIM1->BDTR=
        (1<<TIM_BDTR_MOE)
        |(0<<TIM_BDTR_DTG);

    TIM1->DIER=
        (1<<TIM_DIER_UIE);

}

//-------------------------------------------------------------
// void TIM1_UP_IRQHandler(void)
//-------------------------------------------------------------
void TIM1_UP_IRQHandler(void)
{
    TIM1->CCR2=x;
    TIM1->CCR3=y;
    TIM1->SR=0;
}
Go to the top of the page
 
+Quote Post
Serj78
сообщение Dec 31 2009, 15:36
Сообщение #214


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Спасибо за код!
Все это я уже делал, значит, логически я на правильном пути smile.gif

Я пользуюсь фирменным файлом stm32_init.c от отладочной платы кейла , с встроенным "мета языком" - configuration wizard.

Вероятно, для первого таймера криво написан, хотя по остальной периферии замечаний нет.

Буду пробовать последовательно изменять каждый регистр, чтобы найти где косячит визард. пока я только после визарда DIER менял и регистр блокировки и dead time (где бит MOE) . это не помогло.
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 1 2010, 09:49
Сообщение #215


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Ну что же, всех с наступившим Новым Годом! cheers.gif

Однако, жизнь продолжается и надо заниматься делом дальше smile.gif

Кто нибудь юзал механический энкодер в связке с STM32 и его аппаратным интерфейсом?
В смысле таймером в режиме энкодера?

Как обстоят дела с подавлением дребезга?
Go to the top of the page
 
+Quote Post
Serj78
сообщение Jan 11 2010, 10:27
Сообщение #216


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Какой-то бред с первым таймером получается.
вручную проинициальзировал все регистры (просто повторил ваш код, прописав соответствующие имена битов #define,

блин, как и было все равно не работают выходы. сам таймер считает.

уже не знаю что и делать... а может, есть какой-нибудь тестовый проект целиком для кейла, где первый таймер дрыгает ногами??
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 11 2010, 14:25
Сообщение #217


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Serj78 @ Jan 11 2010, 14:27) *
блин, как и было все равно не работают выходы. сам таймер считает.

А какие именно выходы вы хотите активировать? Они правильно сконфигурированы?
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 11 2010, 16:02
Сообщение #218


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Вот простейший проект для Keil uVision 4.
Активация TIMER1 в режиме PWM, первый и второй каналы:
Прикрепленный файл  Timer.rar ( 122.73 килобайт ) Кол-во скачиваний: 127
Go to the top of the page
 
+Quote Post
Serj78
сообщение Jan 11 2010, 16:29
Сообщение #219


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Цитата(sonycman @ Jan 11 2010, 19:02) *
Вот простейший проект для Keil uVision 4.
Активация TIMER1 в режиме PWM, первый и второй каналы:
Прикрепленный файл  Timer.rar ( 122.73 килобайт ) Кол-во скачиваний: 127


Спасибо! завтра попробую. Хочу активировать выходы OC2N и OC3N (они доступны на отладочной плате, B15, B14,B13)? или вообще на первый раз любой пин аппаратно связаный с СС регистром.

Ноги конечно же сконфгурированы как выводы альтернативной функции на 50 Мгц.

Непонятно то, что таймер не генерит сигнал совпадения на выходе регистра сравнения, ибо считает до выбранного числа в APR с установленной частотой, н ни ногами не дергает ни прерывание по совпадению не вызывается, только по update.
Причем прерывания update почему-то вызываются 2 раза подряд:
В прерывании по update стоит команда поднять-опустить одну ножку и сброс статус регистра, так вот на осциллографе я вижу 2 импульса с подряд на расстоянии 400нс, длительность импульса 128нс, и эти пары идут с периодом счета таймера.

Вообще хочу 12 ШИМ выходов сделать, а для этого 3 таймеров общего назначения не достаточно, ибо uart-s тоже нужны, а ноги по назначению пересекаются...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 11 2010, 16:44
Сообщение #220


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Serj78 @ Jan 11 2010, 20:29) *
Спасибо! завтра попробую. Хочу активировать выходы OC2N и OC3N (они доступны на отладочной плате, B15, B14,B13)? или вообще на первый раз любой пин аппаратно связаный с СС регистром.

Пожалуйста smile.gif
В этом примере два пина - PA8 и PA9 выводят ШИМ сигнал с частотой 100 Гц и заполнением 25 и 75 процентов соответственно.
Go to the top of the page
 
+Quote Post
Serj78
сообщение Jan 11 2010, 17:39
Сообщение #221


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Пришло в голову только что: все те ноги, которые я пытался использовать, имеют ТРИ альтернативные функции: Выход таймера, SPI и UART/

Может, в этом собака зарыта? В референс мануале не нашел отдельных указаний о принудительном ремаппинге неиспользуемой на одном выводе периферии.

А как вообще поведет себя вывод, если активировать два периферийных блока к нему подключенные? Сигналы сложатся?
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 11 2010, 18:55
Сообщение #222


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Serj78 @ Jan 11 2010, 21:39) *
Пришло в голову только что: все те ноги, которые я пытался использовать, имеют ТРИ альтернативные функции: Выход таймера, SPI и UART/

Может, в этом собака зарыта? В референс мануале не нашел отдельных указаний о принудительном ремаппинге неиспользуемой на одном выводе периферии.

А как вообще поведет себя вывод, если активировать два периферийных блока к нему подключенные? Сигналы сложатся?

Ну вы же не пользуетесь всеми тремя функциями сразу?

Производитель рекомендует неиспользуемую периферию не тактировать вообще - просто не включайте её через регистры APBxENR\AHBENR.

Хотя, к примеру, в STM32F103RBT6 можно юзать пин PA4 одновременно с SPI1 и USART2 в синхронном режиме - он будет работать как USART2_CK.
Go to the top of the page
 
+Quote Post
Serj78
сообщение Jan 12 2010, 07:42
Сообщение #223


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Спасибо, ваш проект заработал.

Нашел ошибку в кейловском визарде , он никак не выставляет BTDR регистр- он всегда 0. руками он выставляется.

Осталось не понятным, почему после прописывания руками регистров таймер не работал..

сейчас пробую повторить ситуацию и найти ошибку..

также не смог разобраться где прописаны определения типа TIM_CCER_CC1E , или TIM_CCER_CC2E, в явном виде дефайнов нет..
Go to the top of the page
 
+Quote Post
sonycman
сообщение Jan 12 2010, 14:02
Сообщение #224


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(Serj78 @ Jan 12 2010, 11:42) *
Нашел ошибку в кейловском визарде , он никак не выставляет BTDR регистр- он всегда 0. руками он выставляется.

Вот поэтому я не люблю пользоваться всякими "визардами" или "фёрмварами".
Цитата
также не смог разобраться где прописаны определения типа TIM_CCER_CC1E , или TIM_CCER_CC2E, в явном виде дефайнов нет..

Ну как же, а самая первая строка - #include "stm32f10x_map.h"?
В этом файле всё и прописано.

Отпишитесь, в чём была проблема. Интересно. smile.gif
Go to the top of the page
 
+Quote Post
Serj78
сообщение Jan 13 2010, 06:48
Сообщение #225


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Цитата(sonycman @ Jan 12 2010, 17:02) *
Вот поэтому я не люблю пользоваться всякими "визардами" или "фёрмварами".

Ну как же, а самая первая строка - #include "stm32f10x_map.h"?
В этом файле всё и прописано.

Отпишитесь, в чём была проблема. Интересно. smile.gif



почему-то у меня кейл не возпринимает этои инклюд.. пробовал и
#include <stm32f10x_map.h>
и #include "stm32f10x_map.h"

кстати, чем кавычки отличаются от < > ?

почему-то внутри моего конфигуратора стоит ссылка на этот stm32f10x_map.h, и оттуда она работает..
на имена регистров он не ругается, а вот имена битов почему-то ему не известны..

ага, нашел. версии файла разные. у меня май 2008, у вас сентябрь. у меня имен битов нет.
Go to the top of the page
 
+Quote Post

20 страниц V  « < 13 14 15 16 17 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 08:50
Рейтинг@Mail.ru


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