|
Высшая степень вложенности Real/Soft FIQ/IRQ |
|
|
|
Nov 13 2009, 07:14
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Посвящается zltigo и прочим противникам вложенности прерываний  Только что закончил прикручивать звук в и без того сложный проект под FreeRTOS на LPC2368. Звук - это воспроизведение WAV с MicroSD карточки. Работа с SD сделана на основе исходников ffsample.zip (elm-chan.org). 1. Вложенные FIQ Звук (вывод в DAC) пришлось весить на FIQ для того, чтобы он не тормозился программой и осью. Но на FIQ уже висело АЦП и переносить его на IRQ было нельзя. Сначала поставил в начале обработчика проверку откуда источник FIQ и развилку на два обработчика. Всё вроде работало. Но при воспроизведении синуса 48000 Гц на осциллографе (да и в динамике) были искажения из-за того, что проц долго находился в FIQ от АЦП. Пришлось исхитряться и делать вложенные FIQ, работающие в режиме и на стеке Undefined Instruction. Работать в режиме FIQ и отрабатывать другие FIQ нельзя (по крайней мере в известных мне компиляторах), т.к. компиляторы используют регистр LR для своих целей. А обработчик FIQ для АЦП у меня имеет очень сложный алгоритм и переписывать его на асм желания не было. Только пролог и эпилог на асме. Вот если бы была опция (атрибут функции), которая запрещала использовать LR внутри функции, то это было бы реально. На асме (асм-обработчике) такое сделать вообще без проблем. 2. Вложенные Software IRQ Звук в FIQе выводится из двух буферов по 256 байт. Пока один буфер выводится, второй должен успеть обновить данные из SD карточки. Для заполнения этого буфера было выбрано прерывание IRQ со средним приоритетом, вызываемое софтовым способом. То есть как только внутри FIQ произошёл вывод последнего сэмпла из буфера то сразу же записывается (не OR-ится!) бит в VICSoftInt. Далее уровень FIQов продолжает работать с максимальной латентностью не замечая что происходит на более низких уровнях (IRQ,System и прочие). Если на выходе из FIQ есть приоритетные IRQ, то они отрабатываются. Если их нет, то срабатывает софтовое IRQ для подгрузки данных. В начале софтового обработчика сбрасывается флаг софтового прерывания через VICSoftIntClear (не AND-ится!) и происходит переключение в режим и на стек Undefined. То есть я сделал так, что все вложенные прерывания (FIQ & IRQ) работают в режиме и на стеке Undefined Instruction, чтобы они не потребляли "без спросу" стек тредов. Вобщем внутри этого обработчика происходила подгрузка данных и установка флага готовности данных. Затем переключение обратно в IRQ, восстановление регистров, SPSR и окончательный выход в тред или на ещё менее приоритетное прерывание. Тред при этом, отвечающий за воспроизведение WAV, почти ничего не делает, только запускает воспроизведение и ждёт окончания, вызывая delay(). Всё остальное происходит "автоматически". А софтовое IRQ обеспечивает максимальную латентность подгрузки новых данных. LPC2368 @ 24MHz легко справляется с воспроизведением 56000 Гц звука в реальном времени из файла на MicroSD без каких-либо глюков. Глюки появляются на 64000. Но и это не предел, если доработать Ченовский исходник так, чтобы там не было лишнего копирования, то 64000 без проблем. Если ещё убрать конвертацию WAV данных при воспроизведении и копировать (через DMA) прямо в буфер, использующийся в FIQ, то и думаю 80000 реально достичь. И это при том, что модуль воспроизведения WAV использует только 1 КБ данных (буферА) в раме плюс стек Undef. Без вложенности таких параметров никогда не достичь. Если поллить флаг подгрузки данных из треда, то он отъест слишком много времени проца, будет иметь самый высокий приоритет и от силы будет поспевать подгружать данные для звука в 10000 Гц. А садить подгрузку данных в невложенное IRQ тоже не выход, т.к. прога там достаточно долго сидит, и множество других, более приоритетных прерываний "заткнутся" и работа девайса нарушится. Программа в нормальном режиме почти постоянно переключается между пятью режимами ARM-ядра (System, Supervizor, IRQ, FIQ, Undefined) и прекрасно себя чувствует  На картинке - воспроизведение синуса со вложенными FIQ, на нижней - с обычными FIQ. Вместе с FIQ от АЦП.  Пример пролога/эпилога Nested Software IRQ для CW 1.7 Код static void WavIntr_Wrapper() __attribute__((naked)); void WavIntr(); // без static - для стандартной передачи параметров (меньшего сохранения регистров извне)
// софтверное прерывание (VICSoft...), работает в режиме и на стеке Undefined Instruction static void WavIntr_Wrapper() { asm( "STMDB SP!,{R12,LR} \n\t" // 8 байт на стеке IRQ, плюс xx байт на стеке Undefined "MVN LR,#~0xFFFFFF00 \n\t" "MOV R12,#" STRINGFY(1 << RES1_INT) "\n\t" "STR R12,[LR,#0xFFFFF01C-0xFFFFFF00] \n\t" // VICSoftIntClear = (1 << RES1_INT); "MRS R12,SPSR \n\t" "MSR CPSR_c,#0x1b \n\t" // Undef_Mode + Enable IRQ + Enable FIQ "STMDB SP!,{R0-R3,R12,LR} \n\t");
WavIntr(); // должна объявляться глобально, без static
asm( "LDMIA SP!,{R0-R3,R12,LR} \n\t" "MSR CPSR_c,#0x92 \n\t" // IRQ_Mode + Disable IRQ + Enable FIQ "MSR SPSR_all,R12 \n\t" "MVN LR,#~0xFFFFFF00 \n\t" // "MOV R12,#" STRINGFY(1 << RES1_INT) "\n\t" // "STR R12,[LR,#0xFFFFF01C-0xFFFFFF00] \n\t" // VICSoftIntClear = (1 << RES1_INT); "STR LR,[LR] \n\t" // VICAddress = xx; (сброс приоритетов IRQ) "LDMIA SP!,{R12,LR} \n\t" "SUBS PC,LR,#4 \n\t"); } Ещё родилась идея вместо Undef использовать и работать на Supervizor-е. Для этого надо бы внимательно изучить порт LPC2300 FreeRTOS. Прошу высказываться. Критика приветствуется. Готов услышать про недостатки, хотя сам пока ни одного не нашёл
Сообщение отредактировал GetSmart - Nov 13 2009, 07:32
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
 |
Ответов
|
Nov 13 2009, 12:21
|

embarrassed systems engineer
    
Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038

|
Цитата(GetSmart @ Nov 13 2009, 09:33)  Вывод конкретно в DAC (периферия проца), а не в I2S. GPDMA не работает с DAC. Хм, мне не очень понятно зачем выводить 48кГц на 10-битный линейный DAC, да еще и моно. Обычно два класса звуковых приложений - или хотя бы минимальные стерео 48кГц/16 бит - типа простейших плееров, или уже моно 8кГц 8 бит - типа диспетчерских матюгальников/телефонной связи. Ну придумать применение моно/48кГц/10 бит конечно можно, но "ни рыба, ни мясо", ИМХО. Поставили бы уже дешевый I2S кодек, отдавали бы по GPDMA и никаких мучений. Цитата(GetSmart @ Nov 13 2009, 09:33)  А обработчик FIQ для АЦП у меня имеет очень сложный алгоритм Наверное, так тоже можно делать. Но я уже пару лет при наличии ОС с приоритизацией потоков так не делаю - все сложные алгоритмы выносятся "на раз" в приоритетную задачу и там колбасятся. Сложный - значит долгий, если делать его в прерывании - то будет влияние на реал-тайм. Что Вы успешно и доказали - раз Вам понадобились вложенные прерывания. Как мне видится решение Вашей задачи - выносится АЦП в приоритетный поток, а ЦАП - на прерывания, раз уж очень хочется и нету нормальной аппаратуры. А так как сделано сейчас - тут я согласен с zltigo - сами поставили себя в нечеловеческие условия, выкрутились и радуетесь. Замечательно, но потраченным усилиям можно только удивиться. В-общем, я не против вложенных прерываний, все мои порты используемой TN-Kernel их поддерживают. Но, мое мнение - если уж понадобились вложенные прерывания, то в консерватории что-то не так - где-то "главный консерватор" провтыкал.
|
|
|
|
|
Nov 13 2009, 17:46
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(VslavX @ Nov 13 2009, 18:21)  Как мне видится решение Вашей задачи - выносится АЦП в приоритетный поток, а ЦАП - на прерывания, раз уж очень хочется и нету нормальной аппаратуры. А так как сделано сейчас - тут я согласен с zltigo - сами поставили себя в нечеловеческие условия, выкрутились и радуетесь. Замечательно, но потраченным усилиям можно только удивиться. Зачем мне заведомо проигрышное по производительности и ресурсоёмкости решение? Никак не могу понять, где здесь нечеловеческие условия? Вроде всё обыденно. Я с подобными задачами (требованиями) встречаюсь постоянно и очень редко приходится говорить кому-то, что это на данном девайсе сделать невозможно. Плохому танцору мешают только яйца  И усилий было потрачено меньше, чем получено кайфа от работы и от осознания красоты и эффективности решения. Все вышеотписавшиеся живут во власти предрассудков по поводу вложенности. И что бы не случилось, всеми способами пытаются заменить наиболее производительное решение на менее производительное только потому, что не понимают всех хитростей ядра для высокоэффективной организации вложенных прерываний. Цитата(defunct @ Nov 13 2009, 23:37)  Т.е. DMA для ADC в LPC23xx нет. Тогда обоснуйте выбор камня. А кто сказал, что я девайс разрабатывал? Я разрабатывал только программу для готового девайса. Только не делайте поспешного заявления о том, что девайс проектировал дилетант. Дело совсем не в девайсе. Дело в том, что реальный профессионал способен выжать из любого девайса 200% эффективности, тогда как пытающиеся выглядеть профессионалами будут выдавать работодателю заумные объяснения почему что-то там сделать нельзя. Вот здесь вот кодека не хватает. А любимый ход конём - а у вас процессор не той системы
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 13 2009, 18:53
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Решения с вложенными прерываниями имеют право на жисть, и Ваше не такое уж и плохое, но ИМХО, оно применено в условиях когда и без него можно обойтись. Вложенность нужна когда прерывания идут очень неравномерно, т.е. бывают ситуации что идет много одновременно от разных источников и главное успеть зарегестрировать все(т.е. не пропустить ни одного), ну и еще довольно быстро минимально реагировать. У Вас же оба прерывания АЦП и ЦАП вполне себе переодичны. Значит главное обеспечить маленький джитер вывода в ЦАП при работующем FIQ АЦП Цитата(GetSmart @ Nov 13 2009, 20:25)  Сложный, не значит долгий. Сложный - это сложный, долгий - это долгий. Если посмотрите на осциллограмму, то увидите, что в FIQ АЦП прога висит по-разному, но максимум 40 мкс. Это не много для прерываний вообще, но много для FIQ DAC, что явилось объективной причиной для реализации вложенности. Ну вот просто вставьте в FIQ АЦП пару раз проверку на то не пора ли обслужить ЦАП, и обслужите его не отходя от кассы. И джитер можно сделать необходимо малым.
|
|
|
|
|
Nov 13 2009, 19:05
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(singlskv @ Nov 14 2009, 00:53)  Значит главное обеспечить маленький джитер вывода в ЦАП при работующем FIQ АЦП ... Ну вот просто вставьте в FIQ АЦП пару раз проверку на то не пора ли обслужить ЦАП, Сейчас средний джиттер 0.3 мкс (@24 MHz). Мне что, на каждые 10 тактов внутри FIQ вставлять проверку на флаг от таймера для DAC ? А Вы в курсе, что только чтение из T0IR занимает 8 тактов плюс ещё загрузка адреса T0IR ? У меня времени просто не останется собственно для чтения АЦП и действий над оцифрованными данными. Вот! Типичный случай из-за боязни вложенности предлагать заведомо неэффективное решение  Цитата(zltigo @ Nov 14 2009, 01:00)  Можно. Уберите приставку 'псевдо'. Останется процесс обработки. Все в терминах операционных систем. Вы просто организовали процесс НЕ средствами операционной системы, по этой причине я и назвал его 'псевдопроцесс'. Но суть осталась - вложенного прерывания нет - произведена оптимизация обработчика FIQ прерывания и часть его вынесена из этого обработчика. Так и надо строить системы БЕЗ вложенных прерываний. Я не понимаю альтернативу. Предложите конкретный другой вариант. Что такое умеет делать ОС применительно к моему случаю о чём я не знаю?
Сообщение отредактировал GetSmart - Nov 13 2009, 19:15
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 13 2009, 20:01
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(defunct @ Nov 14 2009, 01:28)  Нет, у него обработка АЦП прерывается ЦАПом. Именно так. Цитата В этом наверное есть некий скрытый глубокий смысл, который я боюсь ниасилю. Осилите  Смысл только в увеличении пропускной частотной способности быстродействующих каналов при одинаковой загруженности проца (одинаковом кол-ве FIQs). Когда проц умеет аппаратно складывать значения из АЦП в раму, то можно смело оцифровывать все каналы по очереди. Правда есть минус - требуется буфер (два!), достаточно большой, чтобы тред успевал его выгребать. Но опять же, в девайсе нет никакого счётчика и опять (!) проц не той системы  Поэтому заказчик/работодатель идёт в ж..у. Или я?  Цитата(defunct @ Nov 14 2009, 01:12)  Я не понимаю, что мешает семплировать АЦП на одинаковой (или хотя бы кратной) частоте с ЦАПом, тогда будем иметь одно прерывание и порядок операций:
1. Вывести данные в ЦАП; 2. прочитать АЦП; 3. сменить канал; 4. записать рез-тат в приемный буфер. Мешает заранее неизвестная частота сэмплирования в WAV файле, которая может оказаться совершенно некратной частоте сэмплирования следующего WAV файла. Во-вторых как я уже уточнил, длительнось расчётов некоторых каналов в FIQ АЦП достигает ~40 мкс. Неужели непонятно, что длительность отработки FIQ АЦП больше, чем период прерывания от ЦАП? Вашим алгоритмом можно обойти только джиттер, возникающий из-за вторичного короткого FIQа, но он бесполезен для вторичного длинного FIQа. Цитата(defunct @ Nov 14 2009, 01:12)  Опишите ваш случай вначале, а то получается разговор ни о чем.
Я не понимаю какое действие из трех перечисленных может занимать существенное время: 1. прочитать АЦП; 2. сменить канал; 3. записать результат в память.
Все три в купе @24Mhz должны занимать отсилы 1мкс. Плюс пункт 4. расчёт оцифрованного быстродействующего канала для выявления искомого события. (40 мкс) Повторюсь ещё раз. Этот расчёт нельзя переносить в тред, т.к. скорость реакции будет непредсказуемой или черезмерно большой.
Сообщение отредактировал GetSmart - Nov 13 2009, 19:54
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
Сообщений в этой теме
GetSmart Высшая степень вложенности Real/Soft FIQ/IRQ Nov 13 2009, 07:14   defunct ЦитатаА обработчик FIQ для АЦП у меня имеет очень ... Nov 13 2009, 14:44   GetSmart Цитата(VslavX @ Nov 13 2009, 18:21) Навер... Nov 13 2009, 17:25    defunct Цитата(GetSmart @ Nov 13 2009, 19:25) Что... Nov 13 2009, 17:37    defunct Цитата(GetSmart @ Nov 13 2009, 19:39) Зач... Nov 13 2009, 18:00     GetSmart Цитата(defunct @ Nov 14 2009, 00:00) А с ... Nov 13 2009, 18:19      defunct Цитата(GetSmart @ Nov 13 2009, 20:19) Ско... Nov 13 2009, 18:34       GetSmart Цитата(defunct @ Nov 14 2009, 00:34) Все ... Nov 13 2009, 18:38        defunct Цитата(GetSmart @ Nov 13 2009, 20:38) Отл... Nov 13 2009, 18:46         GetSmart Цитата(defunct @ Nov 14 2009, 00:46) Муль... Nov 13 2009, 18:51          defunct Цитата(GetSmart @ Nov 13 2009, 20:51) Не... Nov 13 2009, 19:12    VslavX Цитата(GetSmart @ Nov 13 2009, 19:46) Все... Nov 13 2009, 18:27     GetSmart Цитата(VslavX @ Nov 14 2009, 00:27) Сильн... Nov 13 2009, 18:34         singlskv Цитата(GetSmart @ Nov 13 2009, 23:01) Име... Nov 13 2009, 21:57          GetSmart Цитата(singlskv @ Nov 14 2009, 03:57) хот... Nov 14 2009, 03:42         defunct Цитата(GetSmart @ Nov 13 2009, 22:01) Это... Nov 13 2009, 23:28 GetSmart Взято из другой темы
Цитата(KRS @ Oct 27 2009... Nov 13 2009, 08:46 zltigo Цитата(GetSmart @ Nov 13 2009, 10:14) ...... Nov 13 2009, 11:52 GetSmart Цитата(zltigo @ Nov 13 2009, 17:52) Обычн... Nov 13 2009, 17:10  defunct Цитата(GetSmart @ Nov 13 2009, 19:10) Раз... Nov 13 2009, 17:12  zltigo Цитата(GetSmart @ Nov 13 2009, 20:10) Пор... Nov 13 2009, 18:47 GetSmart Цитата(zltigo @ Nov 13 2009, 17:52) ...на... Nov 13 2009, 18:55  zltigo Цитата(GetSmart @ Nov 13 2009, 21:55) Нел... Nov 13 2009, 19:00   GetSmart Цитата(zltigo @ Nov 14 2009, 01:00) Можно... Nov 14 2009, 08:48    zltigo ЦитатаДалее высокоприоритетный тред будет
Это може... Nov 14 2009, 09:55     GetSmart Цитата(zltigo @ Nov 14 2009, 15:55) Это м... Nov 15 2009, 13:10      zltigo Цитата(GetSmart @ Nov 15 2009, 16:10) Люб... Nov 15 2009, 13:28       GetSmart Цитата(zltigo @ Nov 15 2009, 19:28) Где В... Nov 15 2009, 13:38        zltigo Цитата(GetSmart @ Nov 15 2009, 16:38) Exc... Nov 15 2009, 13:55       yuri_t Цитата(zltigo @ Nov 15 2009, 17:28) Я дав... Nov 15 2009, 13:39       GetSmart Цитата(zltigo @ Nov 15 2009, 19:28) Пока ... Nov 15 2009, 13:48        yuri_t Цитата(GetSmart @ Nov 15 2009, 16:48) Ну ... Nov 15 2009, 14:05       GetSmart Цитата(zltigo @ Nov 15 2009, 19:28) Я дав... Nov 15 2009, 13:56        zltigo Цитата(GetSmart @ Nov 15 2009, 16:56) Щас... Nov 15 2009, 14:00        VslavX Цитата(GetSmart @ Nov 15 2009, 15:56) Щас... Nov 15 2009, 15:17      singlskv Цитата(GetSmart @ Nov 15 2009, 16:10) По ... Nov 15 2009, 22:35       defunct Цитата(singlskv @ Nov 16 2009, 00:35) Есл... Nov 16 2009, 00:19        singlskv Цитата(defunct @ Nov 16 2009, 03:19) Счит... Nov 16 2009, 00:59         defunct Цитата(singlskv @ Nov 16 2009, 02:59) Не ... Nov 16 2009, 02:37        GetSmart Цитата(defunct @ Nov 16 2009, 06:19) __as... Nov 16 2009, 03:21         defunct Цитата(GetSmart @ Nov 16 2009, 05:21) SWI... Nov 16 2009, 03:24        GetSmart Цитата(defunct @ Nov 16 2009, 06:19) __as... Nov 16 2009, 07:50         zltigo Цитата(GetSmart @ Nov 16 2009, 10:50) ...... Nov 16 2009, 10:27       GetSmart Цитата(singlskv @ Nov 16 2009, 04:35) Я п... Nov 16 2009, 03:31        defunct Цитата(GetSmart @ Nov 16 2009, 05:31) Тол... Nov 16 2009, 04:05         GetSmart Цитата(defunct @ Nov 16 2009, 10:05) Да, ... Nov 16 2009, 05:29          VslavX Цитата(GetSmart @ Nov 16 2009, 07:29) То ... Nov 16 2009, 08:28           GetSmart Цитата(VslavX @ Nov 16 2009, 14:28) Возмо... Nov 16 2009, 08:53            zltigo Цитата(GetSmart @ Nov 16 2009, 11:53) Что... Nov 16 2009, 09:05            VslavX Цитата(GetSmart @ Nov 16 2009, 10:53) Кон... Nov 16 2009, 09:21             GetSmart Цитата(VslavX @ Nov 16 2009, 15:21) А нич... Nov 16 2009, 09:58              zltigo Цитата(GetSmart @ Nov 16 2009, 12:44) Но ... Nov 16 2009, 09:59              VslavX Цитата(GetSmart @ Nov 16 2009, 11:58) Клю... Nov 16 2009, 10:17               GetSmart Цитата(VslavX @ Nov 16 2009, 16:17) Ну, п... Nov 16 2009, 16:51                VslavX Цитата(GetSmart @ Nov 16 2009, 18:25) Вне... Nov 16 2009, 17:40                 GetSmart Цитата(VslavX @ Nov 16 2009, 23:40) И что... Nov 16 2009, 17:57                  zltigo Цитата(GetSmart @ Nov 16 2009, 20:57) Дык... Nov 16 2009, 18:15                  VslavX Цитата(GetSmart @ Nov 16 2009, 19:57) 16 ... Nov 16 2009, 18:41                   GetSmart Цитата(VslavX @ Nov 17 2009, 00:41) То ес... Nov 16 2009, 18:47                    VslavX Цитата(GetSmart @ Nov 16 2009, 20:47) ... Nov 16 2009, 18:55                   GetSmart Цитата(VslavX @ Nov 17 2009, 00:41) ... т... Nov 16 2009, 19:36                    VslavX Цитата(GetSmart @ Nov 16 2009, 21:36) Мен... Nov 16 2009, 20:36                     GetSmart Почувствовав запах крови...он перешёл в наступлени... Nov 17 2009, 07:38                      VslavX Цитата(GetSmart @ Nov 17 2009, 09:38) И ч... Nov 17 2009, 09:56                       GetSmart Цитата(VslavX @ Nov 17 2009, 15:56) а поч... Nov 18 2009, 07:40                        VslavX Цитата(GetSmart @ Nov 18 2009, 09:40) Про... Nov 18 2009, 12:09                         zltigo Цитата(VslavX @ Nov 18 2009, 15:09) enabl... Nov 18 2009, 12:35                          VslavX Цитата(zltigo @ Nov 18 2009, 14:35) Это я... Nov 18 2009, 12:40                        zltigo Цитата(GetSmart @ Nov 18 2009, 10:40) И е... Nov 18 2009, 12:46                         GetSmart Цитата(zltigo @ Nov 18 2009, 18:46) ..для... Nov 18 2009, 13:02                          zltigo Цитата(GetSmart @ Nov 18 2009, 16:02) Вло... Nov 18 2009, 13:27                         GetSmart Цитата(zltigo @ Nov 18 2009, 18:46) ..для... Nov 18 2009, 14:07                          zltigo Цитата(GetSmart @ Nov 18 2009, 17:07) Я ч... Nov 18 2009, 14:27                           GetSmart Цитата(zltigo @ Nov 18 2009, 20:27) Ту, к... Nov 18 2009, 14:41                            zltigo Цитата(GetSmart @ Nov 18 2009, 17:41) Ну ... Nov 18 2009, 14:49                      GetSmart Цитата(GetSmart @ Nov 17 2009, 13:38) Луч... Nov 17 2009, 13:25                       Petka Цитата(GetSmart @ Nov 17 2009, 16:25) Vsl... Nov 17 2009, 15:12                       zltigo Цитата(GetSmart @ Nov 17 2009, 16:25) Не ... Nov 17 2009, 15:15 KRS А взяли бы уже достпуный Cortex-M3 ( LPC1768 вроде... Nov 15 2009, 20:07 Rst7 Кто так строит, кто так строит? (ЦЭ)
Что стоило ... Nov 16 2009, 09:27 GetSmart Цитата(Rst7 @ Nov 16 2009, 15:27) Что сто... Nov 16 2009, 15:19 Rst7 ЦитатаНа ресемплинг не похоже
Он и есть, только б... Nov 16 2009, 17:15 GetSmart Ладно, ладно, приврал На 8-битных WAV квантование... Nov 16 2009, 18:25 GetSmart К слову.
Допустим кто-то поймёт, что вложенные пре... Jun 28 2010, 20:25 zltigo QUOTE (GetSmart @ Jun 28 2010, 23:25) Не ... Jun 28 2010, 20:47 GetSmart Цитата(zltigo @ Jun 29 2010, 01:47) На са... Jun 28 2010, 21:01 zltigo QUOTE (GetSmart @ Jun 29 2010, 00:01) Сме... Jun 28 2010, 21:16 singlskv Цитата(GetSmart @ Jun 29 2010, 01:01) Дык... Jun 28 2010, 22:04  GetSmart Цитата(singlskv @ Jun 29 2010, 03:04) Про... Jun 28 2010, 22:23   singlskv Цитата(GetSmart @ Jun 29 2010, 02:19) ИМХ... Jun 28 2010, 22:25
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|