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

AltemirX

Свой
  • Постов

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

  • Посещение

Весь контент AltemirX


  1. Ого! Не знал. Спасибо огромное! Получается, компилятор/линкер игнорировали моё объявление "void TIMER0_IRQHandler(void);", подставляя функцию из *.s файла? А указанное Вами объявление задало им соответствующий приоритет выбора указанной функции?
  2. Всем день добрый. Разбираюсь с прерываниями LPC176x в IAR 6.21, столкнулся с такой проблемой: 1. Настроен таймер на генерацию прерываний 2. Определена функция void TIMER0_IRQHandler(void) согласно наименованию в startup_LPC17xx.s, который подключен к проекту и не изменялся 3. После запуска программы перехода на мою функцию нет, такое ощущение, что программа переходит на дефолтную, определённую в startup_LPC17xx.s и зацикливается Выкидывал из проекта startup_LPC17xx.s, определял векторы/функции через отдельный файл vector_table_M.c, всё работает как надо, переходы фиксируются. Листинг указанного файла: //------------------------------------------------------------------------------- #pragma language=extended #pragma segment="CSTACK" //------------------------------------------------------------------------------- extern "C" void __iar_program_start( void ); //------------------------------------------------------------------------------- __weak void NMI_Handler( void ) { while (1) {} } __weak void HardFault_Handler( void ) { while (1) {} } __weak void MemManage_Handler( void ) { while (1) {} } __weak void BusFault_Handler( void ) { while (1) {} } __weak void UsageFault_Handler( void ) { while (1) {} } __weak void SVC_Handler( void ) { while (1) {} } __weak void DebugMon_Handler( void ) { while (1) {} } __weak void PendSV_Handler( void ) { while (1) {} } __weak void SysTick_Handler( void ) { while (1) {} } __weak void WDT_IRQHandler( void ) { while (1) {} } __weak void TIMER0_IRQHandler( void ) { while (1) {} } __weak void TIMER1_IRQHandler( void ) { while (1) {} } __weak void TIMER2_IRQHandler( void ) { while (1) {} } __weak void TIMER3_IRQHandler( void ) { while (1) {} } __weak void UART0_IRQHandler( void ) { while (1) {} } __weak void UART1_IRQHandler( void ) { while (1) {} } __weak void UART2_IRQHandler( void ) { while (1) {} } __weak void UART3_IRQHandler( void ) { while (1) {} } __weak void PWM1_IRQHandler( void ) { while (1) {} } __weak void I2C0_IRQHandler( void ) { while (1) {} } __weak void I2C1_IRQHandler( void ) { while (1) {} } __weak void I2C2_IRQHandler( void ) { while (1) {} } __weak void SPI_IRQHandler( void ) { while (1) {} } __weak void SSP0_IRQHandler( void ) { while (1) {} } __weak void SSP1_IRQHandler( void ) { while (1) {} } __weak void PLL0_IRQHandler( void ) { while (1) {} } __weak void RTC_IRQHandler( void ) { while (1) {} } __weak void EINT0_IRQHandler( void ) { while (1) {} } __weak void EINT1_IRQHandler( void ) { while (1) {} } __weak void EINT2_IRQHandler( void ) { while (1) {} } __weak void EINT3_IRQHandler( void ) { while (1) {} } __weak void ADC_IRQHandler( void ) { while (1) {} } __weak void BOD_IRQHandler( void ) { while (1) {} } __weak void USB_IRQHandler( void ) { while (1) {} } __weak void CAN_IRQHandler( void ) { while (1) {} } __weak void GPDMA_IRQHandler( void ) { while (1) {} } __weak void I2S_IRQHandler( void ) { while (1) {} } __weak void Ethernet_IRQHandler( void ) { while (1) {} } __weak void RIT_IRQHandler( void ) { while (1) {} } __weak void MotorControlPWM_IRQHandler( void ) { while (1) {} } __weak void QE_IRQHandler( void ) { while (1) {} } __weak void PLL1_IRQHandler( void ) { while (1) {} } //------------------------------------------------------------------------------- typedef void( *intfunc )( void ); typedef union { intfunc __fun; void * __ptr; } intvec_elem; //------------------------------------------------------------------------------- #pragma location = ".intvec" extern "C" const intvec_elem __vector_table[]= { { .__ptr = __sfe( "CSTACK" ) }, __iar_program_start, NMI_Handler, HardFault_Handler, MemManage_Handler, BusFault_Handler, UsageFault_Handler, 0, 0, 0, 0, SVC_Handler, DebugMon_Handler, 0, PendSV_Handler, SysTick_Handler, WDT_IRQHandler, TIMER0_IRQHandler, TIMER1_IRQHandler, TIMER2_IRQHandler, TIMER3_IRQHandler, UART0_IRQHandler, UART1_IRQHandler, UART2_IRQHandler, UART3_IRQHandler, PWM1_IRQHandler, I2C0_IRQHandler, I2C1_IRQHandler, I2C2_IRQHandler, SPI_IRQHandler, SSP0_IRQHandler, SSP1_IRQHandler, PLL0_IRQHandler, RTC_IRQHandler, EINT0_IRQHandler, EINT1_IRQHandler, EINT2_IRQHandler, EINT3_IRQHandler, ADC_IRQHandler, BOD_IRQHandler, USB_IRQHandler, CAN_IRQHandler, GPDMA_IRQHandler, I2S_IRQHandler, Ethernet_IRQHandler, RIT_IRQHandler, MotorControlPWM_IRQHandler, QE_IRQHandler, PLL1_IRQHandler }; //------------------------------------------------------------------------------- Помогите разобраться, в чём может быть проблема? Нужно ли что-то менять в startup_LPC17xx.s? Листинг стандартного: ; Cortex-M version ; MODULE ?cstartup ;; Forward declaration of sections. SECTION CSTACK:DATA:NOROOT(3) SECTION .intvec:CODE:NOROOT(2) EXTERN __iar_program_start EXTERN SystemInit PUBLIC __vector_table PUBLIC __vector_table_0x1c PUBLIC __Vectors PUBLIC __Vectors_End PUBLIC __Vectors_Size DATA __vector_table DCD sfe(CSTACK) DCD Reset_Handler DCD NMI_Handler DCD HardFault_Handler DCD MemManage_Handler DCD BusFault_Handler DCD UsageFault_Handler __vector_table_0x1c DCD 0 DCD 0 DCD 0 DCD 0 DCD SVC_Handler DCD DebugMon_Handler DCD 0 DCD PendSV_Handler DCD SysTick_Handler ; External Interrupts DCD WDT_IRQHandler ; 16: Watchdog Timer DCD TIMER0_IRQHandler ; 17: Timer0 DCD TIMER1_IRQHandler ; 18: Timer1 DCD TIMER2_IRQHandler ; 19: Timer2 DCD TIMER3_IRQHandler ; 20: Timer3 DCD UART0_IRQHandler ; 21: UART0 DCD UART1_IRQHandler ; 22: UART1 DCD UART2_IRQHandler ; 23: UART2 DCD UART3_IRQHandler ; 24: UART3 DCD PWM1_IRQHandler ; 25: PWM1 DCD I2C0_IRQHandler ; 26: I2C0 DCD I2C1_IRQHandler ; 27: I2C1 DCD I2C2_IRQHandler ; 28: I2C2 DCD SPI_IRQHandler ; 29: SPI DCD SSP0_IRQHandler ; 30: SSP0 DCD SSP1_IRQHandler ; 31: SSP1 DCD PLL0_IRQHandler ; 32: PLL0 Lock (Main PLL) DCD RTC_IRQHandler ; 33: Real Time Clock DCD EINT0_IRQHandler ; 34: External Interrupt 0 DCD EINT1_IRQHandler ; 35: External Interrupt 1 DCD EINT2_IRQHandler ; 36: External Interrupt 2 DCD EINT3_IRQHandler ; 37: External Interrupt 3 DCD ADC_IRQHandler ; 38: A/D Converter DCD BOD_IRQHandler ; 39: Brown-Out Detect DCD USB_IRQHandler ; 40: USB DCD CAN_IRQHandler ; 41: CAN DCD DMA_IRQHandler ; 42: General Purpose DMA DCD I2S_IRQHandler ; 43: I2S DCD ENET_IRQHandler ; 44: Ethernet DCD RIT_IRQHandler ; 45: Repetitive Interrupt Timer DCD MCPWM_IRQHandler ; 46: Motor Control PWM DCD QEI_IRQHandler ; 47: Quadrature Encoder Interface DCD PLL1_IRQHandler ; 48: PLL1 Lock (USB PLL) __Vectors_End __Vectors EQU __vector_table __Vectors_Size EQU __Vectors_End - __Vectors ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; Default interrupt handlers. ;; THUMB PUBWEAK Reset_Handler SECTION .text:CODE:REORDER(2) Reset_Handler LDR R0, =SystemInit BLX R0 LDR R0, =__iar_program_start BX R0 PUBWEAK NMI_Handler SECTION .text:CODE:REORDER(1) NMI_Handler B NMI_Handler PUBWEAK HardFault_Handler SECTION .text:CODE:REORDER(1) HardFault_Handler B HardFault_Handler PUBWEAK MemManage_Handler SECTION .text:CODE:REORDER(1) MemManage_Handler B MemManage_Handler PUBWEAK BusFault_Handler SECTION .text:CODE:REORDER(1) BusFault_Handler B BusFault_Handler PUBWEAK UsageFault_Handler SECTION .text:CODE:REORDER(1) UsageFault_Handler B UsageFault_Handler PUBWEAK SVC_Handler SECTION .text:CODE:REORDER(1) SVC_Handler B SVC_Handler PUBWEAK DebugMon_Handler SECTION .text:CODE:REORDER(1) DebugMon_Handler B DebugMon_Handler PUBWEAK PendSV_Handler SECTION .text:CODE:REORDER(1) PendSV_Handler B PendSV_Handler PUBWEAK SysTick_Handler SECTION .text:CODE:REORDER(1) SysTick_Handler B SysTick_Handler PUBWEAK WDT_IRQHandler SECTION .text:CODE:REORDER(1) WDT_IRQHandler B WDT_IRQHandler PUBWEAK TIMER0_IRQHandler SECTION .text:CODE:REORDER(1) TIMER0_IRQHandler B TIMER0_IRQHandler PUBWEAK TIMER1_IRQHandler SECTION .text:CODE:REORDER(1) TIMER1_IRQHandler B TIMER1_IRQHandler PUBWEAK TIMER2_IRQHandler SECTION .text:CODE:REORDER(1) TIMER2_IRQHandler B TIMER2_IRQHandler PUBWEAK TIMER3_IRQHandler SECTION .text:CODE:REORDER(1) TIMER3_IRQHandler B TIMER3_IRQHandler PUBWEAK UART0_IRQHandler SECTION .text:CODE:REORDER(1) UART0_IRQHandler B UART0_IRQHandler PUBWEAK UART1_IRQHandler SECTION .text:CODE:REORDER(1) UART1_IRQHandler B UART1_IRQHandler PUBWEAK UART2_IRQHandler SECTION .text:CODE:REORDER(1) UART2_IRQHandler B UART2_IRQHandler PUBWEAK UART3_IRQHandler SECTION .text:CODE:REORDER(1) UART3_IRQHandler B UART3_IRQHandler PUBWEAK PWM1_IRQHandler SECTION .text:CODE:REORDER(1) PWM1_IRQHandler B PWM1_IRQHandler PUBWEAK I2C0_IRQHandler SECTION .text:CODE:REORDER(1) I2C0_IRQHandler B I2C0_IRQHandler PUBWEAK I2C1_IRQHandler SECTION .text:CODE:REORDER(1) I2C1_IRQHandler B I2C1_IRQHandler PUBWEAK I2C2_IRQHandler SECTION .text:CODE:REORDER(1) I2C2_IRQHandler B I2C2_IRQHandler PUBWEAK SPI_IRQHandler SECTION .text:CODE:REORDER(1) SPI_IRQHandler B SPI_IRQHandler PUBWEAK SSP0_IRQHandler SECTION .text:CODE:REORDER(1) SSP0_IRQHandler B SSP0_IRQHandler PUBWEAK SSP1_IRQHandler SECTION .text:CODE:REORDER(1) SSP1_IRQHandler B SSP1_IRQHandler PUBWEAK PLL0_IRQHandler SECTION .text:CODE:REORDER(1) PLL0_IRQHandler B PLL0_IRQHandler PUBWEAK RTC_IRQHandler SECTION .text:CODE:REORDER(1) RTC_IRQHandler B RTC_IRQHandler PUBWEAK EINT0_IRQHandler SECTION .text:CODE:REORDER(1) EINT0_IRQHandler B EINT0_IRQHandler PUBWEAK EINT1_IRQHandler SECTION .text:CODE:REORDER(1) EINT1_IRQHandler B EINT1_IRQHandler PUBWEAK EINT2_IRQHandler SECTION .text:CODE:REORDER(1) EINT2_IRQHandler B EINT2_IRQHandler PUBWEAK EINT3_IRQHandler SECTION .text:CODE:REORDER(1) EINT3_IRQHandler B EINT3_IRQHandler PUBWEAK ADC_IRQHandler SECTION .text:CODE:REORDER(1) ADC_IRQHandler B ADC_IRQHandler PUBWEAK BOD_IRQHandler SECTION .text:CODE:REORDER(1) BOD_IRQHandler B BOD_IRQHandler PUBWEAK USB_IRQHandler SECTION .text:CODE:REORDER(1) USB_IRQHandler B USB_IRQHandler PUBWEAK CAN_IRQHandler SECTION .text:CODE:REORDER(1) CAN_IRQHandler B CAN_IRQHandler PUBWEAK DMA_IRQHandler SECTION .text:CODE:REORDER(1) DMA_IRQHandler B DMA_IRQHandler PUBWEAK I2S_IRQHandler SECTION .text:CODE:REORDER(1) I2S_IRQHandler B I2S_IRQHandler PUBWEAK ENET_IRQHandler SECTION .text:CODE:REORDER(1) ENET_IRQHandler B ENET_IRQHandler PUBWEAK RIT_IRQHandler SECTION .text:CODE:REORDER(1) RIT_IRQHandler B RIT_IRQHandler PUBWEAK MCPWM_IRQHandler SECTION .text:CODE:REORDER(1) MCPWM_IRQHandler B MCPWM_IRQHandler PUBWEAK QEI_IRQHandler SECTION .text:CODE:REORDER(1) QEI_IRQHandler B QEI_IRQHandler PUBWEAK PLL1_IRQHandler SECTION .text:CODE:REORDER(1) PLL1_IRQHandler B PLL1_IRQHandler END
  3. Провёл такой: 1 датчик на расстоянии 1,5м от мастера, затем 130м, в конце линии - 7 датчиков. Всё работает. Единственное, на осциллограмме ответа ближнего датчика заметны провалы ниже земли до -0,7..-0,6В (судя по всему это он был, т.к. на остальных 7 блоках такого не наблюдалось), когда мастер формирует фрейм, а слэйв удерживает 0 (спад из 1 в 0). Длительность провала около 2мкс, сам переходный процесс - около 5мкс. Это если осцилл стоит возле 7 датчиков. Если возле одного датчика, то такие провалы у семи. Если измерения проводить у самого мастера, то там ещё интереснее, естественно :)
  4. xemul Удивляюсь просто! Бывают же достойные развёрнутые ответы на форуме! В общем, более-менее, решил задачу. Поскольку партия пока опытная, можно было экспериментировать. Поднял питание до +5В, помогло как применительно к фронтам, так и, естественно, к просадке по питанию датчиков. Экспериментально получено, что, в зависимости от смотки бухты, кабель UTP-5e имеет от 37 до 55пФ/м. Оконцованные датчики (с 1,5м кабеля) имеют ёмкость около 140пФ. Если делать общую конфигурацию, не выходящую за рамки 7нФ, то всё ведёт себя достаточно стабильно, т.е. с одним датчиком пробиваются 130м витухи (на том и останавливаюсь). На 30м - 32 датчика и на 130м - 17 датчиков работают :) Ограничусь суммарным допуском в 5нФ в серии, сегменты делать не стану, т.к. вполне можно удовлетвориться сейчас полученным результатом. 300м - мечта в текущей конфигурации... На будущее учту свои грабли. За приведение таймингов - ещё раз спасибо. Не вы один такой ;)
  5. Дааа... хорош мастер-контроллер. Нечего сказать. Смысл было далласу такой городить? Только ради облегчения формирования таймингов? Постфактум заметил в Примечаниях даташита: DS2482-100 В то же время, для DS2480B kolobok0 Да, проверял, не дотягивает. Сегодня буду делать доработку до +5В, т.к. обнаружил, что на проходном защитном элементе (22Ом, блин) может падать напряжение до 1,1В при максимальной нагрузке со стороны датчиков. Подтяжку резистором можно делать только при трёхпроводной схеме, у меня - однопроводная, датчики распределены по зданию. xemul Отличный и понятный ответ! Огромное спасибо вам за разъяснения! А вы имели опыт работы с длинными линиями на 1-Wire? На чём строили?
  6. А кто какие расстояния смог пробить? Использую DS2482S-100 в качестве мастера и DS18B20 - слэйвы. У мосфета мастера в истоке - 10Ом. Линия 300м витой пары с одним датчиком на конце не пробивается. Явно проблема в ёмкости линии, она равна ~15нФ. Если без удлинения подключить параллельно датчику 10нФ - связи нет, с 6.8нФ - есть. Фронты завалены, ессно, для больших емкостей. По осциллограммам видно, что от мастера фронты и времянки более-менее соответствуют, а от слэйва лог. 1 не успевает дойти до требуемого уровня. И ещё - мастер сидит на +3,3В. Подключение двухпроводное.
  7. Всем день добрый. Есть следующая задача. На разных платах ограниченных габаритов предполагается расположить проц c SRAM-памятью (LPC2214+K6R4016V1D-UI10) на первой и матрицу (EP3C5) на второй. Проц работает на частоте ~60МГц, к матрице обращается по параллельной шине, как к SRAM. Платы между собой предполагается соединить шлейфом длиной ~5см, суммарное расстояние между процом и матрицей ~20см. Разместить матрицу на одной плате вместе с процом нет возможности, т.к. к последней подключена куча элементов/блоков и пробросить через имеющийся разъём/шлейф сложно. Через тот же шлейф по краю могут проходить силовые линии (12В 1А (изолированное от цифры питание) + 3,3В 0,3А (сама цифра)). Желательно или простое или с минимальным количеством проводов решение. Помогите найти правильное для подключения. Пока есть два возможных решения: 1. Пробросить параллельную шину напрямую, как есть, отводя возможное воздействие со стороны силовых линий. Терминаторы? 2. Использовать сериалайзеры/десериалайзеры. Опыта не имел и есть вопрос, могут ли они работать с параллельной шиной проца? На стороне матрицы последовательную шину можно, наверное и оставить, т.к. LVDS-приймопередатчики у неё свои есть. Спасибо.
  8. Ключом интегратор всё-равно потребуется разряжать. Проблема в другом - Cx разряжается на высоковольтный делитель. Соответственно, постоянную времени необходимо подстраивать и для цепи разряда и для интегратора :(
  9. Промоделировал дальше схему с интегратором и схему с релаксационным генератором: 1. Для работы с интегратором потребуется ещё переключать, в зависимости от диапазона, верхний резистор в делителе от измеряемого конденсатора перед интегратором 2. Схема с релаксационным генератором оказалась самой неустойчивой, т.к. а) в линии ещё присутствует, как я написал в начале, проходной резистор 5,6кОм, который подключается последовательно с Cx и влияет на режим работы генератора б) при внесении сигнала помехи происходит срыв генерации, или биения, или "генерация" на частоте помехи, т.к. напряжение на конденсаторе уже не определяется резистором ОС ОУ, а ток помехи через Cx становится больше тока, обеспечивающего режим генератора.
  10. Если использовать ряд частот (в зависимости от диапазона), то можно только ФНЧ. Помоделировал с интегратором. 1. В симуляторе всё выглядит красиво, если источник помехи включен последовательно с Cx, т.к. входное сопротивление интегратора большое. 2. Если же источник помехи включен параллельно измеряемой ёмкости, то - беда :( Разряд в этом случае идёт уже не через интегратор, а через источник помех. Как будет на практике пока ещё не известно. Нужно думать, а заодно и поиграться регулировкой диапазонов. P.S. 3. Разряд Cx будет идти не на сам интегратор, а на делитель перед интегратором, т.к. тестовое напряжение равно 150В
  11. Если я правильно понял - получается вариация первого рабочего метода, предложенного мной для рассмотрения в начале поста? Но по скорости проигрывает? "Минут" для измерения нет, рамки временнЫе указал в начале. Метод неплохой, но всё-же требует бОльшего усреднения. Плюсы - ЦОС значительно проще. Синхронное детектирование можно самим ЦП и АЦП делать, по схемотехнике аналогично предложенному мной. Минусы - ??? Да, и ещё. Ток источника помехи может на порядки превышать ток моего источника сигнала (измерительного генератора), который протекает через измеряемую ёмкость.
  12. В своём первом посте я указал, что нет физической возможности подключиться к конденсатору двумя линиями, иначе бы не затевал эту тему, т.к. диф измерения на 20км линии и сейчас работают прекрасно (+-0,3% за неделю при ёмкости 340нФ) при 30В наведёнки линия-земля. А ОУ может выгореть не из-за насыщения, а из-за 300В, о которых я указал тоже в начале поста. Можете привести для описанной задачи пример релаксационного генератора? Да, только количество измерений с релаксационным генератором можно было бы провести на порядок больше за то же время измерения, чем как у меня - постоянным током
  13. В моём случае ёмкость линии учитывается в измерениях, т.к. включена в состав измерений: более-менее постоянная величина в пределах нескольких часов - точно, значение этой ёмкости может достигать и единиц микрофарад. Блуждающие токи? Силовые кабели рядом и мощные нагрузки? Да, это как раз тот случай :( Приёмник и передатчик разделять нельзя. Преобразование ёмкость-частота и включение измеряемой ёмкости в частотозадающую цепь генератора - думал об этом, но помехоустойчивость будет никакая, как мне кажется. Наведённое напряжение может вызвать срыв генерации, выведет ОУ в режим насыщения, если совсем не убьёт схему. К тому же следует помнить, что один конец частотозадающей ёмкости заземлён. 2 Tanya Сейчас занялся моделированием как раз, как доделаю, сообщу. Пока интересует ещё ряд вопросов: 1. Используя интегратор для моего случая, как я понимаю, скорее всего придётся разбивать диапазон на три декады -> три значения ёмкости интегратора (или два-три интегратора), которые придётся коммутировать ключами с малой утечкой. При использовании IVC102 придётся ли использовать внешние конденсаторы или достаточно встроенных и можно поиграться временем интегрирования? 2. Не получится ли схема с интегрированием эквивалентом уже используемой (описал выше)? При этом добавляется ФНЧ: заряжаем неизвестную ёмкость до известного напряжения, разряжаем на известное сопотивление с фильтрацией верхних чатот. В этом случае, в зависимости от значения неизвестной ёмкости следует перестраивать ФНЧ и защищённость от разных спектральных составляющих будет меняться от измеряемой ёмкости. Т.е. в области малых емкостей - ВЧ часть помехи влияет, в области больших емкостей - НЧ часть. Бред тогда получается с таким эквивалентом. 3. В целом, помехоустойчивее ли предложенный Вами вариант варианта, который предложил я в начале поста?
  14. Наведённое напряжение - величина случайная, даже спектр помехи гуляет в зависимости от работы разнородного оборудования, которое находится рядом с линией. Токи помехи проходят и через измеряемую ёмкость тоже, величины до десятков миллиампер. Вызывает недоверие работа с интегратором, т.к. пока не особо представляю, как он может помочь в случае, например, если в эквивалентной схеме параллельно измеряемой ёмкости будет подключен источник помехи :( Не могли бы Вы пояснить, если не затруднит?
  15. Вариант. Как оценить помехоустойчивость в таком случае? Интегратор аналоговый, цифровой, аналоговый и цифровой? Как быть с диапазоном в 3 порядка для аналогового интегратора? Есть ли какие статьи по этому методу?
  16. Здравствуйте. Стоит задача - добавить в готовое устройство с ограниченными габаритами печатной платы схему измерения ёмкости в условиях промышленных помех с длинными линиями. Требования могут быть скорректированы, но базовые таковы: 1. Диапазон измеряемых емкостей 10нФ...10мкФ, разрешение в 1нФ, относительная погрешность 2% 2. На линии присутствуют помехи промышленной частоты (может наводиться, если честно, всё что угодно, спектрограмму сейчас привести сложно), среднеквадратичное значение в диапазоне до 1500Гц может достигать 18..45В 3. Внешние конструктивные и организационные методы защиты от помех на линии использовать нельзя 4. Измерения производятся недифференциальным методом (один провод до объекта длиной несколько километров и заземление) 5. Желательно уложиться в габариты без источников питания и CPU: 20*20мм с обеих сторон ПП 6. Время измерения должно быть в пределах 20...40сек 7. Необходима защита от попадания с линии высоких напряжений до 300В амплитудного значения 8. Последовательно со схемой измерения ёмкости в линии стоит резистор номиналом 5.6кОм 1%, обойти который нельзя. Номинально измеритель ёмкости в приборе уже присутствует, используется заряд постоянным током (напряжение 150В) и метод оценки напряжения по двум точкам экспоненты. Ведётся несколько измерений, затем выбирается значение после медианной фильтрации. Помехоустойчивость низкая, естественно: реальное значение от измеренного может отличаться в 2-3 раза при большом наведённом напряжении. Как вариант рассматривается схема измерения на переменном токе с сеткой частот, например: 3, 13, 33, 133Гц. Использовать какой-нибудь малогабаритный ЗЧ-усилитель, есть CPU типа LPC1768 с ЦАП-ом на борту, который можно подключить к усилку для генерации синусоид. АЦП можно взять от того же CPU, либо есть двуполярное внешнее 12bit 250kSps. Оценить значение ёмкости на переменном токе можно через реактивное сопротивление. Выделить нужную частоту и отсечь помехи полосовым фильтром математикой ЦП тоже можно. Решение ли это? Есть ли ещё какие варианты?
  17. Нет, не было. А мы не надписям на карте верили. Считывали CID, CSD, проверяли по ним. Перед закупкой осведомлялись о наличии той же партиии у поставщика. Поставщик надёжный. Для отрекомендованных выше производителей никаких разбросов в пределах партии нет.
  18. Вот поэтому перед тем, как закупать в наши девайсы в большом кол-ве microSD, мы потратились на 10-ок различных, оценили глючность/быстродействие/совместимость, где надо немного подрихтовали код и только потом делали закупку. На хорошем счету - Toshiba, Transcend. Kingston - ещё та девица, у кого хочет, у тех и покупает память, маркируя под себя. В итоге - от партии к партии может значительно отличаться скорость и наличие "камушков".
  19. Интересно, а можно узнать поподробнее? Что показали результаты экспериментов? Какой разброс?
  20. А нельзя было использовать что-то типа "Zero-Cross Triac"? Самим ничего городить не пришлось бы. Есть специальные управляющие симисторы-драйверы для подключения к более мощным. Стоят - копейки. Только вопрос синхронности их работы, но это можно проверить, насколько допустимо
  21. Семейство TPS54xxx от TI смотрели? Я выбрал универсал под свои задачи TPS54140. Для менее ответственных решений засматривался на OnSemi CS5141x и CS517x. По цене - они вне конкуренции, вроде. Позиционируются как более навороченный и современный аналог МС34063. К сожалению, не использовал пока.
  22. А развязка от первичного источника нужна? Берётся источник 9-36, на вход через диод шоттки или "идеальный диод" буферный аккум. А кто этот аккум заряжает, кстати? http://www.tracopower.com/High-Power-Modules.212.0.html http://www.tracopower.com/High-Performance-2.213.0.html
  23. Freescale Kinetis

    К сожалению, именно от марта. Есть в чём обвинить их, неправда ли ;)
  24. ATMEL (Умирает?)

    Ничего подобного. Речь идёт о диаметре самих пластин и процес этот ой, как не устаревший. Беседовал лично с дистрибьютором TI на эту тему. Вот официальный линк
  25. По поводу crosszero почитайте у компаний, занимающихся разработкой SOC-ов для счётчиков электроэнергии. У кого-то встречал очень подробно размусоленное неплохое решение (программное, после АЦП, без компаратора). Вроде, у TI или Teridian, но могу ошибаться. Тогда кучу всяких soc-ов перерыл.
×
×
  • Создать...