Very Hot Topic (More than 50 Replies) Микроконтроллер - как перспектива примочкостроения (Прочитано 128635 раз)
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #380 - 14.03.2012 :: 20:36:10
Post Tools
На этом я уже съел собаку.  В первых опусах долго не мог понять, в чем трабл. Но спустя какое-то время это прояснилось.
Сейчас у меня предыстория присутствует в виде хвоста предшествующего кадра, на место которого не перезаписываются, а суммируются отсчеты нового.
Так что все ок Подмигивание
« Последняя редакция: 14.03.2012 :: 21:09:11 от Rus »  

(Вложенный файл удалён)
Наверх
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #381 - 14.03.2012 :: 20:47:04
Post Tools
Цитата:
Сейчас у меня предыстория присутствует в виде хвоста предшествующего кадра, на место которого не перезаписываются, а суммируются отсчеты нового.


Что значит "хвост"?
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #382 - 14.03.2012 :: 21:08:46
Post Tools
Если взять, например, длину одного блока А, и длину импульса В, то длина их свертки С будет С= А+В-1. Под хвостом я имею ввиду все, что начинается с А+1-й точки и до конца С.
Писал уже страницу назад, что по аналогичному алгоритму навоял прогу под винду, через к-рую слушал и смотрел анализатором реальные звуковые файлы, значительно превышающие размер одного окна. И результат никак не отличался от небезызвестного acoustic mirror, с к-рым и сравнивал.
  

(Вложенный файл удалён)
Наверх
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #383 - 14.03.2012 :: 22:11:18
Post Tools
Цитата:
Под хвостом я имею ввиду все, что начинается с А+1-й точки и до конца С.


Вот теперь все ясно. Да, такой алгоритм правильный и действительно совпадает по результатам с прямым расчетом (если, конечно, нигде ничего не потеряли в реализации, но раз совпадает, то значит все ок).

Ну и дабы подкинуть информации к размышлению - рекомендую ознакомиться с преобразованием Хартли - http://www.radioscanner.ru/files/signals-analysis/file1862/
Чем хорошо - не надо производить операции с комплексными числами. Заметно меньше умножений, а значит - выше производительность. А так все одинаково - свертка выполняется аналогичным образом.
« Последняя редакция: 14.03.2012 :: 22:17:26 от Rst7 »  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #384 - 15.03.2012 :: 06:07:08
Post Tools
Любопытно. Надо будет ознаокмиться. Спасибо)
  

(Вложенный файл удалён)
Наверх
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #385 - 23.03.2012 :: 21:52:53
Post Tools
Если частота дискретизации в симуляторе плавает на +/- 70Гц, можно необращать внимания, или, если это существенно, как ее пожестче задать можно? Не понятно, почему так? У меня сейчас от таймера она генерится.
  

(Вложенный файл удалён)
Наверх
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #386 - 24.03.2012 :: 17:44:53
Post Tools
Цитата:
Если частота дискретизации в симуляторе плавает на +/- 70Гц,
...
У меня сейчас от таймера она генерится.


Что значит плавает? И как генерится?
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #387 - 24.03.2012 :: 18:41:39
Post Tools
всмысле изменяется. Меряю на одном участке сигнала между соседними отсчетами - 44.117, в другом месте 44.036, при отсутствии сигнала 44.150 и т.д.
А генерится так - АЦП выставлен на одиночное преобразование, к-рое выполняется в обработчике прерывания таймера.
С чем это может быть связано?
  

(Вложенный файл удалён)
Наверх
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #388 - 25.03.2012 :: 12:03:27
Post Tools
Цитата:
А генерится так - АЦП выставлен на одиночное преобразование, к-рое выполняется в обработчике прерывания таймера.
С чем это может быть связано?


Небось еще и таймер руками перезаряжаете вместо сброса по MAT? А так вообще обычный джиттер по входу в прерывание. АЦП надо тактировать жестко, например, пользуясь теми режимами битового поля START регистра AD0CR, которые запускают преобразование по MATx.x. В соответствующем таймере Вам кроме того нужно установить режим сброса таймера по этому же сигналу MAT. Тогда никакого джиттера не будет.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #389 - 25.03.2012 :: 22:12:15
Post Tools
Цитата:
Небось еще и таймер руками перезаряжаете вместо сброса по MAT?

Да, перезаряжаю, записывая соответствующий бит в Match Control Register.
А как сделать перезарядку по МАТ? Мануал курил - не нашел. Нашел только, как задать реакцию выходов МАТ на совпадение (External Match Register), а вот как его обрабатывать, не совсем понятно...
  

(Вложенный файл удалён)
Наверх
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #390 - 26.03.2012 :: 10:33:08
Post Tools
Цитата:
Мануал курил - не нашел.


В регистр MRx пишете число тактов таймера для получения нужного периода, например, для периода 44100Гц и тактовой 120МГц надо писать туда (120000000/44100)-1=2720. Потом в соответствующем Match Control Register (MCR) устанавливаете в 1 бит MRxR - это будет приводит к сбросу счетчика таймера в 0 по достижению значения в регистре MRx. Затем запускаете таймер - в Timer Control Register пишете 1. Ну а предварительно настраиваете ADC на запуск по нужному MAT. А процедуру выгр##ания данных из ADC вешаете на прерывание от ADC по готовности данных.

Все.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #391 - 27.03.2012 :: 21:55:09
Post Tools
Переделал, частота зафиксировалась железно. Спасибо большое!
Правда, немного иначе сделал - в External Match Control поставил режим toggle и считаю до 1360. А если делать, как Вы говорите, то установившийся после совпадения бит EMR как лучше сбрасывать? В прерывании от MRx?
  

(Вложенный файл удалён)
Наверх
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #392 - 28.03.2012 :: 13:50:56
Post Tools
Цитата:
Правда, немного иначе сделал - в External Match Control поставил режим toggle и считаю до 1360.


Да, походу это самое верное решение, я не дочитал немного даташит на предмет того, что там важен фронт или спад, просто в других камнях часто достаточно только события совпадения для запуска, а уж чего там делает сама ножка - до дупы.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #393 - 13.05.2012 :: 20:43:35
Post Tools
Добрый вечер!
Подскажите, что почитать для понимания сути работы I2S интерфейса. Можно на английском. Вроде так в общем разобрался, сделал инициализацию, но мастер-клока на соответсвующей ноге не видать. И еще, не понятно почему, в регистре I2SDAO по дефолту все нули, хотя по усер-мануалу 0, 5 и 15 биты долджны стоять. Озадачен
Код
Select All
 LPC_SC->PCONP |= 1<<27; // power & clok to I2S
 LPC_SC->PCLKSEL1 |= 1<<22;	// set I2S clock to CCKL
 LPC_PINCON->PINSEL0 |= 1<<14 | 1<<16 | 1<<18; //set I2S pins
 LPC_PINCON->PINMODE0 |= 1<<14 | 1<<15 | 1<<16 | 1<<17 | 1<<18 | 1<<19; //Enable pull-down resistors for I2S pins
 LPC_I2S->I2SIRQ |= 1<<1; //Enable transmit interrupts
 LPC_I2S->I2STXRATE	|= 120 | 1<<8; //set x and y
 LPC_I2S->I2STXBITRATE |= 1; //set TX_MCLK devide value to produce bit rate
 LPC_I2S->I2SDAO &= ~(1<<5);  //set I2S transmitter as master
 LPC_I2S->I2SDAO |= 1<<0 | 1<<1; //32-bit wordwidth
 LPC_I2S->I2SDAO |= 1<<2; //mono
 


Использовать хочу для состыковки lpc1759 c внешним цап-ом.
Буду признателен за любую инфу по теме Улыбка
  

(Вложенный файл удалён)
Наверх
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #394 - 13.05.2012 :: 21:55:03
Post Tools
Цитата:
Буду признателен за любую инфу по теме


Завтра гляну, заодно со своих исходников скопипастю код. Там, правда, я в режиме Slave I2S использовал.
  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #395 - 15.05.2012 :: 12:19:59
Post Tools
Rst7
Нашли что-то?
Читал мануал на LPC, но никак не могу въехать, по какому механизму осуществляется передача, там про это ничего не пишется вообще((
На сколько я понял, передаваемое значение надо писать в регистр FIFO, а потом что с ним делать - не понятно. И еще такой параметр - FIFO level, что он означает?
  

(Вложенный файл удалён)
Наверх
IP записан
 
Затворник
Младший паяльщик
**
Вне Форума



Сообщений: 271
Зарегистрирован: 31.07.2009
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #396 - 15.05.2012 :: 12:32:09
Post Tools
Господа! Забыл как называется эффект, понижающий строй с шагом в полтона. Я так вообще понял, что реализовать его возможно только в цифре? В связи с чем вопрос: современные микроконтроллеры способны в достаточном (на уровне гитарного процессора) качестве обработать сигнал? Может, какие предложения озвучите? Спасибо!
  

(Вложенный файл удалён)

Депрессия - это когда выбитые зубы собирают сломанными руками.
Наверх
 
IP записан
 
KMG
Гуру
*****
Вне Форума



Сообщений: 3773
Местоположение: Санкт-Петербург
Зарегистрирован: 06.06.2008
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #397 - 15.05.2012 :: 12:38:34
Post Tools
FIFO level для того чтобы знать сколько свободного места в FIFO, сколько инфы можно туда записать для передачи.
Если передача включена, то FIFO "рассасывается" автоматически со скоростью битрейта.
Чтобы не было разрывов в передаче (заикания звука) нужно следить чтобы FIFO level не становился 0 в процессе передачи всего блока.
  

(Вложенный файл удалён)
Наверх
IP записан
 
Rst7
Гуру
*****
Вне Форума


Мимо проходил...

Сообщений: 1619
Местоположение: Харків-city
Зарегистрирован: 22.03.2010
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #398 - 15.05.2012 :: 13:39:49
Post Tools
Цитата:
Нашли что-то?
Читал мануал на LPC, но никак не могу въехать, по какому механизму осуществляется передача, там про это ничего не пишется вообще((


Блин, пардон, совсем забыл... Значит так, вот есть кусок моего кода из рабочего проекта.

Код
Select All
  DEBUG_PUTS("RX: Init I2S module.\r\n");
  PCONP_bit.PCI2S=1; //Power up I2S module
  I2SDAI=((32UL-1UL)<<6)|(1UL<<5)|3; //32 bits half period, slave mode, 32-bit data
  I2SRXMODE=0;
  I2SRXBITRATE=1-1; //Divide RXMCLK by 1
  PINSEL1|=(2UL<<14)|(2UL<<16)|(2UL<<18); //P0.23 - I2S RXCLK, P0.24 - I2S RXWS, P0.25 - I2S RXSDA
  DEBUG_PUTS("RX: Setup I2S interrupt.\r\n");
  NVIC_IntPri(NVIC_I2S,4<<3); //Приоритет 4.
  NVIC_IntEnable(NVIC_I2S);



....

И собственно говоря, читалка на прерываниях:

void I2S_IRQHandler(void)
{
  UREG i=RX_IQ_WP;
  UINT32 *p=(UINT32*)(((UINT8*)RX_IQ_BUF)+i);
  *p++=I2SRXFIFO;
  *p++=I2SRXFIFO;
  *p++=I2SRXFIFO;
  *p++=I2SRXFIFO;
  i+=4*4;
  i%=sizeof(RX_IQ_BUF);
  RX_IQ_WP=i;
}
 



Либо вариант с DMA

Код
Select All
//RXSIZE
//Souce burst size=1
//Destination burst size=1
//Source transfer width=32-bit
//Destination transfer width=32-bit
//Source increment=0
//Destination increment=1
//Terminal count interrupt enable bit=1
#define RX_DMA_START_VALUE_CTRL (((RX_DMA_SZ)<<0)+(0UL<<12)+(0UL<<15)+(2UL<<18)+(2UL<<21)+(0UL<<26)+(1UL<<27)+(1UL<<31))
//Enable, Source - I2S, Destination - memory (ignored), peripheral to memory, ITC=1
#define RX_DMA_START_VALUE_CONF ((1UL<<0)+(5UL<<1)+(5UL<<6)+(2UL<<11)+(1UL<<15))

//Доинициализация DMA
  DEBUG_PUTS("RX: Configure DMA.\r\n");
  DMACCONFIGURATION=1; //Enable DMA
  DMACC1DESTADDR=(unsigned long)RX_DMA_P;
  DMACC1SRCADDR=(unsigned long)(&I2SRXFIFO);
  DMACC1CONTROL=RX_DMA_START_VALUE_CTRL; //
  DMACC1CONFIGURATION=RX_DMA_START_VALUE_CONF;
  I2SDMA1=(4UL<<8)|(1UL<<0); //RX_DMA1_ENABLE=1, RX_DEPTH_DMA1=4

....

void GPDMA_IRQHandler(void)
{
  UREG intf=DMACINTSTATUS;
  if (intf&2)
  {
    //Прерывание от канала 1, приемник
    DMACINTTCCLEAR=2; //Сбрасываем флаг прерываний
    DMACC1DESTADDR=(unsigned long)RX_DMA_P; //Куда
    DMACC1CONTROL=RX_DMA_START_VALUE_CTRL; //Размер и прочее
    DMACC1CONFIGURATION=RX_DMA_START_VALUE_CONF; //Старт тут
    NVIC_SetPend(NVIC_TIMER3); //Стартуем TMR3_IRQHandler - основной код приемника
  }
}
 

  

(Вложенный файл удалён)

"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредствен
Наверх
WWW  
IP записан
 
Rus
Разбирающийся
****
Вне Форума



Сообщений: 1017
Местоположение: Ukraine, Odessa
Зарегистрирован: 22.02.2007
Re: Микроконтроллер - как перспектива примочкостроения
Ответ #399 - 15.05.2012 :: 14:03:48
Post Tools
Спасибо, буду разбираться....
А для передатчика есть примерчик?
  

(Вложенный файл удалён)
Наверх
IP записан
 
 
  « Главная ‹ Раздел Наверх этой страницы