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

vladyka1701

Members
  • Постов

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

  • Посещение

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

  1. Важное замечание по поводу Всё таки не бред, я немного подумал: у меня ведь DMA работает циклически, вот и получается после длинного импульса не 5 коротких, а 9, потому что данные пошли по кругу. (На самом деле получается 8 коротких, но если поменять 15 на, например, 11, чтобы не возникало дублирования, то всё хорошо. Если взять самый первый массив с залипанием, то получим лишь 8 коротких отсчётов. есть подозрение, что тот, который отмечен знаком вопроса, "по инерции" получает скважность 15 и становится длинным, хотя он должен быть коротким. Т.е. это не "15" повторяется два раза (и потом идут 9 коротких отсчётов), а следующий за "15" отсчёт не успевает получить новое значение "5" и остаётся с предыдущим. Не знаю, как это по-человечески объяснить. Мне кажется, DMA после значения "15" послал пятёрку, а вот таймер её почему-то решил игнорировать и оставить значение "15", и только после ещё одного запроса DMA таки поменял значение CCR. Надеюсь, сумел донести мысль.
  2. Уверен. Вот, например, пара доказательств с других сайтов Ну и вроде как логично, контроллер же 32 битный, значит и слова таковые. Off За совет благодарен, я планирую перебраться на CMSIS, однако мой опыт с STM ещё не настолько большой и небольшая помощь от предварительно сгенерированного кода пока не помешает. С LL да, там 90% это функции из одной строки, но мне лично нравится такая простота (не то, что хал, где одна функция обвешана кучей проверок и ссылок на другие библиотеки) и, повторюсь, ИМХО, самодокументируемость. Запомнил функции и гоняешь туда-сюда, можно лазить в RM не каждый раз, а через раз .
  3. Вы правы, я не заметил этого, смотрел на другое и упустил ещё ошибку. Попробовал ввести массив из 9 вместо 10 значений {3, 5, 7, 9, 11, 9, 7, 5, 3} и всё отобразилось адекватно, но стоило сделать 10 элементов, как выходной сигнал снова перестал соответствовать реальности. Получается, DMA затыкается на длительных последовательностях? Не уверен, как можно объяснить такое поведение. 32 бита, я использую TIM5 с 32 битными регистрами, поэтому WORD. PDATA -- это размер блоков памяти периферии. Off: Честно, никогда не понимал критики библиотек, это ведь просто инструмент со своими плюсами и минусами, главное -- понимание того, что должно получиться. Вот на чём Вы предлагаете писать? Всего-то в живых остался HAL да LL, остальное, что не поддерживается ST я даже не рассматриваю. Какая библиотека не будет являться шлаком? P.s. ну и LL -- по сути, просто набор макросов, который мне, например, помогает чуть быстрее ориентироваться в коде из-за легко запоминаемых названий функций, а не MODULE->REG, но это тоже разговор о вкусах, не пытаюсь выставить свою точку зрения единственно верной
  4. Приветствую. Разбираюсь с контроллером STM32F411, захотел сделать свою реализацию библиотеки для управления светодиодами WS2812b. Вкратце, кто про них не знает: цвет в них кодируется 24 битами (по 8 на цвет), а сами единицы и нули кодируются соотношением длительностей высокого и низкого уровней. Картинку привёл для наглядности. Идея не новая: настроить таймер в режим ШИМ на частоту 800 кГц и с помощью DMA "скармливать" ему новые значения для регистра совпадения. Согласно reference manual и примерам от ST был сделан проект, код которого я представлю чуть ниже. Его параметры: Частота тактирования МК 16 МГц, таймер в режиме Fast PWM, PSC = 0, ARR = 19, Выход на максимальной скорости, DMA MemToPeriph High priority Circular. Я задал тестовый массив и столкнулся с такой проблемой: Если загружать маленькие значения в регистр сравнения (0-13), то всё работает отлично и скважность меняется на лету, однако при крупных значениях, например 14 и далее (скважность примерно 60% и больше), периоды начинают дублироваться. Как я не игрался с режимами ШИМ и скоростью выводов, это "залипание" побороть не удалось. Так оно выглядит графически: Задан массив {5, 5, 5, 5, 15, 5, 5, 5, 5, 5}, контроллер выдаёт следующее, т.е. значение "15" продублировалось. Прошу подсказать, с чем может быть связано столь странное поведение связки таймера и DMA и как можно заставить таймер нормально выдавать коэффициент заполнения более 70%. В интернете похожих тем не удалось найти. Внизу прилагаю куски кода, дописанные к сгенерированному CubeMX. Кому не удобно читать кусочками, во вложениях есть полный main.c. Написан с применением LL, готов разъяснить неясные команды и выслать проект CubeMX по необходимости. Заранее благодарен. uint32_t timdata[10] = {5, 5, 5, 5, 15, 5, 5, 5, 5, 5}; //Массив данных //ДОнастройка таймера LL_TIM_EnableDMAReq_CC1(TIM5); LL_TIM_EnableDMAReq_UPDATE(TIM5); // Разрешить запросы к DMA LL_TIM_CC_EnableChannel(TIM5, LL_TIM_CHANNEL_CH1); LL_TIM_EnableAllOutputs(TIM5); LL_TIM_EnableIT_CC1(TIM5); LL_TIM_EnableIT_UPDATE(TIM5); LL_TIM_EnableCounter(TIM5); // Включение ШИМ на ножке, разрешение прерываний и запуск счетчика LL_TIM_GenerateEvent_UPDATE(TIM5); // Из примера ST // Настройка DMA //CubeMX LL_DMA_SetChannelSelection(DMA1, LL_DMA_STREAM_2, LL_DMA_CHANNEL_6); LL_DMA_SetDataTransferDirection(DMA1, LL_DMA_STREAM_2, LL_DMA_DIRECTION_MEMORY_TO_PERIPH); LL_DMA_SetStreamPriorityLevel(DMA1, LL_DMA_STREAM_2, LL_DMA_PRIORITY_HIGH); LL_DMA_SetMode(DMA1, LL_DMA_STREAM_2, LL_DMA_MODE_CIRCULAR); LL_DMA_SetPeriphIncMode(DMA1, LL_DMA_STREAM_2, LL_DMA_PERIPH_NOINCREMENT); LL_DMA_SetMemoryIncMode(DMA1, LL_DMA_STREAM_2, LL_DMA_MEMORY_INCREMENT); LL_DMA_SetPeriphSize(DMA1, LL_DMA_STREAM_2, LL_DMA_PDATAALIGN_WORD); LL_DMA_SetMemorySize(DMA1, LL_DMA_STREAM_2, LL_DMA_MDATAALIGN_WORD); LL_DMA_DisableFifoMode(DMA1, LL_DMA_STREAM_2); //Пользовательский код DMA1_Stream2->PAR = (uint32_t)&(TIM5->CCR1); //Адрес регистра СС1 DMA1_Stream2->M0AR = (uint32_t)&timdata; //Адрес массива LL_DMA_SetDataLength(DMA1, LL_DMA_STREAM_2, 10); //Размер массива LL_DMA_EnableIT_TC(DMA1, LL_DMA_STREAM_2); //Разрешение прерываний (необязательно) LL_DMA_EnableIT_TE(DMA1, LL_DMA_STREAM_2); LL_DMA_EnableStream(DMA1, LL_DMA_STREAM_2); // Включить DMA main.c
  5. @Vslz Понял, значит, точно недостоверную информацию нашёл. Сказать ничего не могу, как эта карта ко мне попала -- такое напряжение там и было. ВОзможно, разработчики поигрались, а может и ещё одна неисправность @Armenn Не знаю, я же говорю: мне практически ничего не видно, что там происходит на экране. Без диска компьютер, я полагаю, ждёт загрузочного устройства (чёрный экран с текстом, наверное insert boot device). Биос открывается, но опять же, что там написано -- я не могу углядеть. Фото в данный у меня сделать нет возможности, поэтому вот очень похожий пример. Природа артефактов сильно отличается, но я это к тому, что действую почти вслепую
  6. Ну я где-то видел, что допуски лежат в пределах 1.8-2.0В, не берусь утверждать, что это чистая правда. В любом случае, дальше я уж точно не вижу смысла копаться в этой карте -- поднять получилось: уже восхитительно, а выискивать ещё и такие мелочи... Учитывая, что карта начала выдавать этот мусор после прогрева, я считаю, что тут однозначный отвал ГП
  7. @Armenn FF показывает, система загружается, можно видеть, что какое-то движение там происходит, но экран весь "моросит" и присутствует куча полос.
  8. Всех ещё раз благодарю за помощь, после довольно продолжительных плясок вокруг питания и прогрева чипа на ИК станции карта таки ожила и дала запуститься компьютеру! Из бочки дёгтя -- артефакты такие, что невозможно углядеть рабочий стол, так что тут только экономически нецелесообразная замена графического процессора . Всё-равно очень рад, проделана большая работа, да и я теперь знаю намного больше. Занятный получился ремонт, жаль, что воспользоваться картой нормально не выйдет
  9. @Romanchek82 Я тему создавал не для того, чтобы вас развлекать. Если вам неинтересно -- всегда есть сотни других тем в различных разделах, где дела идут более живо. Я в данный момент общаюсь с несколькими людьми, которые мне помогают, а их, между прочим, никто не заставляет, значит, тема живая. За "смешным" всегда можно обратиться в "юмор" и им подобные темы. Я в который раз акцентирую внимание на следующих вещах: Форум сделан, чтобы на нём общались все и обо всём в рамках определённой темы Оффтопа и прочего в этой теме нет, общаемся строго по карте Во время этого "страдания хернёй" я получил очень много опыта в диагностике периферии, который буду применять и в дальнейшем. Для вас тут ничего нового? Прекрасно понимаю. А я вот учусь и с удовольствием перенимаю опыт других участников форума, которые совершенно бесплатно делятся своими знаниями, а не предлагают в который раз просто всё бросить, купить рабочую карту и не развиваться в этом направлении @Виталий Белый Если заработает, то я "Доношу" её до момента пополнения финансов и выкину нафиК . Хватит мне возни с этим радеоновским счастьем, не думал, что такая болезная карта достанется Вот-вот, "как только, так сразу". Возьму что-нибудь, способное без просадок потянуть классику игростроя нулевых и буду радоваться жизни
  10. Вас понял, тогда завтра попробую аккуратненько пожарить кристалл
  11. @Armenn Я проверил ту троицу: подозрительный транзистор оказался абсолютно нормальным, а один из тех, что стоял рядом, был пробит. Заменил его на 2N7002, он по всем параметрам, кроме тока, более-менее подходит. Напряжение, конечно, малó по сравнению с APM, но 20В вряд-ли где-то там возьмётся. Теперь со стабилизатором всё отлично -- 3.3 приходит, на входе стабилизатора теперь всегда 3.2В, на его выходе всегда 1.81В. На затворе, кстати, как оказалось, должно быть не 1.5 а 10 с лишним вольт . Эта проблема решена, однако ПК ВСЁ-РАВНО повисает на ошибке 2А. Не FF, конечно, как ранее, но приятного мало. @Alex91 Не опасно ему такую шоковую терапию устраивать? У меня есть ИК станция, я могу медленно его прожарить, чтобы ничего не вспучило. И если греть, то насухую или подлить под чип флюс?
  12. Мысль такая уже была, но из всего моего запаса донорских платок нашёлся только 2n7002, у которого напряжение открытия около 1.6В. А на затвор приходит 1.5В. Боюсь, что ему не хватит напряжения для открытия. Ещё и по току там совсем не айс получается. так что пока поменяю их местами, а уже завтра выберусь в гараж и попробую найти там что-нибудь похожее
  13. Да, могу. Ну и заодно дополнительно засуну в транзистор тестер, посмотреть разброс параметров. Попробую
  14. В Украине Не пью и не курю, что-то золотых гор не появилось. Я -- студент, у которого и так хватает статей расхода, можете поверить. Плюс, я ведь выше уже объяснил, что в этом же месяце собрал пк из: матери, процессора, озу и жёсткого диска. На видеокарту мне сейчас не хватает, а нужно ещё оплачивать потребности нижних ступеней пирамиды Маслоу, знаете ли. Очень рад за вас, если трата 560 рублей не является для вас сколь угодно значимой статьёй расхода, а мне вот нужно экономить, бывает и такое. Ну а с чего же? Я ведь не написал, что совсем не имею опыта. Я вполне успешно занимаюсь ремонтом аналоговой звуковой техники, практически не пишу по этому поводу сюда. А как же по вашему получить опыт в ремонте видеокарт, не прикасаясь к самим видеокартам? Это как пытаться приобрести опыт в ремонте автомобилей, ремонтируя сантехнику
  15. @Romanchek82 В России с ценами на старый компьютерный хлам всё заметно лучше. У меня в стране РАБОЧИЕ карты такой же модели начинаются с 560 рублей + доставка. Цена всё ещё приемлемая, но пока в бюджете, выделенном под этот пк не появились деньги, почему бы не поколупаться в данной карте? И опять же, повторюсь, опыт -- бесценен. Даже если затея с треском провалится, хотя бы буду несколько более подкован в этом деле. @Armenn Маркировка A006. На форумах говорят, что это APM2300A http://monitor.espec.ws/section27/topic77171p500.html Дополню иллюстрацией. Транзистор этот расположен тут. На него приходят 1.5В, я выпаял этот транзистор и проверил его транзистор-тестером. Его threshold voltage составляет 1.1В, т.е. по идее, он бы должен открыться полностью, однако он этого не делает
  16. Нашёл подозрительный полевой транзистор, работающий в режиме ключа. На его стоке присутствовали заветные 3.3 Вольта, а вот после него выходило где-то 2.4-2.5В. Он подключен напрямую к стабилизатору. За неимением аналога временно бросил перемычку со стока на исток, выпаяв транзистор. На входе стабилизатора теперь примерно 3.15 В, на выходе положенные 1.8В. Компьютер стопорится абсолютно так же, но уже не на FF, а на 2А. Звуковых сигналов нет. У меня уже закончились идеи, честно говоря.
  17. @Pont 007 @Armenn Извините, ввёл в заблуждение с тем, что максимально я выжал 2.98В, попался плохой потенциометр. Прокинул прямую перемычку с 3.3 -- на вход действительно пришли 3.3, ничего не просело. Мой косяк. В результате подачи 3.3 Вольт компьютер теперь просто остаётся на пост коде 2А и ничего не делает далее. Но теперь он не зависший, на USB питание идёт, кнопкой он выключается нормально Это да, самая замороченная часть: тыкать куда попало и исследовать все элементы на их целостность. Я вот всё думаю: как я уже говорил, когда я подавал напряжение прямо в точку IN вместе со стабилизатором -- у меня попутно грелся чип. Может ли он всё-таки вызывать просадку или нет? Просто, может, мы вот это пляшем вокруг него, а проблема кроется в самой дорогой части карты? Есть ли вообще способ проверить хотя-бы по прикидкам целостность чипа без его снятия? Не располагаю трафаретом для него, 300 рублей тратить тоже не особо охота, чтобы обратно посадить, в случае чего
  18. Согласен полностью, сам хочу что-то подобное взять, однако сейчас весь бюджет компьютера из мусора ушёл на мать, процессор и ОЗУ, так что шаманства над картой вполне себе актуальны . Плюс, тут вот какая интересная проблема, хоть немного расширяю познания в плане диагностики. Интересно, не слышал даже о таком, буду на них несколько осторожней смотреть теперь, если попадётся вкусное предложение @Armenn Сделал замеры, получается следующая картина: Я поставил переменник, всё красиво, подал через него 3.3В. Итак: Стабилизация начинается при 2.87В и на выходе имеем напряжение примерно 1.75-1.8В, оно всегда сохраняется в этих пределах, математика не подвела. Максимум, который получилось подать через потенциометр -- 2.95В, до 3.3 не дотягивает. Интересное наблюдение: Карточка в таком вот состоянии (IN стабилизатора не соединён с полигоном) более не вешает компьютер, он проходит тест, запинается на 2А (ошибка видео), и идёт дальше. И ещё: без стабилизатора вовсе компьютер выдавал 1 длинный и 3 коротких сигнала, а в таком состоянии он пищит 1 длинный и 2 коротких раза. Вот такие результаты А у нас пошла какая-то волна жадности и я часто вижу на сайтах объявлений какую-нибудь мать на 478-м за 700 рублей или AGP видео 64 мб за 500 рублей. И висят неделями, людей вообще ничего не напрягает
  19. Идея, кстати, здравая, да. Надо бы поискать. Главное, чтобы кто-то сделал фотографии в приличном качестве.
  20. Там установлен стаб без буквы D, а у него падение повыше (1.15-1.2), но это так, лирика. По поводу остального всё ясно, завтра отпишусь, что получится
  21. @Armenn Завтра будем убеждаться. И кстати, я так прикинул, получается довольно странно: 3.3В - 1.2В падения на нём даст нам лишь 2.1В. Неужели стабилизатор работает буквально "в упор" без какого-либо запаса... Нормально ли будет прокинуть перемычку прямо от контакта 3.3В? Мне доподлинно известно, что как минимум на данной площадке присутствуют 3.3 Вольта с шины Да, и вопрос вдогонку: когда я подключал ЛБП ко входу стабилизатора, он начинал непомерно потреблять ток (вплоть до ампера). Точно ли мне стóит брать 3.3В прямо с шины, не выжгу ли я эту линию? Там ведь никаких ограничителей нет
  22. Он тут ADJ. Рядом с ним стоят резисторы 145 и 85 Ом, что даёт по формуле 1.25*((R1+R2)/R1) выходное напряжение приблизительно в 1.9В Ок, потыкаюсь по всевозможным точкам, постараюсь обнаружить
  23. Приходят, но отследить практически невозможно: от ноги PCIE 3.3 отходит небольшой клочок текстолита, который тут же пронизывается VIA отверстиями и куда-то уходит. Могу попытаться найти это напряжение мультиметром, однако не уверен в успехе этой затеи Если я вас правильно понял, то от 12В линии, там установлена APW7065, которая от других напряжений питаться не способна
  24. @Pont 007 Эхх, депрессивно это, ведь просесть они могут вообще из-за чего угодно, деталей там -- вагон. Ну что же, тогда обновлю биос, часок-другой похожу с мультиметром по всем возможным деталям, ну а больше без схемы ничего и не сделать, кто знает, что там инженеры навернули... В крайнем случае, будет ещё один донор. Если через некоторое время ничего не выйдет -- сниму ради интереса чип и расскажу: он ли вносил повышенный жор или нет, вдруг, кому-то интересно Благодарю всех, кто участвовал в обсуждении и помогал, надеюсь, рейтингом не обделил
×
×
  • Создать...