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

msn

Свой
  • Постов

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

  • Посещение

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


  1. Спасибо. Перерисовал так. Полевик будет 2N7000, оптосимистор - MOC3063, симистор BT131-600. Для отладки, время задающую цепь поставил меньше чем нужно. Диод D2 для более быстрой разрядки конденсатора, но все равно при переключении нужно ждать разряда. Наверное нужно будет еще подумать как сделать это на таймера 555, но ему тоже нужно подать на TRIG импульс при включении питания.
  2. А если сделать так (номиналы от балды, для проверки):
  3. Включать вентилятор на 2-3 мин, когда выходишь из туалета. Как сделать таймер, я знаю, я не знаю как вентилятором управлять. По MOC я так ни не понял, лучше взять доп симистор, BT131 подойдет?
  4. Есть вентилятор 220V 8W, к нему уже заложена проводка, с разрывом фазы (2 провода, N и L, где L разрывается выключателем), переделать проводку под стандартный вентилятор с таймером нельзя. Хочу сделать простейшую схему задержки выключения вентилятора, т.е.: 1. включаем вентилятор выключателем 2. вентилятор работает 2-3 минуты 3. схема выключает вентилятор … 4. через какое-то время выключаем выключатель, и сразу же включаем - п1 Т.е. смысл в том, что бы включить вентилятор выключателем и не ждать 2-3 минуты. С силовыми схемами и симисторами ни когда не работал. Хотелось бы это сделать как можно проще, небольшого размера (30*30 мм), что бы уместить в корпус вентилятора. Вентилятором на 8W можно управлять одной moc30xx?
  5. stm32f746g-disco и emWin

    Нужно было SCB_DisableDCache() перед GUI_Init().
  6. stm32f746g-disco и emWin

    Начинаю разбираться с stm32f746g-disco (32F746GDISCOVERY). Для нее есть примеры в STM32CubeF7 (STM32Cube_FW_F7_V1.3.0) в частности STM32Cube_FW_F7_V1.3.0\Projects\STM32746G-Discovery\Applications\STemWin\STemWin_HelloWorld. Компилирую пример в Keil uVision5 (без оптимизации) - все нормально, HelloWorld выводит. Создаю кнопку: hButton = BUTTON_Create(0, 0, 100, 50, GUI_ID_OK, WM_CF_SHOW); BUTTON_SetText(hButton, "Test"); GUI_Exec(); Все нормально: (Img) В GUIBuilder.exe делаю простейшее окно (окно + метка), вызываю функцию CreateWindow - ни чего не работает. Искаженный фон окна и искаженной текст метки. Причину найти не могу: (Img) Может кто сталкивался с таким? Если у Вас есть плата stm32f746g-disco можете в нее прошить Hex файл, может проблема с платой. Спасибо. Исходный код: Изменено только в BASIC_HelloWorld.c #include "GUI.h" #include "DIALOG.h" WM_HWIN CreateWindow(void); /********************************************************************* * * Public code * ********************************************************************** */ /********************************************************************* * * MainTask */ void MainTask(void) { static BUTTON_Handle hButton; static WM_HWIN hWin; /* // All ok hButton = BUTTON_Create(0, 0, 100, 50, GUI_ID_OK, WM_CF_SHOW); BUTTON_SetText(hButton, "Test"); */ /**/ // Don't work CreateWindow(); /**/ GUI_Exec(); while (1); } /*************************** End of file ****************************/ Добавлено только WindowDLG.c // USER START (Optionally insert additional includes) // USER END #include "DIALOG.h" /********************************************************************* * * Defines * ********************************************************************** */ #define ID_WINDOW_0 (GUI_ID_USER + 0x00) #define ID_TEXT_0 (GUI_ID_USER + 0x01) // USER START (Optionally insert additional defines) // USER END /********************************************************************* * * Static data * ********************************************************************** */ // USER START (Optionally insert additional static data) // USER END /********************************************************************* * * _aDialogCreate */ static const GUI_WIDGET_CREATE_INFO _aDialogCreate[] = { { WINDOW_CreateIndirect, "Window", ID_WINDOW_0, 0, 0, 480, 272, 0, 0x0, 0 }, { TEXT_CreateIndirect, "Text", ID_TEXT_0, 100, 100, 80, 20, 0, 0x64, 0 }, // USER START (Optionally insert additional widgets) // USER END }; /********************************************************************* * * Static code * ********************************************************************** */ // USER START (Optionally insert additional static code) // USER END /********************************************************************* * * _cbDialog */ static void _cbDialog(WM_MESSAGE * pMsg) { WM_HWIN hItem; // USER START (Optionally insert additional variables) // USER END switch (pMsg->MsgId) { case WM_INIT_DIALOG: // // Initialization of 'Window' // hItem = pMsg->hWin; WINDOW_SetBkColor(hItem, 0x00FF0000); // // Initialization of 'Text' // hItem = WM_GetDialogItem(pMsg->hWin, ID_TEXT_0); TEXT_SetText(hItem, "Test"); TEXT_SetTextColor(hItem, 0x00FFFFFF); TEXT_SetTextAlign(hItem, GUI_TA_HCENTER | GUI_TA_VCENTER); TEXT_SetFont(hItem, GUI_FONT_13_1); // USER START (Optionally insert additional code for further widget initialization) // USER END break; // USER START (Optionally insert additional message handling) // USER END default: WM_DefaultProc(pMsg); break; } } /********************************************************************* * * Public code * ********************************************************************** */ /********************************************************************* * * CreateWindow */ WM_HWIN CreateWindow(void); WM_HWIN CreateWindow(void) { WM_HWIN hWin; hWin = GUI_CreateDialogBox(_aDialogCreate, GUI_COUNTOF(_aDialogCreate), _cbDialog, WM_HBKWIN, 0, 0); return hWin; } // USER START (Optionally insert additional public code) // USER END /*************************** End of file ****************************/ Файлы из: Inc, Src и MDK-ARM. Hex файл: STM32746G_DISCOVERY_Button.hex - all ok STM32746G_DISCOVERY_Window.hex - don't work
  7. Использую Z ревизию. Не отладка в железе на stm32f4discovery.
  8. Ошибки fsmc stm32f4discovery

    Тестирую fsmc на stm32f407VG. Использую Address/Data multiplexed on databus (MUXEN = 1). Тестирую 2 режима EXTMOD = 0 и 1. Инициализация: FSMC_Bank1->BTCR[0] = //FSMC_BCR2_EXTMOD | FSMC_BCR2_WREN | FSMC_BCR2_FACCEN | FSMC_BCR2_MWID_0 | FSMC_BCR2_MTYP_1 | FSMC_BCR2_MUXEN | FSMC_BCR2_MBKEN; FSMC_Bank1->BTCR[1] = (2 << 8) | // DATAST = 2 (1 << 4) | // ADDHLD = 1 (2 << 0); // ADDSET = 2 FSMC_Bank1E->BWTR[0] = (2 << 8) | // DATAST = 2 (1 << 4) | // ADDHLD = 1 (2 << 0); // ADDSET = 2 Если EXTMOD = 0, все хорошо. Если EXTMOD = 1, FSMC не генерирует NL (NADV) и адрес (ошибка при записи и чтении), смотрю осцилом. В чем может быть проблема? Это баг stm32f407VG? Спасибо.
  9. Еще раз все перепроверил. Разбираюсь с STM32F407. Запустил его на 168 МГц (5.92 нс цикл) включены все FLASH->ACR = FLASH_ACR_DCEN | FLASH_ACR_ICEN | FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY_5WS. Выдаю на PA1 простой меандр: PM_(RCC->AHB1ENR, RCC_AHB1ENR_GPIOAEN) = 1; // GPIOA clock enabled PM_(GPIOA->MODER, GPIO_MODER_MODER1_0) = 1; // PA1 - General purpose output mode GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR1; // PA1 - 100 MHz High speed while (1) { GPIOA->BSRR = GPIO_BSRR_BS_1; GPIOA->BSRR = GPIO_BSRR_BR_1; GPIOA->BSRR = GPIO_BSRR_BS_1; GPIOA->BSRR = GPIO_BSRR_BR_1; GPIOA->BSRR = GPIO_BSRR_BS_1; GPIOA->BSRR = GPIO_BSRR_BR_1; GPIOA->BSRR = GPIO_BSRR_BS_1; GPIOA->BSRR = GPIO_BSRR_BR_1; GPIOA->BSRR = GPIO_BSRR_BS_1; GPIOA->BSRR = GPIO_BSRR_BR_1; } Компилируется так: STR r1,[r0,#0x18] STR r2,[r0,#0x18] STR r1,[r0,#0x18] STR r2,[r0,#0x18] STR r1,[r0,#0x18] STR r2,[r0,#0x18] STR r1,[r0,#0x18] STR r2,[r0,#0x18] STR r1,[r0,#0x18] STR r2,[r0,#0x18] B |L1.6| На осциллографе вижу такой сигнал: Это означает что инструкция Branch выполняться на самом деле за 3 такта? Я отлаживаю в Keil на stm32f4discovery. На инструкции Branch счетчик циклов в Keil (States) увеличивается на +1. Дополнительно использую SysTick и DWT->CYCCNT, они так же увеличивается на +1 на инструкции Branch. Почему так? Кто-то врет, не может быть так как что бы один системный такт был то 6 ns, то 18 ns.
  10. Спасибо за помощь. Для M4 проморгал таблицу с Cycles.
  11. Разбираюсь с STM32F4xx, запустил его на 168 МГц (5.92 нс цикл) включены все КЕШи (FLASH->ACR = FLASH_ACR_DCEN | FLASH_ACR_ICEN | FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY_5WS) выдаю на PA1 простой меандр: while (1) { GPIOA->BSRR = GPIO_BSRR_BS_1; __nop(); __nop(); __nop(); __nop(); GPIOA->BSRR = GPIO_BSRR_BR_1; __nop(); __nop(); __nop(); //__nop(); } Компилируется так: STR r1,[r0,#0x18] NOP NOP NOP NOP STR r2,[r0,#0x18] NOP NOP NOP B |L1.6| Смотрю в Keil (отладка на stm32f4discovery) States, все команды выполняются за 1 такт. Смотрю осцилом, вижу, что 1 на PA1 - 30 нс (5 тактов), а 0 на PA1 - 35 нс (6 тактов), т.е. B |L1.6| выполняется вроде как за 2 такта, а Keil увеличивает States на +1. Читал http://infocenter.arm.com/help/index.jsp?t...g/BABBCJII.html (If branch taken, pipeline reloads (two cycles are added), т.е. 3 цикла) и STM PM0081 Flash memory interface (про ART - все за 1 цикл), так толком и не понятно кому верить. Где можно прочитать о времени выполнения инструкций STM32F4xx? Как можно в Keil измерить это время? Спасибо.
  12. Спасибо. Для того что бы например запускать АЦП от T1 нужно установить: ADC_CR2->EXTEN = 00b (Trigger detection disabled) ADC_CR2->EXTSEL = 0000b (Timer 1 CC1 event) Так?
  13. Спасибо за совет. Но тогда максимальная частота дискретизации 2.4 МГц. Тут не совсем ясно. У каждого АЦП есть свой аналоговый мультиплексор. Получается что на Mux1 и Mux2 заведены одни 16 каналов, а на Mux3 - 8 каналов которые есть на Mux1/2 и 8 каналов с порта PF? PF3 ADC3_IN9 PF4 ADC3_IN14 PF5 ADC3_IN15 PF6 ADC3_IN4 PF7 ADC3_IN5 PF8 ADC3_IN6 PF9 ADC3_IN7 PF10 ADC3_IN8 PC0 ADC123_IN10 PC1 ADC123_IN11 PC2 ADC123_IN12 PC3 ADC123_IN13 PA0 ADC123_IN0 PA1 ADC123_IN1 PA2 ADC123_IN2 PA3 ADC123_IN3 PA4 ADC12_IN4 PA5 ADC12_IN5 PA6 ADC12_IN6 PA7 ADC12_IN7 PB0 ADC12_IN8 PB1 ADC12_IN9 PC4 ADC12_IN14 PC5 ADC12_IN15 На F4xx вроде ни чего такого не написано. Спасибо, как делать в общем я знаю. Не понятные некоторые нюансы, о которых спрашивал выше. Примеры скачал и смотрел, не на все вопросы нашел ответы.
  14. STM32F4xx не очень ясно АЦП

    Прошу помочь разобраться. Начинаю разбираться с STM32F407VG (до этого долго работал с Silabs 8051 и AVR). Задача следующая (8-ми канальный самописец): - есть 8 каналов, одновременно может быть включено 1 или 2 или … все 8 - необходимо считывать данные непрерывно с каждого включенного канала с частотой от 1 КГц до Max возможной (например 7.2 МГц) - данные писать в ОЗУ и по мере возможностей передавать в ПК по Ethernet Не могу понять что означает в datasheet “Additional functions”: ADC123_INn и ADC12_INn. Например PA0 ADC123_IN0 это означает что вывод PA0 можно использовать как канал 0 для АЦП1, АЦП2 и АЦП3 или только для одного из АЦП. Или если используется независимый режим то ADC123_IN0 можно использовать только для одного АЦП, а если используется мульти режим то ADC123_IN0 можно использовать для всех АЦП? В datasheet написано: However, an ADC cannot start a conversion if the complementary ADC is still sampling its input (only one ADC can sample the input signal at a given time), т.е. только УВХ одного АЦП одновременно может быть подключено к PA0? Как я понял PA0 просто конфигурируется как аналоговый вход без подтяжек, после чего его номер прописываеться в ADC_SQR. PA0 как то привязывается к определенному АЦП? Если прописать PA0 сразу в ADC1_SQR, ADC2_SQR и ADC3_SQR и запустить все 3 АЦП в независимом режиме, но что бы их моменты УВХ были разнесены по времени, так правильно? Каналы ADC12_INn не могу использоваться для АПЦ3? И еще не совсем ясно что такое external trigger? Есть биты “Configuring the trigger polarity” Trigger detection disabled - это означает что АЦП можно запустить только программно SWSTART? Detection rising / falling edges - это только для trigger запуска от EXTI или еще как-то от таймеров по обоим фронтам? Спасибо! P.S. Как-то странно STM аналоговый каналы сделала, если включаешь Ethernet или USB HS половины аналоговых каналов нет.
  15. Проблема с C8051F062

    Нашел таки проблему. На всех трех платах "нулевой" резистор между аналоговой и цифрой землями был чуть поврежден (сопротивление плавало от 0.2 до 5 Ом). И при включении аналоговой периферии получался перекос аналогового и цифрового питания, что приводило к смещение опоры. Процы живы, и после замены резисторов все заработало как нужно.
  16. Проблема с C8051F062

    Никто не сталкивался с глюками в ИОН C8051F062? Из нескольких сотен плат, на трех платах Vref = 2.7 В (все 5 шт Vref), а VBGAP = 1.5 (на рабочих 1.2 В). Сейчас думаю стоит ли искать глюки в печатной плате или обвязке (только кондеры по data sheet + ОУ через 400 КОм для формирования напряжения смещения), или глючные процы перепаять?
  17. Спасибо! К сожалению не имею такой возможности. Обматывал изолентой (слоев 10-15) – забросы оставались, но чем больше слоев, тем они были реже. Вот это и хочу выяснить. Судя по тому что с ВВ провода на провоз заземления бьет небольшая искра, то на внешнюю поверхность датчика попадает заряд.
  18. Врядли происходит пробой капролоного корпуса датчика который по центру ВВ провода, так как если надеть капролонноый колпачок на ВВ провод вместо свечи, то пробивается катушка, т.е. искра не “выходит” из колпачка на массу авто, которая рядом.
  19. Если не сложно поясните, пожалуйста, в чем тогда причина. Я имел виду следующие: E1 – поле созданное зарядами на токопроводящей жиле ВВ провода и пяточке датичка. E2 – поле созданное зарядами в изоляции ВВ провода и корпусе датчика, частично уменьшающие поле E1 из-за e > 1. Q3 – это заброс заряда на поверхность изоляции ВВ провода, который в свою очередь приведет к кратковременному измерению поля E1 и E2. Прочитал это (Ландсберг Элементарный учебник физики): Силиконовая смазка также как и солидол практически полностью устраняет забросы. Достаточно просто смазать поверхность пяточка солидолом или силиконом, дотронутся им до ВВ провода (даже без корпуса и забросы уменьшаются в разы). Не совсем понял. Сейчас диаметр пяточка чуть меньше 10 мм, а внутренний диаметр колпачка (корпус) чуть больше 10 мм. Периодичности не заметил. Датчик довольно хорошо (мощная пружина внутри) поджимает колпачок с пяточком к ВВ проводу. Для эксперимента пробовал и приклеить корпус датчика к ВВ проводу, что бы точно расстояние не менялось. При смене расстояния уменьшается амплитуда сигнала, забросы становятся реже, т.е. проявляются только забросы большой амплитуды. Автор! Не нужно загромождать форум картинками из учебников! И свои картинки ужимайте. Т.
  20. Спасибо! Перечитал курс физики :) И так же считаю это наиболее вероятным вариантов. Фактически существует два источника заряда: 1. Токопроводящая жила ВВ провода, она же одна из обкладок конденсатора 2. Заряды, накапливающиеся на изоляции ВВ провода, которые не пробивают капролоновый корпус датчика, а изменяют напряженность внутри диэлектрика, дополнительно поляризуя его. А солидол, другая смазка или термоклей с длинными молекулами возможно плохо поляризуются. Проверял наличие забросов, вообще не дотрагиваясь до ВВ провода, забросы бывают реже, но без литола все равно большой амплитуды. Проверил. Обмотал ВВ провод фольгой до и после пяточка, фольгу соединил с экраном кабеля (фактически экранирование датчика), который заземлен через измерительный блок. Забросы стали меньше и даже изменили знак – начали появляется не значительные забросы в низ. В темноте видно небольшие искры бьющие из фольги на ВВ проводе в экран кабеля (для исследования специально взял такой плохой ВВ провод).
  21. Пробовал такие датчиками: Результат тот же. Если намотать провод, то получится уже и индуктивная связь. Но все равно ради эксперимента попробую. Пластиковая трубка (от аквариума) хорошо поджимала. Они соединены через корпус прибора, который соединен с массой авто.
  22. Спасибо. Тоже думал над этим вариантом. Для того что бы это исключить проделывал следующие: 1. Приклеивал пятачок к ВВ проводу 2. Приклеивал пятачок к колпачку датчика 3. Зажимал пятачок в колчаке датчика трубкой по периметру Забросы оставались. Сам датчик выглядит так (кабель и пятачок хорошо поджаты):
  23. Необходимо измерять форму напряжения во вторичной цепи зажигания автомобиля (высоковольтные (ВВ) импульсы с амплитудой пробоя искры до 20 КВ, амплитудой горения искры около 2 КВ и длительностью 1-3 мс). Снятие формы вторичного напряжения основано на наличии паразитной емкостной связи, возникающей между токопроводящей жилой ВВ провода и емкостной пластиной датчика. Для устранения искажения формы сигнала диф. цепочкой (паразитная емкость) используется компенсационная емкость (неполярный конденсатор между центральной жилой и экраном кабеля) образующая емкостной делитель. Эталонная форма импульса вторичного напряжения выглядит следующим образом: При снятии осциллограмм возникает непонятный эффект следующий сразу после пробоя искрового промежутка и проявляющийся в подбрасывании изолинии (подбросы могут быть как нескольких подряд идущих импульсов так и через 3-5 импульсов). Причину возникновения заброса пока не могу понять, но его выделанная форма очень напоминает разряд емкости. Практически удалось определить что уменьшить этот эффект можно двумя способами: 1. Практически полным экранированием датчика, как тут, что очень дорого в производстве 2. Либо покрыть поверхность емкостной пластины (достаточно только со стороны ВВ провода) солидолом / литолом или теромоклеем. На графике красного цвета сигнал снятый датчиком с литолом, а на графике синего цвета без литола. Оба датчика имею одинаковую конструкцию и находятся рядом на одном и том же ВВ проводе (специально нашел провод на котором этот эффект очень заметен). Причем если вообще не использовать корпус датчика, а просто притулить пятачок к ВВ проводу, то на пятачке с литолом забросов так же не будет, а без литола будут. По одной из теорий причиной заброса может быть то, что ВВ провода (старые) имеют микротрещины изоляции, а из-за большой напряженности поля происходит разряд, который ловится датчиком. Может, кто сталкивался с подобным явлением, и при возможности может прояснить причину этого эффекта, возможные способы его устранения. Для себя хочу выяснить, почему литол полностью устраняет этот эффект, а колпачок датчика из капролона в котором находится пятачок не устраняет. Спасибо.
  24. Купил на радиорынке в Киеве пару упаковок BNC разъемом на пробу. Очень понравились – быстрая сборка и хороший контакт. Захотел купить еще, но не тут то было. Продавец говорит, что больше нет, когда будут не знает. Естественно где он их покупал, не говорит. В приложении фото разъема и наклейки на упаковке. К сожалению названия производителя нет (скорее всего Китай). Подскажите, может, кто знает, где можно оптом 500-1000 таких разъемов купить (или хотя бы производителя), или похожих (желательно под пайку и без кучи деталей). Спасибо!
  25. Спасибо за ссылку. Сначала разобраться какой же покупать, т.е. посмотреть как можно больше вариантов с их полным описанием, ну а затем уже купить с лучшим соотношением цена / качество.
×
×
  • Создать...