Jump to content

    

ArtDenis

Участник
  • Content Count

    142
  • Joined

  • Last visited

Community Reputation

0 Обычный

About ArtDenis

  • Rank
    Частый гость
  1. А откуда можно брать ГОСТовские сборки? FTP-сервер не работает
  2. В случае, когда сходу ничего не понятно, совет простой: последовательно комментировать операции, которые могут как-то влиять на работу. Я бы начал с последовательного комментирования операций записей. Если не помогает, тогда начал бы комментировать операции чтения. Как только после очередной закоментированной строчки ошибка пропадает, необходимо "помедетировать" над этой строчкой. Не помогла "медитация", комментируем что-нибудь еще и так до полного просветления :-)
  3. Предположим есть некоторое устройство с микроконтроллером. Оно достаточно простое, но обладает достаточно большим набором функций. Как аппаратная, так и программная часть устройства время от времени меняется, что допускает возникновение различных ошибок и в схеме и в прошивке. Кроме того, возможны дефекты при сборке устройства (где-то между дорожками сопля образовалась, где-то не те компоненты запаяли и т д.). Необходимо максимально быстро понять какие функции конкретного проверяемого устройства не работают или работают некорректно. Причём это надо сделать с максимальной степенью автоматизации. Какие подходы для этого существуют? Я понимаю, что конечная реализация такого тестирования сильно зависит от конкретики устройства, но более чем уверен, что есть и общие советы/методы/рекомендации.
  4. Пытаюсь понять как лучше всего подключать МК к источнику сигнала в том случае, когда АЦП работает в dual interleaved mode. В этом режиме АЦП работают параллельно со сдвигом по времени равным половине времени преобразования, за счёт чего частота преобразования повышается в 2 раза (мне нужно получить 10.2 млн преобразований в секунду). Так как оба АЦП работают параллельно, одно АЦП вносит искажения в измеряемый сигнал и это должно сказываться на измерении второго АЦП. У кого есть опыт работы в этом режиме, подскажите, будет ли достаточно вот такого подключения с резисторами, чтобы АЦП не влияли друг на друга: [attachment=94673:stm32dual.png] Усилитель с низкоомным выходом. Номиналы резисторов - 16...18 ом.
  5. Цитата(kovigor @ Aug 12 2015, 18:14) Один ? Да, один. Только для защиты от отрицательного напряжения на входе. Ну и плюс резистор конечно же, чтобы диод не сгорал от высокого тока при входном отрицательном напряжении
  6. Да, уже в соседнем форуме подсказали где именно смотреть. Примечание тоже прочитал. Поставил на вход диод Шоттки
  7. В даташите не нашёл, поэтому уточню здесь. Если подавать на входной аналоговый пин отрицательное напряжение, то ток потечёт через нижний защитный диод. Какая допустимая величина этого тока? PS: камень STM32F303xxx.
  8. Надо сказать, что это почему-то ни в какую не получается это сделать. Для примера, у меня выход компаратора подключен к 4-му и 3-му входам 4-го таймера. 4-й вход регистрирует фронт импульса, а 3-й - спад. Входы таймера работают в режиме захвата (CC). Это сделано для замера длительности импульсов с выхода компаратора и работает без проблем. Сейчас я указываю для АЦП запуск преобразования регулярных каналов от события TIM4_CC4 + настраиваю что надо при запуске реагировать на фронт. Глухо. АЦП не стартует. Что я делаю не так? Может стоит использовать какое-то другое событие?
  9. STM32L15x + DMA + Bit Banding

    Нет. Путём научного тыка выяснилось, что когда обращаешься к регистрам DMA через bit banding, нужно обязательно читать или писать двойное слово (4 байта). Чтение/запись любого другого количества байт приводит HardFault. Т.е. для примера: Код// Включаем half transfer interrupt (CCR, DMA_CCR_HTIE) *(volatile uint8_t*) 0x424c0108 = 1; // HardFault *(volatile uint16_t*)0x424c0108 = 1; // HardFault *(volatile uint32_t*)0x424c0108 = 1; // OK Для регистров другой периферии такого не наблюдается.
  10. Сейчас запуск АЦП от второго компаратора происходит через прерывание, которое генерирует компаратор (в прерывании происходит программный запуск АЦП). Вроде как всё это работает нормально, но смущает то, что приходится задействовать CPU для данной операции. Можно ли такой запуск сделать через события? Если верить мануалу, то выход компаратора можно перенаправлять на вход таймеров TIM2/TIM3/TIM4/TIM10, а также компаратор может генерировать событие EXTI22. АЦП же может запускаться от событий CC и TRGO таймеров TIM2, TIM3, TIM4, TIM6, TIM9, а также от события EXTI11. Как лучше всего связать компаратор и АЦП? Интуиция подсказывает, что как-то возможно для этого можно задействовать таймеры. Действительно ли есть такая возможность?
  11. STM32L15x + DMA + Bit Banding

    Случайно обнаружил, что для регистров DMA не работает bit banding (для другой периферии вроде всё нормально). Почему это может быть? Может я что-то не так настраиваю?
  12. stlink-v2 не может питать процессор?

    Цитата(super_puper @ Jul 27 2015, 22:40) мне что то не верится что изза конденсатора.. был такой опыт или предположение? Нет конечно. Как такое может быть из-за конденсатора?! Не из-за него конечно. Просто инопланетяне прилетают и портят все твои МК, к гадалке не ходи!
  13. STM32f4 PWM проблема с первым импульсом

    Цитата(EmbedElektrik @ Jul 10 2015, 11:49) Вобщем господа я забил на эту проблему - тупо перевожу на время инициализации вывод в GPIO Так вам тут же написали - сразу после инициализации ШИМ выдаёт 1, поэтому импульс и вылазит до момента присвоения TIM2->CNT=15; Можно вместо перевода в GPIO и TIM2->CNT=15 просто при инициализации задать длительность ШИМа в 0, а потом когда, он понадобится, выставить нужное значение.
  14. STM32f4 PWM проблема с первым импульсом

    adnega, как это есть рабочий код? Вот его последнее сообщение (жирным выделено мной): Цитата(EmbedElektrik @ Jul 8 2015, 15:50) Спасибо, идея инверсии понятна. У меня заработало. Но непонятки с моей изначальной инициализацией остались С управлением регистрами напрямую все равно этот импульс пролазит.
  15. STM32f4 PWM проблема с первым импульсом

    Цитата(adnega @ Jul 9 2015, 13:24) Хоть намекните чем? Ну вообще судя по приведённому коду он не должен влиять. Скважность шима = 10, а значение счётчика - 15. По умолчанию таймер на выходе ШИМа должен выдавать 0. Так возможно, что проблема в коде, который ТС не привёл. Ещё идея. По умолчанию, счётчик равен 0. Значит на выходе ШИМа сразу после настройки таймера должен быть 1. Если между настройкой таймера и кодом TIM2->CNT=15; стоит ещё какой-то код (который ТС не показал), то на выходе некоторое время будет держаться 1. PS: всякие TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Disable) и им подобные не надо делать перед заданием значений, а не после как у ТС? PPS: ТС-у лучше привести минимальный компилируемый код, который воспроизводит ошибку.