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

Smith2007

Members
  • Постов

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

  • Посещение

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

  1. Я не весь код привел. Безусловно тактирование включено. зы. В обед успел отключить GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); Все работает! PB3, PB4 - светодиод ожил. Загрузка прошивки нормальная. Еще одну страничку в stm32 изучил с Вашей помощью
  2. А если я хочу использовать pb4 то надо выполнить следующую команду? GPIO_PinRemapConfig(GPIO_Remap_SWJ_NoJTRST, ENABLE); Не повлияет это на загрузку новых прошивок через STLink v2? В описании нашел GPIO_Remap_SWJ_NoJTRST : Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST GPIO_Remap_SWJ_JTAGDisable : JTAG-DP Disabled and SW-DP Enabled GPIO_Remap_SWJ_Disable : Full SWJ Disabled (JTAG-DP + SW-DP) stm32Cubmx (и HAL) не использую в проекте.
  3. Что-то не найду где его отключить. При инициализации ничего особенного не включал. Отладчик STLink v2, подключен по swd
  4. С PB4 аналогичная картина.
  5. Отладочная плата stm32f103c8t6. В порт GPOIB Pin_3 записываю Bit_SET или Bit_RESET. В отладчике кейла вижу как меняется значение ODR3 в регистре GPIOB. Но на выходе светодиод молчит. Если поменять на Pin_7 работает нормально. Обозначение PB3/JTDO. С чем может быть связано такое поведение? Или просто порт спалил? /***************************************************/ /* Инициализация GPIO */ /***************************************************/ GPIO_InitTypeDef GPIO_Structure; GPIO_DeInit(GPIOA); GPIO_DeInit(GPIOB); GPIO_DeInit(GPIOC); /* Led B3 - LED_Heat_L*/ GPIO_StructInit(&GPIO_Structure); GPIO_Structure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Structure.GPIO_Pin = GPIO_Pin_7; GPIO_Structure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOB, &GPIO_Structure); Вызов bt_heat_l.update(); if (bt_heat_l.btOn) { bOn++; //GPIO_SetBits(GPIOB, GPIO_Pin_3); GPIO_WriteBit(GPIOB, GPIO_Pin_7, Bit_SET); } if (bt_heat_l.btOff) { bOff++; //GPIO_ResetBits(GPIOB, GPIO_Pin_3); GPIO_WriteBit(GPIOB, GPIO_Pin_7, Bit_RESET); } Если пин заменить на GPIO_Pin_3 - порт PB3 не шевелится
  6. Это разрешить прерывание на 1 канале по достижению счета? Вектор прерывания один и тот же, а в обработчике прерываний нужно просто определить какой флаг его вызвал? Т.е. прерывание будет происходить каждую миллисекунду (в моем случае 1 кГц) и каждый раз, когда на канале 1 счетчик добежит до CCR1?
  7. 1 кГц. Значит не важно сколько он считает - на производительность не влияет. Как бы на один канал загрузить число, досчитав до которого вызвать прерывание. Я так примерно понимаю, но не найду примеров похожих.
  8. МК на частоте 48 МГц Для генерации ШИМ (или прерывания) можно настроить таймер двумя разными вариантами. Не большой Prescaler и большой Period Или наоборот - Prescaler большой, Period меньший. Какой способ предпочтительнее? Если Period большой это значит счетчик должен сделать больше инкрементов. При счете счетчика задействуется сам ALU ядра процессора или это аппаратный счет идет и на производительность ни как не повлияет? Вариант1 timer.TIM_Prescaler = 47; timer.TIM_Period = 1000; timer.TIM_ClockDivision = 0; timer.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &timer); Вариант2 timer.TIM_Prescaler = 480-1; timer.TIM_Period = 100; timer.TIM_ClockDivision = 0; timer.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM3, &timer);
  9. stm32f103c8t6 Для различных временных задержек нужна метка времени. Дискретность 10 мс наиболее удобна.
  10. TIM3 генерирует PWM на канале 3 и 4. Частота 1 кГц. Можно ли на этом таймере дополнительно реализовать прерывание с частотой 100 Гц?
  11. Можно ли на одном таймере (допустим TIM4) сделать два ШИМ генератора сигналов с разной частотой?
  12. В моем случае это 12 - 15В
  13. Если между затвором и выходом МК поставить сопротивление 10... 20 кОм то как емкость затвор-сток может повредить выход МК? Даже в случае КЗ (затвор-сток) ток не превысит 2мА. Это я понимаю. Но большой разницы не вижу, что коммутировать.
  14. Для управления резистивной нагрузкой с токами до 10А нужен мосфет с низким пороговым значением напряжения на затворе. Правильно ли я понимаю, что бы управлять ключом с stm32 (с питанием 3,3В) нужно использовать ключи с аббревиатурой "L" Например irLr2905?
  15. Для определения правильных параметров загружаю stm32cubemx, выставляю нужные частоты делители и все получается наглядно. Затем эти значения вношу в проект (не HAL). HAL не использую. Только для визуального понимания настроек частот и разных пинов.
  16. Беру свои слова обратно. Строил график и не обратил внимание, что ряд не тот выбрал. График нелинейный. Но ни чего страшного, скорректирую. В STM32F103C8T6 нет FPU. Думаю разбить на 3-4 интервала, внутри которых сделать линейную функцию, что бы оперировать только целыми числами.
  17. Я там подстроечник поставил и легко можно подобрать коэф. усиления. В Протеусе еще проще схему нарисовал. На одном ОУ. В теории работает и элементов внешних меньше. Возможно для устранения возбуждения от пульсаций питания добавить конденсатор между инверсным входом и выходом ОУ.
  18. Погрешность в 5..10% даже не определить. Как точно можно определить уровень топлива по такому индикатору? (фото не мое. С инета) Допускаю, что с 2016 года подачу опорного напряжения на ДУТ стабилизировали. Иначе чем еще объяснить 10,5В при отключенном ДУТ? Во время измерений меня смутило, что если напряжение превысить 5В то показания уходили в минус и переставала гореть аварийка по топливу. Вероятно АЦП имеет опорное напряжение 5В. Резистор ДУТ проволочный и имеет линейную характеристику. Другое дело, что баки бывают разной формы и вот тут нужна будет нелинейность. Но это не сложно воспроизводится. Думаю, что это не совсем так. Напряжение будет меняться линейно в зависимости от угла поворота ДУТ. По сути тут банальный делитель напряжения. Нелинейность может потребоваться из-за особенностей геометрии бака. По моим расчетам получается так
  19. Это погрешность измерения. Стрелочный индикатор уровня топлива имеет довольно широкую стрелку и градацию 0 - 0,25 - 0,50 - 0,75 1,00 Т.е. всего 5 делений, которые довольно трудно точно определить. Снимать и измерять ДУТ тоже нет смысла ибо не понятно как он там в баке установлен и до какого угла проворачивается. На сколько понимаю, нулевого сопротивления в любом случае не достичь. На датчике с учетом проводки все равно останется 0,3 - 0,5 Ома. Думаю, что для такого прибора будет вполне приемлемый уровень точности. Вообще график должен получиться линейный. Бак прямоугольный, резистор обыкновенный (с равномерным сопротивлением на градус поворота)
  20. Поясните почему такие значения получаются?
  21. Да, можно. Но контроль напряжения нужен будет для другой функции - управление компрессором.
  22. Провел измерения. При разорванной цепи датчика уровня, напряжение 10,5В. По всей видимости в схеме имеется некоторый стабилизатор все же. Иначе напряжение составило бы 11.9В. (При включенном зажигании и не заведенном двигателе такое напряжение на АКБ). Затем закоротил выводы (полный бак) и получил ток 23 мА. Следовательно внутренний резистор в панели имеет сопротивление 330 Ом. Затем пробежал по шкале уровня топлива, меняя сопротивление подстроечника Результат зы. Как удалять изображения? Не пойму ни как
  23. В данном случае контроллер в авто имеет свой стабилизированный источник опорного напряжения для АЦП, который преобразует сигнал напряжения с датчика уровня топлива (ДУТ). В штатной схеме на ДУТ подается не стабилизированное бортовое питание. От сюда и показания плавают в зависимости от напряжения бортсети. Да, нужно разобрать блок переключения баков в авто и подключиться мультиметром. А заодно и ток измерить. Что-то меня очень смущает ток 58 мА. При полном баке и если верить, что сопротивление нагрузки 220 Ом, то на нем будет почти 1 Вт выделяться. Не маленькое должно быть сопротивление.
  24. Собрал схему, которую представил Alex Falcon. ШИМ выставил примерно на середину заполнения (аналог половины уровня в баке). На выходе получил напряжение = 5В. Затем изменял напряжение питания схемы в диапазоне от 5,5 до 20В (создал критическую ситуацию с изменением напряжения борт-сети). Напряжение на выходе осталось стабильным 5В. Т.е. эта проблема решилась сама собой и не нужно вводить программную корректировку.
  25. С этим я согласен. Но сам ОУ будет работать в очень узком диапазоне. Не знаю конечно на сколько это критично но мне казалось, что если на выходе ОУ амплитуда выходного сигнала будет меняться от от 0 до 5-7В, что бы управлять мосфетом это лучше чем если выход ОУ будет работать в диапазоне 0.. 0,5В Возможно я ошибаюсь. зы. Соберу сейчас новую схему. irf44 нашел.
×
×
  • Создать...