sonycman 0 25 декабря, 2009 Опубликовано 25 декабря, 2009 · Жалоба Квадрат не вдоль, а поперек :))) Они не плоские, как резисторы, а высокие. Параллелепипед BLM21 выглядит на плате слегка монстрообразно. Паять эти BLM18 очень просто, потому как есть за что пинцетом ухватиться и не надо переворачивать, чтобы надпись сверху была. Но это все ИМХО, конечно. Некоторым и BLM21 мало, им больше подавай. А, понятно :) Ну, если принести удобство в жертву ради красивостей... ладно, закажу на всякий случай и 18-тый, хотя он будет на плате как белая ворона среди кучи 0805 корпусов :) Имхо, некоторым и 0402 много, им меньше подавай ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serj78 0 28 декабря, 2009 Опубликовано 28 декабря, 2009 · Жалоба Начал работать с STM32 и столкнулся с невозможностью запустить 1-й таймер в режиме ШИМ. Остальные таймеры работают, первый ни в какую. Путем анализа регистра таймера выяснил, что он считает, на предделитель и ARR реагирует правильно. Но как-нибудь, в любом режиме заставить дергаться хоть один из выходов- никакне выходит, MOE в BTDR включен. Где копать? может, я что-то не допонял? Компилятор- Кейл uVision3. Пытался разрешить прерывания по 1-му таймеру - Сapture/Сompare прерывания ни по одному из каналов не вызываются, только по update (зажигаю в прерывании светодиод) C остальными таймерами- прерывания работают (правда, там они глобальные для всего таймера целиком, а дальше сам разбирайся., что не очень удобно). Если смотреть на блок-схему первого таймера, то создается впечатление, что сигнал OC1_REF просто не вырабатывается :( Кто-нибудь работал с первым таймером? есть какие-нибудь особенности? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 29 декабря, 2009 Опубликовано 29 декабря, 2009 · Жалоба ШИМ по первому таймеру. Вывод двухполярного сигнала с частотой 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; } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serj78 0 31 декабря, 2009 Опубликовано 31 декабря, 2009 · Жалоба Спасибо за код! Все это я уже делал, значит, логически я на правильном пути :) Я пользуюсь фирменным файлом stm32_init.c от отладочной платы кейла , с встроенным "мета языком" - configuration wizard. Вероятно, для первого таймера криво написан, хотя по остальной периферии замечаний нет. Буду пробовать последовательно изменять каждый регистр, чтобы найти где косячит визард. пока я только после визарда DIER менял и регистр блокировки и dead time (где бит MOE) . это не помогло. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 1 января, 2010 Опубликовано 1 января, 2010 · Жалоба Ну что же, всех с наступившим Новым Годом! :cheers: Однако, жизнь продолжается и надо заниматься делом дальше :) Кто нибудь юзал механический энкодер в связке с STM32 и его аппаратным интерфейсом? В смысле таймером в режиме энкодера? Как обстоят дела с подавлением дребезга? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serj78 0 11 января, 2010 Опубликовано 11 января, 2010 · Жалоба Какой-то бред с первым таймером получается. вручную проинициальзировал все регистры (просто повторил ваш код, прописав соответствующие имена битов #define, блин, как и было все равно не работают выходы. сам таймер считает. уже не знаю что и делать... а может, есть какой-нибудь тестовый проект целиком для кейла, где первый таймер дрыгает ногами?? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 11 января, 2010 Опубликовано 11 января, 2010 · Жалоба блин, как и было все равно не работают выходы. сам таймер считает. А какие именно выходы вы хотите активировать? Они правильно сконфигурированы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 11 января, 2010 Опубликовано 11 января, 2010 · Жалоба Вот простейший проект для Keil uVision 4. Активация TIMER1 в режиме PWM, первый и второй каналы: Timer.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serj78 0 11 января, 2010 Опубликовано 11 января, 2010 · Жалоба Вот простейший проект для Keil uVision 4. Активация TIMER1 в режиме PWM, первый и второй каналы: Timer.rar Спасибо! завтра попробую. Хочу активировать выходы OC2N и OC3N (они доступны на отладочной плате, B15, B14,B13)? или вообще на первый раз любой пин аппаратно связаный с СС регистром. Ноги конечно же сконфгурированы как выводы альтернативной функции на 50 Мгц. Непонятно то, что таймер не генерит сигнал совпадения на выходе регистра сравнения, ибо считает до выбранного числа в APR с установленной частотой, н ни ногами не дергает ни прерывание по совпадению не вызывается, только по update. Причем прерывания update почему-то вызываются 2 раза подряд: В прерывании по update стоит команда поднять-опустить одну ножку и сброс статус регистра, так вот на осциллографе я вижу 2 импульса с подряд на расстоянии 400нс, длительность импульса 128нс, и эти пары идут с периодом счета таймера. Вообще хочу 12 ШИМ выходов сделать, а для этого 3 таймеров общего назначения не достаточно, ибо uart-s тоже нужны, а ноги по назначению пересекаются... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 11 января, 2010 Опубликовано 11 января, 2010 · Жалоба Спасибо! завтра попробую. Хочу активировать выходы OC2N и OC3N (они доступны на отладочной плате, B15, B14,B13)? или вообще на первый раз любой пин аппаратно связаный с СС регистром. Пожалуйста :) В этом примере два пина - PA8 и PA9 выводят ШИМ сигнал с частотой 100 Гц и заполнением 25 и 75 процентов соответственно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serj78 0 11 января, 2010 Опубликовано 11 января, 2010 · Жалоба Пришло в голову только что: все те ноги, которые я пытался использовать, имеют ТРИ альтернативные функции: Выход таймера, SPI и UART/ Может, в этом собака зарыта? В референс мануале не нашел отдельных указаний о принудительном ремаппинге неиспользуемой на одном выводе периферии. А как вообще поведет себя вывод, если активировать два периферийных блока к нему подключенные? Сигналы сложатся? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 11 января, 2010 Опубликовано 11 января, 2010 · Жалоба Пришло в голову только что: все те ноги, которые я пытался использовать, имеют ТРИ альтернативные функции: Выход таймера, SPI и UART/ Может, в этом собака зарыта? В референс мануале не нашел отдельных указаний о принудительном ремаппинге неиспользуемой на одном выводе периферии. А как вообще поведет себя вывод, если активировать два периферийных блока к нему подключенные? Сигналы сложатся? Ну вы же не пользуетесь всеми тремя функциями сразу? Производитель рекомендует неиспользуемую периферию не тактировать вообще - просто не включайте её через регистры APBxENR\AHBENR. Хотя, к примеру, в STM32F103RBT6 можно юзать пин PA4 одновременно с SPI1 и USART2 в синхронном режиме - он будет работать как USART2_CK. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serj78 0 12 января, 2010 Опубликовано 12 января, 2010 · Жалоба Спасибо, ваш проект заработал. Нашел ошибку в кейловском визарде , он никак не выставляет BTDR регистр- он всегда 0. руками он выставляется. Осталось не понятным, почему после прописывания руками регистров таймер не работал.. сейчас пробую повторить ситуацию и найти ошибку.. также не смог разобраться где прописаны определения типа TIM_CCER_CC1E , или TIM_CCER_CC2E, в явном виде дефайнов нет.. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sonycman 0 12 января, 2010 Опубликовано 12 января, 2010 · Жалоба Нашел ошибку в кейловском визарде , он никак не выставляет BTDR регистр- он всегда 0. руками он выставляется. Вот поэтому я не люблю пользоваться всякими "визардами" или "фёрмварами". также не смог разобраться где прописаны определения типа TIM_CCER_CC1E , или TIM_CCER_CC2E, в явном виде дефайнов нет.. Ну как же, а самая первая строка - #include "stm32f10x_map.h"? В этом файле всё и прописано. Отпишитесь, в чём была проблема. Интересно. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Serj78 0 13 января, 2010 Опубликовано 13 января, 2010 · Жалоба Вот поэтому я не люблю пользоваться всякими "визардами" или "фёрмварами". Ну как же, а самая первая строка - #include "stm32f10x_map.h"? В этом файле всё и прописано. Отпишитесь, в чём была проблема. Интересно. :) почему-то у меня кейл не возпринимает этои инклюд.. пробовал и #include <stm32f10x_map.h> и #include "stm32f10x_map.h" кстати, чем кавычки отличаются от < > ? почему-то внутри моего конфигуратора стоит ссылка на этот stm32f10x_map.h, и оттуда она работает.. на имена регистров он не ругается, а вот имена битов почему-то ему не известны.. ага, нашел. версии файла разные. у меня май 2008, у вас сентябрь. у меня имен битов нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться