Программирование STM8

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
vash_sa
Открыл глаза
Сообщения: 50
Зарегистрирован: Чт сен 04, 2014 13:22:44

Re: Программирование STM8

Сообщение vash_sa »

А можно сделать пока так, чтобы то что оцифровывается с выхода микрофона выдавалось в ЦАП и на динамик. Грубо говоря услышать свой голос через динамик. У меня есть 50 Ом динамики. Какой из входов в STM8 можно использовать как обратное преобразование с цифры в сигнал?
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

да можно - использовать таймер (еще один) в режиме широтно-импульсной модуляции (ШИМ). Напрямую к динамику не подключать - нужен хотя бы транзистор.
vash_sa
Открыл глаза
Сообщения: 50
Зарегистрирован: Чт сен 04, 2014 13:22:44

Re: Программирование STM8

Сообщение vash_sa »

А к какому его выводу подключать? Есть транзисторы BC847AF. Как электронный ключ или в линейном режиме? Неплохо бы ссылку на пример.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

1)если TIM1 свободен можно использовать например вывод TIM1_CH1 (PC1).
2)Тут схемка есть, правда полевые транзисторчики:
http://blog.vinu.co.in/2014/12/happy-ch ... -year.html
3)Пример есть: Generating PWM signals using STM8S-DISCOVERY (AN3332)
http://www.st.com/web/en/catalog/tools/PF257976
но там с применением SPL - надо смотреть, что находится в функциях внутри
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Программирование STM8

Сообщение a5021 »

Переусложнено. Попробовать и вот этого хватит.

Изображение
axillent
Электрический кот
Сообщения: 1040
Зарегистрирован: Вс сен 25, 2011 19:09:33

Re: Программирование STM8

Сообщение axillent »

Может пригодится, пример простой схемы говорящего устройства http://www.getchip.net/posts/087-attiny ... ng-device/

Если на SPL писать, то какая на нее документация есть? Файлы виндусовского хелпа которые идут вместе с библиотекой или что то другое?
vash_sa
Открыл глаза
Сообщения: 50
Зарегистрирован: Чт сен 04, 2014 13:22:44

Re: Программирование STM8

Сообщение vash_sa »

Здравствуйте Коты! Можно попросить кусок кода с настройкой PWM на TIM2 stm8s005k6. Никак не получается разобраться. Желательно с настройкой прерывания на 8 кГц. В IAR.
Спасибо.
Аватара пользователя
GARMIN
Держит паяльник хвостом
Сообщения: 952
Зарегистрирован: Вс дек 02, 2012 16:58:33
Откуда: от туда
Контактная информация:

Re: Программирование STM8

Сообщение GARMIN »

Вот образец рабочей программы:
Спойлер

Код: Выделить всё

/*****************************************************************************
* Установка таймера TIM2 CH3 в режим ШИМ
* частота = 16 МГЦ / 200 = 80кГц
* выход таймера TIM2_CH3 (PA3) (10)
******************************************************************************/
void init_timer (void)
{
   GPIO_ConfigOutput (PWM_PORT1, PWM_PIN1, PortHiSpeed, PortPushPull);   // ШИМ
   PWM_PORT = 0;
// таймер ШИМ TIM2   
   TIM2->CR1 = TIM2_CR1_ARPE       * 1      // использовать буфер записи в триггер ARP
         | TIM2_CR1_OPM         * 0      // нет однократного режима
         | TIM2_CR1_URS          * 0      // нет ожидания конца счёта
         | TIM2_CR1_UDIS       * 0      //
         | TIM2_CR1_CEN          * 0;   // пока счётчик не разрешать
   TIM2->CCER1 = TIM2_CCER1_CC2P   * 0
         | TIM2_CCER1_CC2E      * 0      // запретить канал 1
         | TIM2_CCER1_CC1P      * 0
         | TIM2_CCER1_CC1E      * 0;   // запретить канал 2
   TIM2->CCER2 = TIM2_CCER2_CC3P   * 0   
         | TIM2_CCER2_CC3E      * 0;   // запретить канал 3

   TIM2->PSCR = 0;                     // прескалер = 2^0 = 1
   TIM2->IER = TIM2_IER_CC3IE       * 0      // запретить прерывания от таймера 2
         | TIM2_IER_CC2IE       * 0
         | TIM2_IER_CC1IE       * 0
         | TIM2_IER_UIE          * 0;
   TIM2->ARRH = (TIM4_COUNTER & 0xFF00) >> 8;   // счёт от 0 до 200
   TIM2->ARRL = TIM4_COUNTER & 0x00FF;
   TIM2->CCR3H = (PWM_MIN & 0xFF00) >> 8;
   TIM2->CCR3L = PWM_MIN & 0x00FF;
                  // уровень ШИМ 0 (нет выхода)
   TIM2->CCMR3 = TIM2_CCMR_CCxS_OUTPUT      // канал 3 сконфигурировать на выход
         | TIM2_CCMR_OCxPE * 1         // разрешить буфер записи в канал
         | TIM2_CCMR_OCxM_PWM1;         // режим PWM1 - выход активен пока счётчик меньше регистра сравнения   
   TIM2->CCER1 = TIM2_CCER1_CC2P   * 0      // запретить каналы 1 и 2
         | TIM2_CCER1_CC2E      * 0
         | TIM2_CCER1_CC1P      * 0
         | TIM2_CCER1_CC1E      * 0;
   TIM2->CCER2 = TIM2_CCER2_CC3P   * 0      // активный уровень выхода высокий
         | TIM2_CCER2_CC3E      * 1;   // разрешить канал 3

   TIM2->CR1 |= TIM2_CR1_CEN;            // разрешить счётчик   
   TIM2->EGR = TIM2_EGR_TG         * 0      // нет у TIM2
         | TIM2_EGR_CC3G       * 1      // разрешить евент канала 3
         | TIM2_EGR_CC2G       * 0
         | TIM2_EGR_CC1G       * 0
         | TIM2_EGR_UG          * 1;   // сгенерировать апдейт 3 канала
}
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

8-ми битный шим на TIM2 канал 1, переделано с SPL-ного примера:
Спойлер

Код: Выделить всё

#include "stm8s.h"

/** TIM2 Output Compare and PWM modes */
typedef enum
{
  TIM2_OCMODE_TIMING     = ((uint8_t)0x00),
  TIM2_OCMODE_ACTIVE     = ((uint8_t)0x10),
  TIM2_OCMODE_INACTIVE   = ((uint8_t)0x20),
  TIM2_OCMODE_TOGGLE     = ((uint8_t)0x30),
  TIM2_OCMODE_PWM1       = ((uint8_t)0x60),
  TIM2_OCMODE_PWM2       = ((uint8_t)0x70)
}TIM2_OCMode_TypeDef;

/** TIM2 Output Compare Polarity */
typedef enum
{
  TIM2_OCPOLARITY_HIGH               = ((uint8_t)0x00),
  TIM2_OCPOLARITY_LOW                = ((uint8_t)0x22)
}TIM2_OCPolarity_TypeDef;

/** TIM2 Output Compare states */
typedef enum
{
  TIM2_OUTPUTSTATE_DISABLE           = ((uint8_t)0x00),
  TIM2_OUTPUTSTATE_ENABLE            = ((uint8_t)0x11)
}TIM2_OutputState_TypeDef;


void TIM2_init(void)
{
    /* Set the Prescaler value */
    TIM2->PSCR = (uint8_t)(0x00);
    /* Set the Autoreload value */
    TIM2->ARRH = (uint8_t)(0x00);
    TIM2->ARRL = (uint8_t)(0xFF);
   
    /* Disable the Channel 1: Reset the CCE Bit, Set the Output State , the Output Polarity */
    TIM2->CCER1 &= (uint8_t)(~( TIM2_CCER1_CC1E | TIM2_CCER1_CC1P));
    /* Set the Output State &  Set the Output Polarity  */
    TIM2->CCER1 |= (uint8_t)((uint8_t)(TIM2_OUTPUTSTATE_ENABLE & TIM2_CCER1_CC1E) |
                             (uint8_t)(TIM2_OCPOLARITY_HIGH & TIM2_CCER1_CC1P));

    /* Reset the Output Compare Bits  & Set the Ouput Compare Mode */
    TIM2->CCMR1 = (uint8_t)((uint8_t)(TIM2->CCMR1 & (uint8_t)(~TIM2_CCMR_OCM)) |
                            (uint8_t)TIM2_OCMODE_PWM1);
   
    /* Set the OC1PE Bit */
    TIM2->CCMR1 |= (uint8_t)TIM2_CCMR_OCxPE;
    /* Set the ARPE Bit */
    TIM2->CR1 |= (uint8_t)TIM2_CR1_ARPE;
    /* Set the CEN Bit */
    TIM2->CR1 |= (uint8_t)TIM2_CR1_CEN;
}

void main( void )
{
    CLK->CKDIVR = 0;
    TIM2_init();
    TIM2->CCR1H = 0x00;
    TIM2->CCR1L = 128; // set PWM
    while(1) {};
}

проверил на 20-ти ногом STM8S003 - на выходе TIM2_CH1/PD4 меандр.
Подходит для вывода звука - частота шим 62.5 КГц, оцифрованные 8-ми битные данные выпихивать в регистр TIM2->CCR1L.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Программирование STM8

Сообщение a5021 »

Зачем 62.5кгц ?
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

А можно больше? Фильтр попроще - индуктивность меньше. Тут на тини сделано, частота шим 62 kHz:
http://rdimitrov.twistedsanity.net/blog ... er,%20Rev2
vash_sa
Открыл глаза
Сообщения: 50
Зарегистрирован: Чт сен 04, 2014 13:22:44

Re: Программирование STM8

Сообщение vash_sa »

Спасибо опробую разные варианты. А, на самом деле, зачем так много на 62кГц. Если я звук оцифровываю с микрофона на 8кГц, то как 62 кГц отразится на его выводе. Или это частота несущих колебаний? А изменение заполнения можно с частотой 8 кГц. Как скажется разность этих частот пока не понятно.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

если сделать частоту шима 8КГц, то будет слышна в динамике, лучше перенести значение частоты в тот диапазон, где не слышна ухом человека. Да и отфильтровать бы ее не мешало - меньше искажений будет.
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Программирование STM8

Сообщение a5021 »

Да хватит бредить уже. ФНЧ там на что тогда, и как при его наличии вы собрались 8кгц слушать? Никаких тут 62.5кгц нафиг не вперлось.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

какой ФНЧ? Сколько вперлось? Свой вариант пожалуйста. Голословно в бреде обвиняете. :))
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Программирование STM8

Сообщение a5021 »

Резистор с кондером в этой схеме это образуют простейший Фильтр Низких Частот, который надо рассчитывать на 4кгц для нашего случая. Тогда шим 8кгц "застрянет" в нем, а полезный сигнал пойдет на динамик. Речевой спектр лежит в полосе 3400 гц. На кой хрен эти 62.5кгц впились?
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

я вообще про мной предложенную схему:
Изображение
простым фильтром 8КГц полностью не "застрянет" (имхо)
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Программирование STM8

Сообщение a5021 »

Эта схема лишь чуть усложненный вариант фильтра резистор+конденсатор. Причем, усложнения применены в направлении, которое для нашего случая не только не востребовано, но и вредит.
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Re: Программирование STM8

Сообщение oleg110592 »

а речь то не о сложности, а о том что чем больше частота шим, тем проще фильтровать, можно даже не фильтровать - не слышно ее
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: Программирование STM8

Сообщение a5021 »

Вы как собираетесь 8кбит поток подавать на шим с частотой 62.5кгц?
Ответить

Вернуться в «Разные вопросы по МК»