Программирование STM8
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Программирование STM8
В чем же оно вредит? LC и RC - фильтры одного порядка, только в случае RC-фильтра на резисторе будут потери и соответственно передаточный коэффициент меньше. и чем больше резистор тем больше потерь. В LC-фильтре будут только активные потери на сопротивлении дросселя, а это считанные Омы...
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
как собираетесь 8кбит поток подавать на шим
частота семплирования 8КГц - 125мкс
Каждые 125мкс извлекаем данные из буфера, записываем в регистр шима. Можно брать данные прямо с ацп.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Программирование STM8
RC-фильтр первого порядка, если у него частота среза 4кГц то 8кГц им будет подавлено на 6Дб. Конечно бить по ушам уже не будет но это всего в 2..3 раз меньше - слышно будет еще как. Если городить нормальный фильтр, то это нужен минимум 3-го порядка... с высокой добротностью. Ну да, это возможно но слишком сложная схемотехника получится, уж лучше поднять частоту ШИМ на порядок, и аналоговая схемотехника сильно упростится.
Если мы поднимаем частоту на порядок, то тот же фильтр первого порядка даёт нам уже 20дБ ослабления побочной частоты(в 10 раз), не говоря уже о том что она оказывается вне слышимого диапазона. И динамик сам по себе становится еще одним фильтром первого порядка для такого ультразвука.
И если уж быть точным до конца, поток там не 8кБит, а 64Кбит == 8кБайт.
Если мы поднимаем частоту на порядок, то тот же фильтр первого порядка даёт нам уже 20дБ ослабления побочной частоты(в 10 раз), не говоря уже о том что она оказывается вне слышимого диапазона. И динамик сам по себе становится еще одним фильтром первого порядка для такого ультразвука.
И если уж быть точным до конца, поток там не 8кБит, а 64Кбит == 8кБайт.
Re: Программирование STM8
Не поясните, зачем такой поток для передачи голоса?
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
исходя из диапазона частот голоса
https://ru.wikipedia.org/wiki/%D0%A7%D0 ... 1%81%D0%B0
https://ru.wikipedia.org/wiki/%D0%A7%D0 ... 1%81%D0%B0
Re: Программирование STM8
Для передачи 3000гц нужна полоса в 64к ? Котельников с Шенноном показывают вам кулаки и обзывают нехорошими словами.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
обман - 3400Гц
https://ru.wikipedia.org/wiki/%D0%A7%D0 ... 0%B8%D0%B8
Как следует из теоремы Котельникова, для того, чтобы однозначно восстановить исходный сигнал, частота дискретизации должна более чем в два раза превышать наибольшую частоту в спектре сигнала.
https://ru.wikipedia.org/wiki/%D0%A7%D0 ... 0%B8%D0%B8
Re: Программирование STM8
Сможете самостоятельно умножить 3400 на 2 ?
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
6800Гц, если "более чем в два раза", ближайшая стандартная дискретизация 8 000 Гц
Некоторые из используемых частот дискретизации звука:
8 000 Гц — телефон, достаточно для речи, кодек Nellymoser;
11 025 Гц;
12 000 Гц (на практике встречается редко);
16 000 Гц;
22 050 Гц — радио;
Re: Программирование STM8
Совершенно верно. А 64к нафига тогда?
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
поток там не 8кБит, а 64Кбит == 8кБайт.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Программирование STM8
Тут с теоремой Котельникова небольшая засада... она вообще утверждает что МОЖНО ВОССТАНОВИТЬ но на практике вы видели чтобы приняв такой поток данных и что-то восстанавливали? Это надо ресемплер, математику и т.д. но чисто математически можно восстановить да, спору нет. На практике проще поднять частоту семплирования и использовать доступный частотный диапазон не полностью, тогда погрешность восстановления не будет бросаться в глаза.
Не стоит путать количество семплов в секунду и плотностью потока данных. Для простого случая, когда нет никакого сжатия 8 бит на 8К семплов дают поток в 64Кбит, в цифровой телефонии же те же 16 бит 8К семплов ужимают до потока 9.6Кбит.
Не стоит путать количество семплов в секунду и плотностью потока данных. Для простого случая, когда нет никакого сжатия 8 бит на 8К семплов дают поток в 64Кбит, в цифровой телефонии же те же 16 бит 8К семплов ужимают до потока 9.6Кбит.
Re: Программирование STM8
oleg110592 писал(а):поток там не 8кБит, а 64Кбит == 8кБайт.
ДОжили. Биты с байтами путать начали? Для передачи речи без компрессии достаточно потока 8к. Килобит, если что.
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Программирование STM8
a5021 писал(а):Для передачи речи без компрессии достаточно потока 8к. Килобит, если что.
дожили не мы а вы
8 килобит в сек это 1 кбайт в секунду, тогда частота сэмплирования получается около 1000Гц - ни в какие ворота
Для простого случая, когда нет никакого сжатия 8 бит на 8К семплов дают поток в 64Кбит
Re: Программирование STM8
Доброго времени уважаемые котоведы, начинаю работать с stm8s, помогите с кодом под IAR (желательно без SPL), по измерению длительности внешнего импульса, прерывание по захвату на TIM1 или TIM2, длительность импульса от 5 до 100 миллисекунд. Спасибо!
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Программирование STM8
Отлично, 8К частота дискретизации... а АЦП у тебя 1-битный? только с 1-битным АЦП можно получить 8Кбит/сек при 8К частоте.
Re: Программирование STM8
Вы АЦП с ШИМ-сигналом не путайте только. Один восьмибитный семпл, подающийся в регистр сравнения таймера на выходе канала ШИМ превращается ровно в один импульс. Один импульс это сколько бит?
-
Kinder_Surprise
- Открыл глаза
- Сообщения: 49
- Зарегистрирован: Вс июн 07, 2015 20:45:22
Re: Программирование STM8
длительность импульса от 5 до 100 миллисекунд.
Для прерываний не имеет особого значения. Всё расширяется программными счётчиками.
Для TIM2 по входу TI2 будет примерно так:
настраиваем таймер
Код: Выделить всё
TIM2->PSCR = 0;
TIM2->CCMR1 |= TIM2_CCMR_CCxS_1; // 10: CC1 channel is configured as input, IC1 is mapped on TI2FP1
TIM2->CCMR2 |= TIM2_CCMR_CCxS_0; // 01: CC2 channel is configured as input, IC2 is mapped on TI2FP2
TIM2->CCER1 &= ~TIM2_CCER1_CC1P; // 0: Capture is done on a rising edge of TI2F
TIM2->CCER1 |= TIM2_CCER1_CC2P; // 1: Capture is done on a falling edge of TI2F
TIM2->CR1 |= TIM2_CR1_URS;
TIM2->CCER1 |= TIM2_CCER1_CC1E; // Capture enabled
TIM2->CCER1 |= TIM2_CCER1_CC2E; // Capture enabled
TIM2->IER |= TIM2_IER_CC1IE;
TIM2->IER |= TIM2_IER_CC2IE;
TIM2->IER |= TIM2_IER_UIE;
TIM2->CR1 |= TIM2_CR1_CEN; // Counter Enable
прерывания
Код: Выделить всё
INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13)
{
cnt_ref_ovf++;
TIM2->SR1 &= ~TIM2_SR1_UIF;
}
INTERRUPT_HANDLER(TIM2_CAP_COM_IRQHandler, 14)
{
if(TIM2->SR1 & TIM2_SR1_CC1IF)
{
cnt_ref_ovf_CC1 = cnt_ref_ovf;
TIM2->SR1 &= ~TIM2_SR1_CC1IF;
}
if(TIM2->SR1 & TIM2_SR1_CC2IF)
{
cnt_ref_ovf_CC2 = cnt_ref_ovf;
temp1 = (uint16_t)(TIM2->CCR1H) << 8;
temp1 |= (cnt_ref_ovf_CC1 * 65536) | TIM2->CCR1L;
temp2 = (uint16_t)(TIM2->CCR2H) << 8;
temp2 |= (cnt_ref_ovf_CC2 * 65536) | TIM2->CCR2L;
value = temp2 - temp1;
TIM2->EGR |= TIM2_EGR_UG; // Update Event
nop();
nop();
TIM2->SR1 = 0;
cnt_ref_ovf = 0;
cnt_ref_ovf_CC1 = 0;
cnt_ref_ovf_CC2 = 0;
}
}
value и будет длительностью импульса в тиках таймера.
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Программирование STM8
... который следует со скоростью 2048Кбит/сек. Иначе нужный звук не закодировать!
У вас какая-то каша в голове с этими битами и байтами.
У вас какая-то каша в голове с этими битами и байтами.