Программирование 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
Держит паяльник хвостом
Сообщения: 953
Зарегистрирован: Вс дек 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кгц?
Ответить

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