-
Постов
3 262 -
Зарегистрирован
-
Посещение
Тип контента
Профили
Форумы
Блоги
Весь контент COKPOWEHEU
-
Это достаточно безопасно. Современные контроллеры не дохнут от каждого чиха. По крайней мере ни один из тех, что паял я (без антистатического браслета и прочих предосторожностей, естественно) от этого не умер. А вот это проверить можно. Можно даже вообще их выпаять, чтобы уж точно исключить утечки. Кварц запустится и без них, хотя, возможно, будет работать менее стабильно или на немного другой частоте. Будете изучать написание кода для нее? Если вы говорите, что через UART прошивается, значит скорее живой.
-
Не надо столь категорично. Я для теста специально коротил ножку кварца на землю, прекрасно после этого работало. Что там сломалось у вас в устройстве не знаю, но дело явно не просто в замыкании. Может, статикой пробило или еще чего.
-
Это та гуёвая кривулька, которая с первого раза не всегда запускается и постоянно выставляет биты RDPR?
-
...и показываете скриншот от STM. Гениально. Ах да, чуть не забыл. Загрузчик ch32 не совместим со стандартными. Ни по UART, ни по USB. Мне пришлось для него свою программу-прошивальщик писать: https://github.com/COKPOWEHEU/wch-isp
-
Точно? А даташит говорит, что не просто работать, а перепрошиваться через USB умеет. То есть достаточно boot0, boot1 в нужное состояние выставить, и без всякого юзерского кода в системе определится
-
Вообще не горит и не мигает?! Он точно на PC13? Что-то очень странное
-
Хотел сделать чтобы по usb подключалась независимо от кварца. Но, кажется, ST накосячили с тактированием, и от встроенного RC-генератора больше 64 МГц не выжать. Для usb достаточно, но для универсальной тестовой прошивки нет, поэтому и заморачиваться не буду. В общем, вот тестовая прошивка. Если с кварцем все в порядке, отображается как флешка и делает короткие импульсы диодом. Если не в порядке, мигает быстро и равномерно (длительность импульса равна длительности паузы). firmware.hex
-
Хорошо А у вас прошивка 24 кБ занимает. Какая разница сколько незначащих байт хранится дальше.
-
Тогда лучше поискать более проверенную конструкцию. Совсем хорошо, если у нее будут исходники и сообщество. Да. Контроллер стартует от встроенного RC-генератора на 8 МГц, а потом может переключиться на внешний кварц и подстроить делители - множители. Ну если хотите, могу набросать какую-нибудь тестовую прошивку. Но запустить ваш "осциллограф" это не особенно поможет.
-
У меня была когда-то проблема с грязью на плате, которая обладала достаточной проводимостью чтобы мешать кварцу запуститься. Отмывка в ацетоне помогла. Была проблема со слишком долгим выходом в рабочий режим - инициализация кварца вылетала по таймауту. Решалось увеличением таймаута. В первую очередь стоит переключить ноги кварца на обычные GPIO и помигать ими чтобы проверить есть ли контакт. Еще, раз у вас несмотря на проблемы с кварцем, диоды все-таки мигают, есть шанс, что он в коде вообще не используется. Но поскольку прошивку вы не показываете, ничего сказать нельзя.
-
А в результате куча умирающих от ожирения программ, веб-сайтов и тому подобного. Уже пары гигабайт для просмотра простейших сайтов становится недостаточно. Уже никого не удивляют требования гигагерцев чтобы отобразить простейшую информацию. А со стороны электроники - ардуинщики и ST-cube-овцы. Зачем учиться паять и программировать, когда можно тяп-ляп собрать этажерку из шилдов, обмазать термосоплями и выдать за законченное устройство.
-
Параллельно: прочитал про какую-то периферию - проверил. Прочитал про какую-то особенность ядра - проверил. А теперь все-таки ответьте на вопрос. Ну, не так категорично. Изредка встречаются и люди, способные ардуинки именно программировать. Или и вовсе, страшно подумать, используют их по назначению - как отладочную плату. Это в лучше случае . Ну, пока оно даже на столе не работает, туда рандомно напихивается код и детальки пока не начинает делать вид, что работает. Не надо. Даже ассемблер не обязательно. Его и позже можно освоить. Что-то все больше кажется, что под словом "арихитектура" вы понимаете что-то свое, не то, что все остальные. Только если вы общаетесь голосом с иностранцами. По-русски все пишут и говорят "даташит". Да, слова при заимствовании меняют и написание, и звучание, и, иногда, даже смысл.
-
А как вы предлагаете его изучать? Тупое чтение даташита от начала до конца? Так это не приблизит понимания. Увы, достаточно оглянуться вокруг. Поклонники Ардуины, ST_Cube и прочего. Самое печальное, что на столе-то у них все работает. На пару порядков медленнее чем должно, но все же. А вот когда такое поделие пытаются использовать, скажем, для управления лифтом...
-
Первая же ссылка в гугле выдает правильный адрес: http://easyelectronics.ru/category/avr-uchebnyj-kurs А вторая - его же, но собранного в единый pdf. Особенно эпичные ардуинщики справляются и без этого... А если серьезно, может там не в непонимании архитектуры дело, а в каком-то мелком затыке. Ну там непонятно как Си-шный файл вообще перевести в прошивку, или как обращаться к периферии, или еще что-то. Понимание внутреннего устройства МК ведь само придет, если на нем активно что-то делать.
-
Курс DiHalt-а уже освоен? А что именно не получается? У меня в свое время была проблема как описать прерывания, да и вообще как это все собрать. Но у вас скорее всего что-то другое. Еще могу посоветовать посматривать в дизасм - во что разворачиваются инструкции, что компилятор добавляет по умолчанию и т.д. Если с ассемблером знакомы, это может сделать "компиляторную магию" более прозрачной.
-
Ну так берите блокнотик, в котором это есть. Я kwrite использую. Вроде в Notepad+ тоже с подсветкой все нормально. Скажем так: линукс можно использовать как одну сплошную IDE. И это прекрасно! Вот надо мне сейчас набросать код на Си, потом makefile, потом кусочек на асме и склейку на bash - да на здоровье, все делается одними и теми же инструментами, не надо запускать десяток IDE. Хотя и недостатки у такого подхода, конечно, есть. Если бы я хорошо умел пользоваться IDE-шками, наверное мог бы назвать кучу. А так только пара штук наберется. Недостаточно чтобы переучиваться. Уверен, вы и сами знаете, что с незнакомым инструментом оно всегда так. Поначалу приходится с ним бороться, зато потом наступает симбиоз и взаимопонимание... до очередного обновления, в котором сломают что-нибудь нужное и вкорячат ненужное.
- 31 ответ
-
1
-
Две. Надо же определить конец ввода. Я буквально на НГ с ним развлекался. Хотя можно попробовать по времени, тогда и правда одна будет. Да нет, там же пауза между импульсами более-менее известна. Первый импульс пришел - начало ввода. Нет импульсов достаточно долгое время - конец ввода. Правда, если юзер будет елозить диском туда-сюда, будут ложные срабатывания. Но тут уж он ССЗБ. Только места это на плате займет больше, чем нормальный контроллер.
-
На вольтметре 1000 делений не нарисуешь. Хотя есть же цифровые показометры. Вот только если хватает места для такого показометра, можно не мельчить с контроллером и поставить тот, у которого достаточно выводов.
-
и длина 2 см. Больше похоже на саму плавкую волосинку в предохранителе, чем на прибор в целом. Хотя с таким диаметром "воловснка" амперы будет держать.
-
У пингвинов можно и без IDE программировать почти без танцев с бубном. Разве что makefile написать непросто. Я вот с IDE так и не подружился, в блокнотике и консоли проще.
- 31 ответ
-
1
-
АЦП, например. Вообще один контакт. Правда, непонятно как индицировать результат. Хотя мелкие OLED требуют всего 2 контактов. Или другая "крутилка", энкодер. Тоже не так много выводов требует. --- А то можно разделить короткое и длинное нажатие. Короткое - счет по единице на нажатие, длинное - смена разряда. Как в бытовой технике или часах. В общем, с выводом будет больше проблем, чем со вводом.
-
Стоило указать, что systick это именно ядерный таймер, прописанный прямо в стандарте risc-v, а не периферия, специфичная для какого-то конкретного контроллера. Потому и адрес начала такой странный. Соответственно и возможностей у него куда меньше, чем у периферийных: всего один регистр сравнения, нет ШИМ и т.д. И область применение у него куда проще: это либо глобальный счет времени для задержек, либо таймер для операционной системы, точнее для ее переключалки задач. Разумеется, никто не запрещал объединять. Впрочем, для счета времени в risc-v есть и другие способы. Например, CSR-регистр mcycle, который считает такты ядра и доступен только для чтения: inline uint32_t read_mcycles(){ uint32_t res; asm volatile("csrr %0, mcycle" : "=r"(res) ); return res; } Если это ОС, то, естественно, код будет прямо в обработчике. Если счет глобального времени - тоже. А если это юзерский код, то его лучше расположить в периферийном таймере. Или использовать тот самый глобальный счет времени: void some_user_func(){ const uint32_t t_delay = 100500; static uint32_t t_prev = 0; uint32_t t_cur = read_mcycles(); if( (t_cur - t_prev) < t_delay )return; t_prev = t_cur; //some code } Опечатка: ядро называется QingKe RISC-V2A А вот этот момент хорошо бы уточнить. В другом risc-v контроллере gd32vf103, да и в ch32v307 пишут, что счетчик вообще 64-битный. Хотя у меня чего-то отложилось, что у gd-шки всего 24 бита. Но, может, я чего-то неправильно запомнил. Если это правда, он и без делителя вообще любые интервалы считать может, хоть столетия.
-
la t0, main csrw mepc, t0 mret Интересно зачем это сделано, почему было не обойтись обычным call (который jal) или вовсе безусловным переходом. Неужели для выхода из kernel-mode в user? Видать, их ST-шники покусали. Хорошо еще не до изобретения ST-HAL-а. Видать, даже трудолюбивым китайцам не захотелось такую кучу говнокода лопатить.