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

Racurs

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

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

  • Посещение

Репутация

0 Обычный

Информация о Racurs

  • Звание
    Участник
    Участник
  1. Работаю с эмулятором SAU510. Принимаю данные с камеры по RS-232 через микросхему UART, в параллельном коде считываю процессором данные и отправляю их через SCIA. Под эмулятором данные выдаются с частотой 3Гц, если прошить flash, то почему-то период между отправкой данных увеличивается примерно в 10 раз и составляет около 3 с. В чём проблема? Данные с камеры и запросы на неё стабильны и частота запросов не изменяется. Если ставить в настройках CCS5 оптимизацию хоть какую данные, которые отправляю на камеру имеют скорость не 9600 а значительно более низкую.
  2. Есть необходимость принимать DSP информацию с линии CAN и в полном объёме (идентификаторы, сообщения и т.д.) передавать по 422 интерфейсу, например, в компьютер. Как это реализовать? как сделать чтобы один мэйлбокс, настроенный на приём, хватал все сообщения с разными ID. В конечном итоге надо получить монитор CAN линии.
  3. А какие значения емкостей вы ставили? С1, С2? У меня С1=10 пФ, С2=47 пФ
  4. Так в том то и дело.. Может опыт был работы с этой микросхемой?Запустилась сразу?
  5. Проблема не решилась. Внешний генератор не подключал, нет его да и толку. Надо с кварцем разобраться. На 3 платах всё одинаково(. На одной кварц перепаял на другую частоту.не помогло. Какие может настройки внутренних регистров менять надо чтобы увидеть тактовую частоту? К внутренним регистрам доступ есть.
  6. Использую микросхему TL16C752B от TI, обвязка передатчика выполнена в соответствии со схемой и номиналами, указанными в даташите, но на осциллографе только постоянный уровень висит в 3,3В.Генерации нет. Кварц проверен на другой схеме генератора- держит 3,072 МГц стабильно. В чём может быть причина?Опробовано 3 платы с аналогичной микросхемой и обвязкой, результаты одинаковые.
  7. вот рабочие файлы настройки и отправки. Советую проверить разводку платы и правильность распайки CAN передатчика InitECAN.txt PdoEpos.txt
  8. Имеется два ДУС ADIS16080, которые используются для стабилизации видеокамеры по крену и тангажу. Из-за шумов и дрейфа датчика добиться продолжительной стабилизации невозможно - система уходит. Аналитически определил влияние температурного дрейфа и ввожу это в расчёт используя встроенный датчик температуры. Для уменьшения шума - апериодическое звено. Есть возможность включить инклинометр ADIS 16201. Подскажите какую САУ можно использовать для обеспечения продолжительной стабилизациии и лишиться всех указанных проблем.
  9. Вроде как разобрался!!!! Плату развели не очень корректно. Сча копаю глубже. На ногах сигнал появился после включения АВО=1
  10. на линии никакого устройства не висит. сигнал смотрю с ноги процессора и после передатчика. настройка ЖПИО: #include "system.h" void Gpio_select(void) { EALLOW; GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6=1; GpioMuxRegs.GPFMUX.bit.CANRXA_GPIOF7=1; GpioMuxRegs.GPFDIR.bit.GPIOF9=1; // вывод настраиваю на вывод информации EDIS; GpioDataRegs.GPFDAT.bit.GPIOF9=0; //вывод уст. в 0 } в качестве передатчика использую sn65hvd233. Очевидных ошибок в коде не видите?
  11. Вообще кто-нибудь пытался настроить CAN в соответствии с даташитом по КЭНу (январь 2009)? Всё делаю по пунктам, но ничего не отправляется. Запускаю пошагово, возникает ошибка CANES=0x00030020 после строки. Ставлю SUSP=1 возникает ошибка CANES=0x00030010. Не понимаю откуда возникает эта 3. Код всё время висит на while(ECanaShadow.CANTA.bit.TA2 == 0 ). Привожу свой код конфигурации КЭНа, мэйлбокса для отправки. В тексте опущены некоторые функции настройки GPIO и SysCtrl. В чём здесь проблема? +++++++++инициализация+++++++++++++++++++++ #include "DSP281x_Device.h" void InitECan(void) { struct ECAN_REGS ECanaShadow; EALLOW; ECanaShadow.CANTIOC.all = ECanaRegs.CANTIOC.all; ECanaShadow.CANTIOC.bit.TXFUNC = 1; ECanaRegs.CANTIOC.all = ECanaShadow.CANTIOC.all; ECanaShadow.CANRIOC.all = ECanaRegs.CANRIOC.all; ECanaShadow.CANRIOC.bit.RXFUNC = 1; ECanaRegs.CANRIOC.all = ECanaShadow.CANRIOC.all; //очистка флагов ECanaRegs.CANTA.all = 0xFFFFFFFF; ECanaRegs.CANRMP.all = 0xFFFFFFFF; ECanaRegs.CANGIF0.all = 0xFFFFFFFF; ECanaRegs.CANGIF1.all = 0xFFFFFFFF; ECanaShadow.CANMC.all = ECanaRegs.CANMC.all; ECanaShadow.CANMC.bit.CCR = 1 ; ECanaRegs.CANMC.all = ECanaShadow.CANMC.all; do { ECanaShadow.CANES.all = ECanaRegs.CANES.all; } while(ECanaShadow.CANES.bit.CCE ==0 ); ECanaRegs.CANES.all=ECanaShadow.CANES.all; ECanaShadow.CANBTC.all = ECanaRegs.CANBTC.all; ECanaShadow.CANBTC.bit.BRPREG = 9; ECanaShadow.CANBTC.bit.TSEG2REG = 2; ECanaShadow.CANBTC.bit.TSEG1REG = 10; ECanaShadow.CANBTC.bit.SAM = 0; ECanaRegs.CANBTC.all = ECanaShadow.CANBTC.all; ECanaShadow.CANMC.all = ECanaRegs.CANMC.all; ECanaShadow.CANMC.bit.SUSP = 0 ; ECanaShadow.CANMC.bit.CCR = 0 ; ECanaShadow.CANMC.bit.PDR = 0 ; ECanaShadow.CANMC.bit.DBO = 0 ; ECanaShadow.CANMC.bit.WUBA = 0 ; ECanaShadow.CANMC.bit.CDR = 0 ; ECanaShadow.CANMC.bit.ABO = 0 ; ECanaShadow.CANMC.bit.STM = 0 ; ECanaShadow.CANMC.bit.SRES = 0 ; ECanaShadow.CANMC.bit.MBNR = 0 ; ECanaRegs.CANMC.all = ECanaShadow.CANMC.all; ECanaMboxes.MBOX2.MSGCTRL.all = 0x00000000; do { ECanaShadow.CANES.all = ECanaRegs.CANES.all; } while(ECanaShadow.CANES.bit.CCE ==1 ); EDIS; } ++++++++++++мэйлбокс++++++++++++++++++++ void main(void) { struct ECAN_REGS ECanaShadow; ECanaShadow.CANTRR.all=ECanaRegs.CANTRR.all; ECanaShadow.CANTRR.all = 0xffffffff; ECanaRegs.CANTRR.all=ECanaShadow.CANTRR.all; do { ECanaShadow.CANTRS.all=ECanaRegs.CANTRS.all; } while(ECanaShadow.CANTRS.bit.TRS2 == 1); ECanaShadow.CANME.all=ECanaRegs.CANME.all; ECanaShadow.CANME.bit.ME2 = 0; ECanaRegs.CANME.all=ECanaShadow.CANME.all; ECanaMboxes.MBOX2.MSGID.bit.IDE = 0; ECanaMboxes.MBOX2.MSGID.bit.AAM = 0; ECanaMboxes.MBOX2.MSGID.bit.AME = 0; ECanaMboxes.MBOX2.MSGCTRL.bit.DLC = 2; ECanaMboxes.MBOX2.MSGCTRL.bit.RTR = 0; ECanaMboxes.MBOX2.MSGID.bit.STDMSGID = 0x201; ECanaShadow.CANMD.all=ECanaRegs.CANMD.all; ECanaShadow.CANMD.bit.MD2=0; ECanaRegs.CANMD.all=ECanaShadow.CANMD.all; ECanaShadow.CANME.all=ECanaRegs.CANME.all; ECanaShadow.CANME.bit.ME2 =1 ; ECanaRegs.CANME.all=ECanaShadow.CANME.all; //==============transmit================= ECanaMboxes.MBOX2.MDL.all = 0x00800000; ECanaShadow.CANTRR.all=ECanaRegs.CANTRR.all; ECanaShadow.CANTRR.all = 0x00000000; ECanaRegs.CANTRR.all=ECanaShadow.CANTRR.all; ECanaShadow.CANTRS.all=ECanaRegs.CANTRS.all; ECanaShadow.CANTRS.bit.TRS2 = 1; ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all; do { ECanaShadow.CANTA.all=ECanaRegs.CANTA.all; } while(ECanaShadow.CANTA.bit.TA2 == 0 ); // Wait for TA2 bit to be set.. ECanaShadow.CANTA.all=ECanaRegs.CANTA.all; ECanaShadow.CANTA.bit.TA2 = 0; ECanaShadow.CANTA.bit.TA2 = 1; // Clear TA2 ECanaRegs.CANTA.all = ECanaShadow.CANTA.all; } ...в сэлфтесте при SUSP=1 и 0 ошибок нет и бежит счётчик циклов
  12. В Вашем коде бит TRS, который даёт отмашку на отправку мэйлбокса, сбрасывается, что говорит о успешной отправке. Несмотря на это, бит ТА не устанавливается. И самее главное - на выходе процессора ничего не видно. Может есть у Вас идеи?
×
×
  • Создать...