Jump to content

    

VadimNic_nt

Участник
  • Content Count

    84
  • Joined

  • Last visited

Everything posted by VadimNic_nt


  1. Здравствуйте уважаемые специалисты! Может кто сталкивался с контроллером солнечных батарей EPSolar LS0512 или подобным. Собственно у меня вопрос в следующем. В описании устройства указано, что номинальный ток заряда / разряда аккумулятора - 5 А. Можно но ли с эти устройством использовать аккумулятор, номинальный ток заряда которого 2,7 А? Можно ли как то при помощи навесных элементов совместить этот контроллер с аккумулятором типа GSL9-12 9Ah? Может кто-нибудь посоветовать готовый встраиваемый контроллер заряда-разряда свинцовой АКБ (нужно чтобы в одном устройстве совмещались функции контроллера разряда до минимального рабочего напряжения АКБ с защитой от КЗ и контроллера заряда, желательно с возможностью настройки зарядного тока или режимов заряда). Заранее спасибо. Контроллер заряда АКБ от солнечных батарей EpSolar-LS0512.pdf GSL9-12 9Ah (-40...+60'C).pdf
  2. Здравствуйте уважаемые специалисты ! Хочу понять работу высоковольтной части схемы фотовспышки Sigma EF-500DG (схема взята на сайте impulsite.ru). Если у кого есть опыт по этой теме, прошу объяснить как можно подробнее. P.S. Может кто посоветует, где можно найти схему на фотовспышку EF - 610 DG ?
  3. Спасибо за комментарий. Мне в этой схеме еще не понятно назначение элементов левее VT1. Зачем нужна схема на VT2 и SCR1, DTR1, FET4 с соответствующими элементами в обвязке? Зачем транзистор FET3 управляется по линии 4 и через транзистор FET6? Насколько правильно дано описание на сайте http://impulsite.ru/viewtopic.php?p=7883#p7883 " Вообще говоря, на результат измерения может влиять собственное внутреннее сопротивление мультиметра. Кроме того, если обратиться к схеме, то видно, что через R14, R13 и стабилитрон VD1 протекает ток, недостаточный для нормального уровня стабилизации. Поэтому в режиме ожидания напряжение на VD1 будет низкое. Лишь в динамике, непосредственно перед поджигом лампы, запирается FET3 открывается DTR1 и по цепи R35, R11, SCR1 начинает протекать ток, падение напряжения на R35 открывает VT2 и резистором R12 поддерживается ток не более 64 мА (кратковременно) через VD1, что обеспечивает номинальное напряжение стабилизации VD1. В этот момент на затворе VT1 должно наблюдаться примерно 28-30 В. И наблюдать можно осциллографом. Или, полагая, что детали стабилизатора напряжения и драйвера исправны, то можно подбирать стабилитрон под IGBT-транзистор. Или 30 В для CT40KM, RJP4301, RJP63F3A и др.. Или 17-18 В - для транзисторов IRG4BC40, HGT1S20N60C3, TIG056BF, RJP5001... и подобных. Кроме напряжения стабилизации еще важен минимальный/номинальный ток стабилизации стабилитрона. Он должен быть не больше 2-5 мА. "
  4. Здравствуйте! Хотелось бы разобраться с возможностью просмотра во время отладки переменных в окне Logic Analyzer. Просмотрел документацию Keil, Segger, но Logic Analyzer для введенных переменных ничего не отображает. Не могу разобраться что делаю не так. Использую отладку MCBSTM32 с камнем stm32f103rc, есть фирменные отладчики ULINK2 и J-LINK Ultra+. Может кто-нибудь поделиться готовым настроенным проектом, чтобы эта функция работала? Заранее Спасибо.
  5. Keil 5.25 +STM32F476 NUCLEO

    Здравствуйте форумчане! Пытаюсь запустить под симулятором стандартный проект NUCLEO-L476RG\Examples_LL\ADC, при запуске симуляции сразу возникает ошибка: Load "STM32L476RG_NUCLEO\\STM32L476RG_NUCLEO.axf" WS 1, `aADCxConvertedData,0x0A WS 1, `aADCxConvertedData_Voltage_mVolt,0x0A *** error 65: access violation at 0x40021000 : no 'read' permission Симулятор останавливается на строке Set MSION bit void SystemInit(void) { /* FPU settings ------------------------------------------------------------*/ #if (__FPU_PRESENT == 1) && (__FPU_USED == 1) SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */ #endif /* Reset the RCC clock configuration to the default reset state ------------*/ /* Set MSION bit */ RCC->CR |= RCC_CR_MSION; Все настройки проекта по умолчанию. Что нужно поправить, чтобы погонять проект под симулятором?
  6. Keil 5.25 +STM32F476 NUCLEO

    Спасибо, доступ к регистрам появился частично. Судя по документу RM0351диапазон адресов шин APB1 - APB2 - AHB1 - AHB2 от 0x40000000 до 0x50060BFF но при указании этого диапазона в INI файле KEIL выдаёт ошибку ***error 129: MapMem - map size truncated to 128MB.
  7. Использование в Keil Region-related symbols

    Все работает. Кроме extern необходимо использовать & 6.3.7 Methods of importing linker-defined symbols in C and C++ You can import linker-defined symbols into your C or C++ source code. They are external symbols and you must take the address of them. The only case where the & operator is not required is when the array declaration is used, for example extern char symbol_name[];. http://www.keil.com/support/man/docs/armli...62065956104.htm
  8. Здравствуйте Все! Хотелось бы разобраться с использованием Linker-defined symbols в проекте Keil. http://www.keil.com/support/man/docs/armli...62065951495.htm Меня конкретно интересует возможность использования переменной Load$$LR$$load_region_name$$Length http://www.keil.com/support/man/docs/armli...62065953823.htm Почему при сборке проекта линковщик выдает ошибку, что символ не определен....
  9. Использование в Keil Region-related symbols

    Для проверки использовал следующий код: /*---------------------------------------------------------------------------- Main Program *----------------------------------------------------------------------------*/ int main (void) { /* main entry for program */ uint32_t test[4]; extern uint32_t Load$$LR$$LR_IROM1$$Limit; extern uint32_t Load$$LR$$LR_IROM1$$Base; extern uint32_t Load$$LR$$LR_IROM1$$Length; ...... test[0] = (uint32_t)&Load$$LR$$LR_IROM1$$Limit; test[1] = (uint32_t)&Load$$LR$$LR_IROM1$$Base; test[2] = (uint32_t)&Load$$LR$$LR_IROM1$$Length; test[3] = test[0] - test[1]; .... }
  10. Использование в Keil Region-related symbols

    Спасибо, действительно линкуется без ошибок. А эти переменные обязательно использовать через указатель?
  11. Добрый день! Подыскиваем для покупки ремонтный центр. Хотелось бы приобрести качественное изделие. Вопрос цены - примерно на уровне ERSA HR-600 (+/-). Центр будет использоваться на производстве при отработке или ремонте малых и средних ПП (т.е. загрузка не большая, но на все случаи жизни ))) ) Интересует возможность пайки широкой номенклатуры smd/bga компонентов. Может кто-то может поделиться своим опытом подбора или эксплуатации, что-либо посоветовать. Есть ли у кого опыт эксплуатации FINEPLACER® core, ERSA IR550A plus ? http://www.fineplacer.ru/advanced-rework/p...acerr-core.html Заранее спасибо.
  12. Цитата(SNGNL @ Mar 29 2016, 23:40) Могу порекомендовать PDR станции. К примеру. Очень гибкая и удобная система, требующая минимум дополнительных принадлежностей. Легко поддается модификации. Для таких корпусов либо конвекционная пайка, либо съемный зачерненный кожух. Спасибо за наводку на PDR. Очень интересный центр.
  13. Здравствуйте форумчане! Может кто нибудь поделиться готовой технологической инструкцией по smd монтажу с применением паяльной станции. На первый взгляд кажется все просто, но когда сталкиваешься с браком ручной сборки, то получается нужен документ на который можно сослаться и объяснить сборщику какие операции были выполнены не правильно. Особенно актуально, если сборщик не совсем профессионал в этом деле. Может быть у кого-то есть инструкции по обслуживанию паяльной станции и уходу за жалами. У нас на участке паяльные станции ERSA Dig2000A-Micro http://www.chipdip.ru/product/ersa-dig2000a-micro/ . Заранее спасибо.
  14. Цитата(SNGNL @ Mar 30 2016, 00:40) Могу порекомендовать PDR станции. К примеру. Очень гибкая и удобная система, требующая минимум дополнительных принадлежностей. Легко поддается модификации. Для таких корпусов либо конвекционная пайка, либо съемный зачерненный кожух. Всем Спасибо !
  15. Цитата(ZZmey @ Mar 24 2016, 16:07) Ну керамику можно паять смело, любую. А вот на текстолитовой основе 30х30 уже сложно, не говоря о МС с металлическим защитным корпусом. Сейчас выпускается много микросхем с очень маленькими корпусами 10х10 мм и менее в корпусах типа bga или qfn с большим количеством выводов, например ПЛИС или процессоры с числом выводов 100...144. Такие микросхемы можно на этом центре припаивать?
  16. Цитата(ZZmey @ Mar 24 2016, 12:06) На ERSA IR550A давно работаю в связке с ERSA PL550A. Очень качественный и удобный ремонтный центр. Но есть отрицательный момент - слишком маломощный для запайки больших Pb-free BGA микросхем. По этому сейчас на нем только позиционирую, а запаиваю феном. А какие BGA микросхемы для этого центра вы считаете большими? Для пайки каких BGA микросхем его мощности достаточно, исходя из вашего опыта?
  17. Здравствуйте форумчане! Ищу рабочий проект Virtual Com Port (CDC) для stm32f103c8 и HAL. Пробовал адаптировать готовые примеры из HAL для платы MCBSTM32 (STM32F103RB) и для собственной платы с stm32f103c8 . Обе платы не определяются. При использовании SPL v3.5, проблем не возникает, все работает. Использую Keil.
  18. Здравствуйте форумчане! Посоветуйте способ выхода из прерывания FIQ в микроконтроллере ADuC702x (ядро ARM7TDMI) на адрес нужной функции. Из прерывания FIQ вызывать эту функцию не хочу, так как она по времени выполнения занимает порядка 30 мс, к тому же в процессе ее выполнения может произойти прерывание от монитора напряжения питания в случае возникновения которого необходимо корректное остановка работы микроконтроллера. Если у кого-то есть такой опыт, прошу поделиться примером кода. Использую в проекте Keil.
  19. ADuC702x и обработчик прерывания FIQ

    Цитата(mantech @ Apr 28 2015, 13:41) Я так понимаю, что эта FRAM - разновидность EEPROM, а след. у нее есть кол-во циклов перезаписи, после которого начинаются "чудеса"...Или я что-то путаю?? "Очень низкая" это сколько? частота ЦПУ 300 кГц, частота пробуждения ЦПУ - 1 Гц, между пробуждениями ЦПУ находится в режиме STOP
  20. ADuC702x и обработчик прерывания FIQ

    Цитата(jcxz @ Apr 28 2015, 07:51) Как уже сказал ув. Golikov A., в прерываниях FIQ и монитора питания не нужно делать никакой работы - просто поставить флажки (т.е. - активизировать фоновую задачу). А в фоновой задаче выполнять все чтения АЦП/сохранения во флешь. Всё равно если у вас уже идёт запись во флешь, то пока она не закончится, данные монитора питания Вы не запишете. В фоновой задаче, после обнаружения флажка, можно программно переключить делитель PLL на макс. частоту. А вообще - по-моему раз у Вас должна захватываться какая-то осциллограмма с АЦП по сигналу аварии, то мне кажется начинать её сохранять после события уже поздно. Наверняка нужна какая-то предыстория. Поэтому думаю - АЦП должно всегда работать, писать поток данных в кольцевой буфер, а по сигналу аварии защёлкнуть позицию буфера (за N отсчётов до события), после защёлкивания захватить ещё сколько-то данных и записать их во флешь. В нашем устройстве тоже как раз должен делаться подобный захват осциллограммы по одному из сигналов события. С предысторией. И кольцевой буфер у нас к тому-же в энергонезависимой памяти. Это Вы про мой совет использовать FRAM? Так я вообще-то имел в виду, что у TI есть серия MSP430FRxxx - там вместо флешь в качестве энергонезависимой памяти используется FRAM. Так что никаких доп. элементов паять не нужно. И код и данные (журнал событий), если их не много, можно хранить в ней. И корпус очень миниатюрный. И алгоритм получается очень простой: пишете поток данных с АЦП непрерывно в кольцевой буфер во FRAM (буфер размером N+M, где N - размер предыстории события, M-размер послеистории события). После возникновения события, в ISR выставляете флаг==M, в фоновой задаче видите если флаг установлен - декрементируете его с каждым записанным в кольцо сэмплом, после обнуления счётчика останавливаете запись. Если нужна возможность регистрации неск. событий - после защёлкивания текущего буфера и исчерпания M, не останавливаете поток записи в кольцо, а просто - переключаетесь на второй кольцевой буфер, третий и т.п. И при наличии FRAM никаких проблем с занятостью её текущей записью при возникновении аварии монитора питания нет - можете хоть сразу в ISR и записать что надо во FRAM. Да и тактирование в MSP430 очень удобно сделано: Запускаете АЦП с тактированием от какого-то низкочастотного источника, с записью потока через DMA. Усыпляете CPU. Высокочастотный RC тактировавший ядро отключается, потребление падает до неск. мкА. При возникновении прерывания события или монитора питания, ядро пробуждается, его ВЧ RC-генератор (DCO) быстро запускается и во время выполнения ISR работает на высокой частоте. При выходе из ISR буквально одной командой можно выставить состояние завершения ISR: вернётся он в сон или продолжит выполнение уже фоновой задачи на полной частоте. Т.е. - CPU будет почти всё время спать изредка просыпаясь при завершении очередного блока DMA, для его перепрограммирования и для обслуживания событий компаратора и монитора питания. У рассматриваемого ADUC7021 есть одно хорошее качество - корпус QFN40 размером 6х6 мм. Есть новые контроллеры на Cortex-M0+ c еще меньшим корпусом QFN32 и всеми наворотами включая DMA. Но руководство возлюбило ADUCи, поэтому приходится крутиться на этой МК. Цитата(Golikov A. @ Apr 28 2015, 08:07) Что-то мне говорит что ADuC - это фигня со встроенной АЦП... да еще какой-то хитро много канальной или многодиапазонной. Это же для всяких мультитесторов спец проц да? и jcxz прав, как он предлагает, еще лучше. АЦП просто долбит по кругу и сохраняет в кольцевой буфер, а по событию оно просто до сохраняет хвост данных и пихает это дело во флэш. В такой организации у вас от прерывания события надо просто поставить флажки и все. Частота АЦП связана с основной частотой проца? Можно ее всегда запустить на максимуме? Если бы в ADUC было DMA, так бы и сделал. Но там его нет и с АЦП приходится работать программно, а чтобы успевать обрабатывать поступающие данные и кольцевой буфер нужна частота ЦПУ порядка 10 МГц. Поэтому пишу кривую без предыстории, вернее с предысторией но с очень низкой частотой дискретизации на минимальной тактовой частоте ЦПУ.
  21. ADuC702x и обработчик прерывания FIQ

    Цитата(mantech @ Apr 27 2015, 16:02) Т.е. во флеш пишите из прерывания?? Знаете, сколь по длительности запись идет?? А прерывать запись флеши далеко не в каждом контроллере разрешается. Странно, почти везде требуется время... Нет, FLASH пишется уже не из прерывания, во время записи прерывания запрещены все. Вот такие контроллеры ADI делает, ждать выхода PLL на режим не нужно. Цитата(jcxz @ Apr 27 2015, 18:14) Что мешает в обработчике IRQ сделать то же самое программно? И что именно там делается с частотой аппаратно?: включается и разгоняется PLL или меняется источник тактирования (PLL/внутренний RC) или просто меняется делитель тактовой перед CPU? Если первое - то время стабилизации PLL довольно велико и много больше времени входа в любой ISR. Если второе или третье - то программно переключить источник (при условии, что он уже работает и готов) или изменить делитель тактовой CPU дело одной-двух записей в регистры на входе в обработчик IRQ. Если Вы не вынесете монитор питания в FIQ, а прочие прерывания - в IRQ, а всё повесите на FIQ, то новый FIQ монитора у Вас не вызовется никак до окончания обработки текущего ISR (у Вас наверное и другие ISR в системе есть?). Ну если только не предпринять каких-то хитрых манипуляций с режимами работы CPU. Да и вообще - говорить о скорости реакции на прерывание, учитывая какую Вам работу на сделать по его обслуживанию (работа с ADC, запись флешь) смешно. Она будет несравнима мала по сравнению со временем доступа к флешь. Флешь у Вас кстати какая? SPI или ...? А учитываете, что если сработал монитор, а у вас уже идёт, не дай бог, операция стирания, сколько придётся ждать? Может всё-таки Вам лучше для записи событий монитора поставить батарейное ОЗУ или FRAM? Заменить на MSP430 из серии с FRAM-памятью Там что запись в ОЗУ, что во FRAM - никакой разницы. Не хватает ОЗУ - отрезал от памяти программ скока надо АЦП должно регистрировать сигнал который вызвал срабатывание компаратора и прерывание FIQ. Фронт сигнала достаточно крутой, поэтому задержки начала регистрации сигнала приведут к потере информации о форме сигнала. При возникновении FIQ в регистре PLL аппаратно сбрасываются биты, задающие коэффициент умножения, так что при в входе в функцию-обработчик FIQ контроллер работает уже на максимальной частоте (впрочем эту возможность можно отключить в файле конфигурации МК), источник тактирования не меняется - всегда работает от собственного RC генератора 32768 Гц. PLL у МК ADUC какая-то хитрая - необходимости ждать выхода PLL на режим не нужно (в документации про это нет информации, да и соответствующих бит в регистрах тоже нет). Запись во FLASH осуществляется после окончания регистрации, при этом используется собственная FLASH память МК. Стирание FLASH заранее - при подготовке прибора к работе. Прибор очень миниатюрный - диаметр 11 мм, высота порядка 15 мм :-), поэтому схемотехнической мысли растекаться особенно некуда :-)?
  22. ADuC702x и обработчик прерывания FIQ

    Цитата(Golikov A. @ Apr 27 2015, 15:27) А если в фик поставить флаг новые данные, а данные пихнуть в буффер, а всю обработку дальше в основном цикле? Или опять беда с малой тактовой вне?. Кстати переход с частоты на частоту разьве не требует ожидания плл? Нужные биты в PLL устанавливаются аппаратно, после выхода из FIQ устанавливаются в исходное состояние. Ждать выхода PLL на режим не нужно. Может стоит попробовать ваше предложение на практике. Спасибо.
  23. ADuC702x и обработчик прерывания FIQ

    Цитата(jcxz @ Apr 27 2015, 14:31) Зачем всё на FIQ повесили??? Прикладные ISR - расположите на IRQ, а монитор питания - на FIQ. Тогда он прервёт любой обработчик IRQ. Выбрал FIQ потому, что фоновая задача выполняется на низкой тактовой частоте ядра, а FIQ в ADUC702x обеспечивает аппаратное переключение на максимальную частоту тактирования ядра при возникновении прерывания FIQ. У прерывания IRQ такой возможности нет, а значит реакция на прерывание гораздо медленнее происходит.
  24. ADuC702x и обработчик прерывания FIQ

    Цитата(Golikov A. @ Apr 27 2015, 11:18) А как вы вернетесь то в точку где было прерывание, если вы из него улетите в вашу функцию... вам предется в функцию передавать точку возврата, делать там непонятный переход... а если опять будет прерывание? Когда вы попадает в FIQ прерывание, у вас снимается флажок реакции на прерывания, по выходу из FIQ он ставиться снова. Никто вам не мешает, при переходе в вашу функцию из FIQ опять поставить этот флажок. тогда если ваша функция отработает до конца, вы выйдите из FIQ в точку остановки программы. А если же у вас пока вы будите в функции возникнет прерывание, вы политите отработаете его и вернетесь в свою функцию, а когда ее закончите выйдите из FIQ в точку остановки программы. Одна сложность вам надо сделать так чтобы повторно вы опять в FIQ не полетели, за этим просто надо следить. У меня алгоритм работы устройства довольно простой - после возникновения прерывания FIQ максимально быстро перейти к функции регистрации данных с АЦП (записать данные в массив), затем записанный массив данных перезаписать в FLASH память и выключить прибор. Но в процессе регистрации возможна ситуации срабатывания монитора напряжения питания (из-за разряда батареи). В этом случае мне необходимо остановить процесс регистрации и завершит программу с установленным флагом в FLASH 'сбой напряжения питания'. В данный момент функцию регистрации я вызываю из FIQ, поэтому если происходит сбой по напряжению питания я теряю зарегистрированные данные и флаг с информацией о сбое напряжения питания тоже не устанавливается.
  25. ADuC702x и обработчик прерывания FIQ

    Цитата(mantech @ Apr 26 2015, 13:49) А что, разрешение прерывания в обработчике и мутекс для запрета повтороного входа в ту же функцию не помогает? Я так понимаю, что в случае вызова нужной мне функции из FIQ, работа контроллера прерываний будет восстановлена только после выхода из FIQ. Мне необходимо максимальная реакция микроконтроллера на прерывание, поэтому установка флага в прерывании с последующей его проверкой в основном цикле программы не устраивает. Хотелось бы завершить прерывание переходом не в точку, предшествующую его возникновению, а на адрес нужной мне функции. Когда-то давно еще на архитектуре 8051 это было возможно путем манипуляции со стеком при помощи ассемблерных инструкций. Я думаю, что и на архитектуре ARM7TDMI это возможно....