Перейти к содержанию
    

kostya-m

Участник
  • Постов

    207
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные kostya-m


  1. АЧХ по точкам не вводят, как и в Матлабе. Вводят частоты среза и задержания, неравномерность в полосе пропускания, затухание в полосе задержания.

    Понимаю. Но у меня другая задача. Нужен не фильтр с предельными параметрами, а коректирующий, с определенными. Причем коррекция делается по тренду, а мелкие неравномерности опускаются. И коррекция нужна с фазой, а не только АЧХ.

    ввод по точкам есть в system view.
    У QEDesign2000? Попробую его посмотреть.

    Спасибо за информацию.

    Вообще, чувствую, что программную часть проекта в срок не уложусь, не хватает опыта, только микроконтроллерами занимался ARМ и AVR. Можно ли к кому тут обратиться? Нужно два входных потока, три пары фильтров, две пары регулируемых задержек. Это на разных частотах дискретизации. АЧХ третьего фильтра будет зависеть от ЧД. Дайте знать личкой, кто может сделать.

     

    Если АЧХ нужно задавать именно по точкам, то в MATLAB есть функция remez,

    О, спасибо, интересно. Жаль тут не вводится фаза, мне без нее никак. Может есть отдельный фазокорректирующий фильтр?

  2. Не подскажете ли готовые, желательно бесплатные, программы, в которых можно было бы ввести АЧХ и ФЧХ требуемого фильтра по точкам, сгладить их, получить коэффициенты для КИХ фильтра, оценить шумы квантования, ограничения по длине по заданной точности, выбрать минимально требуемые ширины коэффициентов, умножителей и накопителей. Хорошо бы это было бы в графической форме. Совсем хорошо с интеграцией с CCS от TI. Возможно, я не до разобрался с плагинами в CCS

  3. Так и писать по таблицам FAT сразу взводя флаг необходимости синхронизации FAT c родной системой , кэшировать в RAM/Flash и потом писать.

    Спасибо! Я примерно так и подумал. Получается, что сначала надо прокешировать запись, а когда будет обновление FAT и DIR, тогда и переносить транзакцию во внутреннюю файловую систему.

  4. достаточно на той файловой системе перед обращением сгенерировать файл содержащий "FAT" для внешних нужд.

    У я тормоз!

    Спасибо :)

    Наверное еще положить начальный сектор и, м.б. DIR-ы в нужном формате.

     

    Так, а при записи как поступать?

  5. Media Transfer Protocol - он вроде только на чтение, или я ошибаюсь?

     

    Так однозначного ответа не нашел по необходимости лицензирования ExFAT, но, косвенно читая MSDN, наверно надо, если не ставишь в устройство WinCE.

  6. ExtFAT и есть самая что ни на есть отказоустойчивая файловая система

    Как я понял, не совсем, хотя с элементами танзакционности. :)

    К тому же ее надо лицензировать у Мелкомягких, она не свободная, а девайс коммерческий.

    Как выход делать Mass Storage c FAT на RAM. А уж от туда перекачивать на вашу проприетарную систему.

    Опасаюсь, что РАМ-а не хватит, там итак плотненько.

    Но почему вам трудно сделать FTP через тот же RNDIS?

    Придется ставить еще и IP. Но это вариант.

    Или вам ключи от сорсов еще дать?

    А покажите того, кто откажется :))))

  7. Я ничего не эмулирую. Форматирует винда.

    Т.е. у Вас плоское адресное пространство, отформатированное виндой под FAT. Вы сами так же к нему обращаетесь через встроенный драйвер FAT и пишете туда логи. Я правильно понял?

    Если так, то мне это не подходит, поскольку встроенная MicroDS карточка в нашем проекте отформатирована не под FAT, а под отказоустойчивую файловую систему, которую Win не понимает и я не могу отрыть плоский доступ к ней. А проблемы кеширования у меня наоборот нет, во время обслуживания, основной работы контроллером не ведется.

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

    А как Вы реализуете, эмуляция FAT отформатированного пространства или по-другому?

     

    Информация: USB.Mass.Storage

    Спасибо! Похоже тут ответы на все вопросы!

  9. Какая разница, транслируется open() в некий неведомый запрос неведомому драйверу общающемуся по неведомому протоколу с неведомым устройством.

    Вот неведомых там не было, ничего дополнительного в винды не ставилось.

    Отлично! Поднимаете примитивнейший FAT, причем совершенно не изобретая ни сущностей, ни велосипедов и вот оно счастье:

    Не понял, поподробнее. С флэш дисками фатом заведует Винда, а флеш диск, сколько я знаю, представляет из себя плоскую область памяти. Вы имеете в виду поднять в моем устройстве анти FAT? Т.е. эмуляцию FAT отформатированного пространства. В моем устройстве, в отличе от того, что я видел, будет много папок, часть из них виртуальные, а доступ к разным файлам будет зависеть от состояния устройства. Тут бы конечно а-ля сетевой доступ было бы проще реализовать, ну или, по крайней мере, прозрачнее, но Ethernet в нем нет и IP так же. А если эмулировать пространство, то мне заранее неизвестно в какой сектор захочет винда положить измененный или новый файл, она просто начнет писать, а потом модифицировать область DIR и FAT. Получается, что однозначное решение только на чтение.

  10. Самое смешное, это какой прикладной протокол для этого предполагается использовать.

    Уж не AT ли команды?

    Как-то было реализовано. Но тогда мне это было не надо и я не вникал. А сейчас...

    Реализовано было не сложно, девайс был достаточно простой. Суть была в том, что подключенное к компу устройство было видно как диск. При этом в самом устройстве никаких дисков не было. На этом сэмулированном диске были файл конфигурации, который можно было отредактировать из текстового редактора и таким образом настроить устройство и файлы логов событий, они были вроде как только для чтения. Сама идея такого простого администрирования устройства мне тогда и запала в душу.

  11. Вообще не представляю, нафига такое может быть использовано.

    Девайс достаточно сложен внутри и имеет на флеш диске файловую систему не поддерживаемую Windows. Можно, конечно, и сэмулировать FAT отформатированное пространство для Windows, но решение несколько кривое. Как вариант оно рассматривается, но с низким приоритетом. Хотелось бы по-человечески, файловое обращение. Если бы это было сетевое устройство, а не USB, то я бы просто повесил ftp сервер.

  12. Вопрос из разряда поиска информации. Года два назад, мне казалось, что я видел спецификацию USB устройства со встроенной файловой системой. Обычные флешки предлагают себя как область памяти сегментированную или нет, но файловая система обеспечивается внешней ОС, например Windows. А тут вопрос о том, что внутри устройства уже есть файловая система. Может то, что я видел раньше, это не то что мне надо. Потому вопрос: Существует ли некая спецификация устройств USB так, что бы компьютер обращался именно пофайлово? Это еще интересно тем, что можно поднять некие системные ресурсы в виде виртуальных папок.

    Возможно, как вариант, технология Push (ActiveSync) от Microsoft. С ней не сталкивались? Она вроде требует лицензирования.

  13. Совсем так. Буквы "ARM" и в том числе "ARM Corteх" для которого Вы спрашивали исходники, никоем образом не характеризуют имеющуюся в наличии переферию. И даже простую ногодрыгательную.

    Совсем никак.

    Безсмысленное обсуждение. Есть основные принципы того, как надо задавать вопросы на форуме, когда надо изложить вопрос в полном объеме. Если отвечающий считает информацю излишней, то игнорирует. В другой раз возможна ситуация, когда будет важно не только ARM, но и в конкретной реализации. Вы указали, что наиболее простая реализация без использования специальной периферии, за что Вам большое спасибо. И еще прошу не передергивать, я указал не просто "ARM Corteх", а и список производителей, а это уже исчерпывающая информация о доступной периферии.

    Понятия не имею, что такое для Вас "базовая работа"

    Наиболее типичное использование: прием данных по клавишам, управление светодиодами. В отличие от работы с программируемой клавиатурой.

  14. Большое спасибо за код!

    Да, а ну если использует некую более продвинутую периферию, то буквы ARM тоже ровным счетом ничего не значат. "Чернила для третьего класса"

    Не совсем так. Если бы использовался I2C модуль, как наиболее похожий по строению, то реализация в AVR Tiny будет отличаться значительно.

    Вы чего спросили-то? Передает команды, получает ответы и сканкоды нажатых клавиш.... Сканкоды перекодируюся в буквы, цифры и управляющие коды.....

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

  15. Безмерно стало интересто, чем "модуль" под FreeRTOS и ARM, по Вашему отличается от "модуля", ну,напимер, под AVR и Bigloop.

    В операционке может отличаться встраивание. А по платформе может изменяться управление. Конечно, коли код использует только порт, то различий почти нет. Ваша реализация клавиатуры PS/2 реализует какие функции интерфейса? Чего достаочно что бы клавиатуры работали по дефолту в реалии?

  16. А вопрос-то в чем состоит? Документацию для реализации PS/2 найти не можете или готовые программные модули в дар ждете?

    Описание протокола у меня есть. Надеялся, что есть готовые библиотечки. Если ответить на последний вопрос - ДА.

    Спасибо за ссылку. Поиск по форуму это не находит, наверное движек не любит слешик.

     

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

     

    АRM, операционые системы и прочие подробности нималейшего значеня не имеют.

    Не то что бы совсем не имеют. Если модуль уже под FreeRTOS и ARM, то работы меньше.

     

    USB не катит, тем более задача поставлена именно PS/2

  17. Пытаюсь подобрать контроллер под задачу. Практически точно уже остановился на ARM Cortex, но еще не решил в чьем исполнении: STM, NXP или TI. Но обязательно нужна возможность подключения PS/2 клавиатуры. Напрямую я не заметил такого интерфейсного модуля. Хотя он сильно смахивает на I2C, но ему не соответствует. Предполагаю, что этот вопрос уже решали (я что-то не нашел). Киньте пожалуйста ссылок или комментариев по этой теме. Программа, скорее всего, будет основываться на FreeRTOS.

  18. If a master-receiver is involved in a transfer, it must signal the end of data to the slave-transmitter by not generating an acknowledge on the last byte that was clocked out of the slave. The slave-transmitter must release the data line to allow the master to generate a STOP or repeated START condition.

    Во первых, это несколько не то, о чем я спрашивал. К тому же тут рассматривается не совсем хорошая ситуация - мастер прерывает передачу (то ли память кончилась, то ли протокол нарушен...). Т.е. если идет нормальный обмен, то прерывать никого не надо, каждый выдаст столько байт, сколько предусмотрено протоколом (не I2C, а конкретного устройства).

    А Вы почитайте родное филипсовское описание I2C, а не гадайте "логично - не логично":

    У протокола I2C есть своя логика. Я ее понимаю так, что когда все нормально, то любая передача подтверждается ACK. NAK используется для сигнализации ошибки, как то после передачи адреса не нашелся такой абонент или после передачи байта что-то стало не так. И в приведенной цитате расписано как надо себя вести в ответ на NAK.

     

    Логика - после опускания ведущим SCL в конце "9-го" такта, тактирующего бит подтверждения, ведомый уже должен выдать первый бит следующего читаемого байта

    Я рассматриваю не чтение из ведомого, а простую запись в него, т.е. все только в одну сторону от мастера к ведомому. И для этой ситуации произвожу поиск СТОП условия, которое не обрабатывается железно.

    Т.е. в случае чтения из ведомого бит NAK от ведущего следует рассматривать как "давай ещё".
    Точнее АСК.

    Вот поэтому ведущий и даёт NAK на следующий байт - как признак окончания передачи.
    Да. Однако логической ошибки нет, если ведомый передатчик уже все передал и такой NAK только подтверждает окончание передачи. Вот если ведомый передатчик имеет в очереди на отправку еще байты, а ему сказали NAK, то это уже состояние ошибки, ведомый с мастером не синхронизованы по передаваемым данным.
  19. Если кому интересно, вопрос решился простым дополнением указанного фрагмента из обработчика прерывания по переполнению USI

     

        case USI_SLAVE_REQUEST_DATA:
          USI_TWI_Overflow_State = USI_SLAVE_GET_DATA_AND_SEND_ACK;
          SET_USI_TO_READ_DATA();
          while ( (PIN_USI & (1<<PORT_USI_SCL)) == 0 );   
          while ( (PIN_USI & (1<<PORT_USI_SCL)) )
          {
            if((USISR & (1<<USIPF)) )
            {
    //    Собственно выполнить действие по фиксации принятых данных, как завершенного пакета
            }
          }
          //clr( LED );
          break;

  20. Остался от поректа на ATMega128 JTAGICE (не МКII, обычный с СОМ портом). Стал его прилаживать, а он сообщает, что неоддерживает микросхему. Кто в курсе, можно его прешить на новое или все, в сад?

    Поскольку JTAGICE без корпуса, а только плата и происхождения неизвестного мне, то его опишу, может это нечто другое. Однако до этого функционировал из IAR именно как JTAGICE. Плата с двумя микроконтроллрами AT90S2313 и ATMega16L, плюс буфер на JTAG и на COM порт. Три светодиода: красный, желтый и зеленый.

  21. А что разве в ATTiny2313 есть I2C (TWI)?

    В ней есть USI, котрый может работать в режиме TWI, но обработку протокола I2C надо делать кодом, железного драйвера нет.

     

    Приемник принимая данные выставляет АСК и только при принятии последнего байта NACK.

    Разве это корректно? Если нормально принимаешь, то всегда надо ACK выставлять, а как мастер решит что хватит передавать, то он перестает и выставляется stop condition. А то получается, что сигнализируем, что последний байт мы не приняли нормально. Конечно это останавливает передачу, но сама логика как-то нарушена. Или я не прав?

     

    Господа, корректно ли делать проверку

    USISR & (1<<USIPF)

    внутри прерывания по переполнению

        case USI_SLAVE_REQUEST_DATA:
          USI_TWI_Overflow_State = USI_SLAVE_GET_DATA_AND_SEND_ACK;
          SET_USI_TO_READ_DATA();
          break;

    ? Может надо небольшую задержку вставить? Неужели никто корректно stop на ведомом не обрабатывал?

    Очень не хочется это переносить в рабочий цикл, там время реакции не определено. Пеедавать длину посылки считаю костылем, который уж если и прилаживать, то в самый последний момент.

  22. Зато есть флаг

     

    Цитата

    Bit 5 – USIPF: Stop Condition Flag

    When Two-wire mode is selected, the USIPF flag is set (one) when a stop condition is

    detected. The flag is cleared by writing a one to this bit. Note that this is not an interrupt

    flag. This signal is useful when implementing Two-wire bus master arbitration.

     

     

    в регистре USISR

     

    Вот его и тестируйте.

    Все верно. Но где его анализировать: в основном цикле прогаммы или внутри прерывания? Я не сторонник подолгу сидеть внутри while-ов, код программы должен работать, а не сидеть в ожидниях. Практически, я спрашиваю о чужом опыте, как лучше?

  23. Да конденсатор по питанию есть , правда в 30 см от МК.

    26-я возбуждается если до конднсатора более 5-10 см проводников. Вынужден был ставить под микросхему smd керамику 0.1 мкф. Все проблмы пропали. А до этого стоял пеночный 0.1мкф в 5 см от микросхемы и ее колбасило.

  24. Суть в том, что мастер (ATMega1280) шлет строку для вывода разной длины. Конец строки знаменуется концом передачи - stop condition. Но в ATTiny2313, как я понял, нет прерывания при достижении конца приема. В качестве образца кода драйвера использован классиеский пример AVR312. Может в код

        // ----- Master read data mode ------
        // Set USI to sample data from master. Next USI_SLAVE_GET_DATA_AND_SEND_ACK.
        case USI_SLAVE_REQUEST_DATA:
          USI_TWI_Overflow_State = USI_SLAVE_GET_DATA_AND_SEND_ACK;
          SET_USI_TO_READ_DATA();
          break;

    добавить while с ожиданием будет stop или продолжение? Или я туплю и есть способ элегантнее?

×
×
  • Создать...