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

K A A

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

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

  • Посещение

Сообщения, опубликованные K A A


  1. Пользуясь случаем, хочу спросить. Кто-нибудь знает, какая компания первой сделала разъёмы подобного типа (зеленые разъёмы различного шага, которые сейчас чуть-ли не стандартные в пром. автоматизации)? Кто автор?

     

    22310_1000_int_01.jpg

     

    Вроде как Phoenix первая

  2. Это, я так понимаю, при создании компонента? Это не наш путь - все библиотеки перелопачивать надо. Проще создать копию pcb, взорвать там все компоненты и скопировать графику. Но некрасивое решение получается.

  3. Я создаю библиотеки с помощью встроенного визарда, с использованием слоя Top Overlay для шелкографии, Mechanical 15 - для отрисоки контуров компонентов и Mechanical 13 - для 3D-объектов. Для создания сборочного чертежа хотелось бы использовать данные со слоев Mechanical 15 и Top Overlay (взять оттуда Designators). Но они не копируются на другой слой. Переносятся, но не копируются.

    У меня используется Overlay с Designators для шелкографии. А вот продублировать Designators на другой слой не получается. Как и информацию со слоя Mechanical 15. Снял галку Lock Primitives в свойствах компонентов, примитивы выделяются, но не хотят вставляться на другой слой (с помощью Alt + Insert). Как победить? (Altium Winter 09)

  4. Я тоже недавно пытался определять момент окончания пересылки данных через SPORT и ничего лучшего не придумал, как тупо ждать по таймеру. Черт дернут прицепить сигма-дельта АЦП с SPI-интерфейсом к SPORTу. Потратил кучу времени, пока все заработало.

  5. Пишу программу вычисления действующего значения сигнала с помощью КИХ-фильтрации.

    Алгоритм следующий: 16-бит выборки возвожу в квадрат, получаю 32 бит, затем умножаю на весовой коэффициент (32 бит) и прибавляю к аккумулятору. При такой разрядности нужно использовать все 40 бит аккумулятора MAC, и то этого мало. Но никак не пойму, как это сделать на С. Функции из fract_math.h реализуют умножение 32x32 -> 32 и сложение 32+32 -> 32, как обрабатывать дополнительные 8 бит? Или писать на ассемблере?

     

    ЗЫ: почему такая разрядность - просто погрешность результата должна быть на уровне 0.001%. Почти получается, когда алгоритм был реализован с использованием вещественной арифметики. Для улучшения стабильности нужно увеличить размер окна в несколько раз (сейчас 4096, хорошо бы раз в 16 больше, путем интерполяции на лету), соответственно увеличить частоту - тут уже проц не поспевает. Еще возможные проблемы с float при большом окне - ограничение разрядности, когда сумма накопится большая, а слагаемые очень маленькие, при этом они будут игнорироваться.

     

    Так как это сделать на С?

  6. Я программирую по SPI в режиме slave. Для этого использую переходник USB-SPI на базе FT2232C, вот здесь есть готовая плата на этом чипе: Propox

    Программу для программирования написал сам на VB. Все хорошо работает. Если нужно, могу поделиться программулиной.

  7. А в чем проблема-то?

    Вот, например, инициализация для работы в режиме slave:

     

    void Init_SPI(void)
    {
        #define SPI_SCLK_FREQ 1e6 // Частота SCLK при работе интерфейса в режиме master
        *pSPI_BAUD = (unsigned short)(SCLK/(2*SPI_SCLK_FREQ));
        *pSPI_FLG = UPD_REG;
        *pSPI_CTL = 0
            | RDBR_CORE    // передачи начинаются при чтении SPI_RDBR, прерывание 
                                                 // генерируется  при заполнении SPI_RDBR
    //        | SZ        // когда SPI_TDBR пуст, то передача нуля       
    //        | GM        // когда SPI_RDBR заполнен, предыдущие данные перетираются 
            | PSSE      // режим выбора ведомого разрешен
            | EMISO     // выход MISO разрешен
    //        | SIZE      // длина слова 16 бит
    //        | LSBF      // LSB first
            | CPHA      // SCK меняет состояние в начале первого бита данных
    //        | CPOL      // активный уровень SCK низкий
    //        | MSTR      // режим ведущего
    //        | WOM       // выход с открытым стоком
            | SPE    // SPI-порт разрешен
                     ;
        *pSPI_TDBR = SPI_WAITCMD_CODE; // запись в регистр передачи чего-то там
        #undef SPI_SCLK_FREQ
    }

     

    Обрати внимание на конструкцию со многими "|" - это для наглядности (установка битов). Там где строка закомментирована, соответствующий бит сброшен. Определения в cdefBF53x.h

     

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

     

    void Init_Interrupts(void)
    {
    
        // assign ISRs to interrupt vectors
        // используем назначение прерываний по умолчанию
        register_handler(ik_ivg9, SPORT0_ISR);        // прерывание данных SPORT0_ISR -> IVG9
        register_handler(ik_ivg10, Spi_ISR);      // Spi_ISR -> IVG10
        register_handler(ik_ivg11, Timer0_ISR);  // Timer0 ISR -> IVG 11
        register_handler(ik_ivg12, ADC_ISR);        // прерывание от АЦП (PF5) ADC_ISR -> IVG12
    
        // enable interrupts
        *pSIC_IMASK = 0
                 | DMA1_IRQ        // прерывание приема SPORT0
                 | DMA5_IRQ        // прерывание данных от SPI
                 | TIMER0_IRQ    // прерывания от таймера 0
                 | PFA_IRQ        // прерывание программируемого флага A
                ;
            
    }

     

    А вот само прерывание от SPI:

     

    EX_INTERRUPT_HANDLER(Spi_ISR)
    {
        
    
        unsigned char buf = (unsigned char)*pSPI_RDBR; // чтение буфера приема и сброс запроса 
                                                                                      // на прерывание
             // .........
    }

  8. Дык, вроде бы там ничего особенного. Настраиваешь SPI-порт и работаешь с ним. Все регистры описаны, и вроде, даже по-русски. С FT2232, может, придется больше повозиться. Но там есть примеры для работы по SPI через интерфейс D2XX.

  9. Начал писать программу для BlackFin и возникло несколько вопросов:

    1. Объектные файлы линкуются, используя информацию из .ldf. Где можно почитать об этом подробно по-русски, как этот ldf настраивать? Знаю, что есть описание на английском, но тяжеловато все сразу осилить.

    2. Это принятый в индустрии метод или что-то специфичное для AD, все эти секции, а в них какие-то непонятные объекты? До этого писал программы на C с помощью gcc для AVR, там с такими вещами не сталкивался.

    Заранее спасибо.

  10. Именно так и делаю (командой Place Plane). И нифига. Может, версия спектры не совсем свежая (10.2)?

     

    О, сейчас обнаружил, что они все-таки передаются, просто в спектре не видны. А как бы настроить, чтобы границы планов отображались?

  11. Создаю в PCAD2004 слой типа Plane, в нем делаю разные полигоны типа Plane, к которым подключаю разные цепи питания. Но Спектра их игнорирует. Можно ли их как-то передать в Спектру? А то приходится делать кучу разных слоев Plane с разными питаниями, и после разводки сводить их в PCAD на один слой.

  12. Всегда делал все расчеты в MathCAD. Но вот хочется чего-нибудь более заточенного под ЦОС. Например, есть текстовый фал с данными (выборками АЦП), хочу посмотреть график, спектр (без программирования), быстро рассчитать и применить разные фильтры. Что сейчас модно в этом плане? Интерфейс бы вроде звуковых редакторов - все визуально. Или не выеживаться и работать в MathCAD?

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