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

Сергей Борщ

Модератор
  • Постов

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

  • Посещение

  • Победитель дней

    31

Сообщения, опубликованные Сергей Борщ


  1. 49 минут назад, Turgenev сказал:

    Подключил к программатору, прозвонил цепи прошивки

    Подключили к программатору "голый" контроллер или в составе платы с какой-то обвязкой? Предполагаю, что в составе платы. Исходя из этого:

    1) Проверяли напряжение питания в на плате с подключенным программатором?

    2) Нет ли на плате в цепи сброса конденсатора на землю?

    3) Нет ли в цепях сигналов программирования каких-то конденсаторов, которые способны завалить фронты сигналов? Нет ли там каких-то элементов, способных перегрузить выходы программатора?

    4) Программатор точно исправен в части связи с контроллером?

    5) Имеется ли у вас осциллограф/лог. анализатор, чтобы посмотреть сигналы во время попытки программирования?

    Добавлено: посмотрел схему по ссылке из первого сообщения. R3 у вас точно 10 кОм запаян?

  2. 3 часа назад, smk сказал:

    например

    Читайте по губам:

    4 часа назад, Сергей Борщ сказал:

    Где объявление и вызов функции?

     

    3 часа назад, smk сказал:
    HAL_SD_WriteBlocks(&hsd1, &wbl, 0xA, 1, 100);

    Какая цепочка умозаключений привела вас к необходимости писать здесь "&wbl" вместо "wbl"?

  3. 1 час назад, smk сказал:

    Как в кейле передать в функцию указатель на массив

    Никак. В сях нет типа "указатель на массив". Вы можете передать только указатель на первый элемент, информация о размерности массива при этом теряется. Имя массива неявно приводится к указателю на его первый элемент. Исходите из этого. Или же вы можете обернуть массив в структуру и передавать указатель на эту структуру.

    Конструкция "&имя_массива" на самом деле означатет "адрес указателя на первый элемент массива". Именно на это и ругается компилятор.

     

    1 час назад, jcxz сказал:

    func(&array[0]);

    Такая конструкция эквивалентна записи func(array) но более громоздка.

  4. 1 час назад, Sergo1799 сказал:

    Таймер ТIM3 в stm32g4. Режим обычный - PWM mode 1.

    А таймер считает только вверх? Тогда попробуйте PWM center-aligned mode.

    Картинка из описания STM32G0, мне лень качать описание на G4, но там должно быть то же самое:

    image.thumb.png.ab930a8988291004738bc50264461b12.png

  5. 3 часа назад, Turgenev сказал:

    я не понимаю что имеет в виду Сергей Борщ

    Считайте фузы, посмотрите на RSTDSBL. У контроллера, который можно считать последовательным программатором этот бит имеет состояние "не запрограммирован", которое в документации на контроллер обозначено как единица. Посмотрев, как ваша программа отображает состояние этого бита вы поймете - у вашей программы единице соответствует наличие галочки или ее отсутствие. Поняв это вы сможете правильно расставить галочки исходя из 

    Цитата

     -fckopt=0,cksel=f,sut=1,ocden=0,jtagen=1

    и запрограммировать его не загнав в состояние, из которого можно вывести только параллельным высоковольтным программатором.

  6. 17 минут назад, haker_fox сказал:

    Неужели этот код был так бездарно написан?

    Нет, он был написан еще хуже :biggrin:. Когда запускал USB - собрал пример CDC из куба. 24 К флеша только USB CDC+эхо. Написал свой стек, упихал в ~5 К флеша USB CDC + дешифровку AES + прошивку флеша + обработку протокола и логики загрузчика.

    4 минуты назад, dimka76 сказал:

    Что здесь не так ?

    Тупые чтение-модификация-запись в каждой операции вместо одного чтения и одной записи. Или вообще одной-единственной записи константы с нужным состоянием сразу всех битов регистра.

  7. 7 минут назад, Sergo1799 сказал:

    т.е. надо либо P, либо Q, либо R выходы использовать, а коэффициент N увеличить до как минимум 96 МГц?

    Да. А также убедиться, что подано питание на AVDD и не забыть перед переключением правильно настроить количество тактов ожидания флеши

  8. 3 часа назад, makc сказал:

    Гарантий это не даёт, т.к. при других настройках ОС или при другом патче драйвера в ОС поведение может быть другим.

    Но если хотя бы под виндовсом мы увидим, что в момент извлечения устройства в виндовсе по USB в устройство вообще ничего не посылается - будет ясно, что задача решения не имеет и ставить точки останова в обработчик прерывания USB бесполезно.

  9. Мне кажется, тут надо плясать от печки от компа. Натравить на USB Wireshark и смотреть лог работы устройства в момент извлечения в виндовсе и линухе без всяких точек останова в устройстве. Если в логе найдется что-то интересное - тогда уже пытаться поддерживать внутри устройства.

    • Thanks 1
  10. 12 минут назад, EdgeAligned сказал:

    а в итоге получить ровно то же самое, что и непосредственная запись в одну строку?

    А потом перекинуть один из светодиодов на другой порт. И сравнить - сколько времени программиста займет такое перекидывание.

  11. 22 минуты назад, spirit_1 сказал:

    т.е сейчас для всех строк провайдера уже неактивна эта кнопка Clear Entries

    После закрытия диалога должна начаться перестройка списков. Если не помогло - ну тогда не знаю, увы...

  12. 1 час назад, spirit_1 сказал:

    далее Enries -> GNU C ?

    Читайте по губам: 

    1 час назад, Сергей Борщ сказал:

    на вкладке Providers выбрать каждую из отмеченных галочкой строк и нажать для нее Clear Entries.

    Эклипса умеет сама искать заголовочные файлы и эти строки отвечают, в том числе, и за этот поиск.

  13. 4 минуты назад, spirit_1 сказал:

    В C++ General-> Path and Simbol   этих строк нет и воообще их больше нигде  найти не могу. 

    Попробуйте в C/C++ general -> Preprocessor includes на вкладке Providers выбрать каждую из отмеченных галочкой строк и нажать для нее Clear Entries. В Эклипсе такое есть, что там в кубе - не знаю, но шанс есть.

  14. 28 минут назад, tonyk_av сказал:

    Только вот дешёвый анализатор не работает с сигналами EIA-422 с амплитудой плюс-минус 200мВ. И сигналы EIA-232 амплитудой плюс-минус 12В

    Откуда в данной задаче взялись 422 или 232? Он, кстати (скорее некстати), еще и за пивом не бегает. Для наблюдения за 422 и 232 аналитзатор нужно подключать к выходу приемника.

     

    28 минут назад, tonyk_av сказал:

    К тому же, дешёвые USB-UART у ТС

    Воооот: UART. Его анализатор прекрасно пишет/анализирует.

     

    28 минут назад, tonyk_av сказал:

    ИМХО, анализатор для такой задачи не особо нужен.

    Я бы не был столь категоричен. Автор изложил довольно конкретно:

    17 часов назад, MiklPolikov сказал:

    Что бы было понятна очередность пакетов, которыми обмениваются устрйоства.
    Что бы был лог, в котором друг за другом показано, что отправило одно устройство, и что ему ответило второе.

    Разглядывать все это через логический анализатор - очень удобно. 

     

    28 минут назад, tonyk_av сказал:

    дешёвые USB-UART у ТС уже есть, а вот анализатора, похоже, нет.

    Это хороший повод приобрести его, чтобы в следующий раз он уже точно был. Ведь и паяльника у него тоже когда-то не было, а анализатор инструмент исключительно полезный и, как я писал выше, при такой цене должен быть в столе у каждого разработчика.

  15. Забудьте все, что вам тут понаписали. Китайский 8-канальный логический анализатор, стоящий копейки на али и лежащий (должен лежать, по крайней мере) в тумбочке у каждого разработчика позволит наблюдать и пересылаемые байты и временнЫе интервалы между ними. И, естественно, сохранять в файл.

×
×
  • Создать...