Комментарии 27
Я пытался найти «академические» переводы всех терминов. Не все мне понравились, но что делать. Но вот конкретно с latch мне «защелка» не нравится категорически. Я же гуманитарий, у меня образное мышление, и защелка для меня — это такой замок на двери. В электронном случае это что-то однобитовое, типа триггера, показывает состояние _замка_, но не двери. А latch в сдвиговых регистрах — это именно задвижка, потому что сразу открывает кучу битов. Это как задвижка на собачьих гонках — поднял вверх, все собаки побежали. «Защелка» этого смысла не передает.
Но это не все. Само latch в английском, по-моему, тоже не очень корректно, правильно было бы что-то вроде snapshot (снимок) или cast (слепок). Потому что, открывая его, мы не выпускаем собак, а выпускаем копии собак, сами собаки остаются на месте. Это актуально для сдвиговых регистров — копии битов вылезли наружу, но сами они остались в буфере, их можно двигать и снова использовать. Не уверен, что это как-то применяется, но понимание этого факта здорово помогает дебажить всякое. Например, я ведь на STM32 сперва просто чуть изменил атмеговский код, а на Атмеге нет BSY, и получил вроде как работающие светодиоды, только работали они как-то не так. Хорошо, что я к тому времени понимал принцип и быстро вычислил проблему.
В общем, я решил, что главное — не перевести термин, а объяснить его работу, чтобы сами слова latch и latched были интуитивно понятны. Отсюда задвижки, фиксаторы и прочая.
Извините, что многобукв, но вот реально тут попадание в мозоль, я долго думал, как эту тему компактно в текст всунуть.
Смысл все и так понимают, даже если слово не совсем точное, а использование не устоявшегося термина только вводит в заблуждение неопытных любителей.
Насчет неудачных устоявшихся русских переводных технических терминов можно говорить очень долго. Как пример:
- «Поток» — это stream, thread, или, может, вообще flow?
- «Строка» — это string или line?
ПС: По поводу «строки» вспоминается древняя переводная книга по редактору Multiedit. Автор перевода очень страдал от смешивания терминов string и line и в своем переводе в качестве line использовал слово «полоска». Во вступлении он объяснил и развернуто обосновал такой выбор, но, несмотря на это, при чтении взгляд непрерывно «спотыкался» о подобные вещи.
Я тоже не вполне понимаю, зачем писать на ардуине и подобных «оболочках».
Это же хобби, то есть интересен сам процесс разработки, а не только и не столько результат :-)
Я вообще не вполне понимаю, кто такие ардуинщики? :-) С одной стороны, пишут на С, что в современном мире приравнивается чуть ли не к ядерной физике, с другой стороны, не могут даташит прочитать…
Все зависит от человека и его интереса. Кто-то ограничится Ардуиной (точнее, Atmega328p), кто-то поймет, что маловато и надо посмотреть вокруг. И здесь, к сожалению, случается пропасть — тот же ST Visual Desktop ну совсем не располагает радостно в себя погрузиться.
тот же ST Visual Desktop ну совсем не располагает радостно в себя погрузиться.
Я баловался с IAR-ом. В рамках бесплатных ограничений мне хватало. Ну или можно поискать какие-то средства…
При упоминании фраз вида "использовать регистры" я представлял использование библиотечных дефайнов. Но вот непосредственно самому дефайнить адреса — такой уровень хардкора я еще не встречал.
слейва («раба»)
Это все таки корректнее называть не рабством, а «режимом ведомого».
Определение LAT_pulse — потенциальный источник проблем. Там 2 оператора в define без блока. В результате конструкция if (...) LAT_pulse(); приведет к неожиданному выполнению только одного оператора из 2х. Используйте do {код} while(0) в таких случаях. А лучше inline функции
Как управлять фазой PWM сигнала на STM32?
Например надо эмулировать сигнал с инкрементального энкодера.
Частота STM32 у нас будет 72 МГц, LED-драйвер, согласно его даташиту, работает с частотой до 25 МГц, таким образом, делить надо на четыре
Подозреваю всё же надо делить не на 4, а на 2. Потому что SPI2 в STM32F103 подключен не к системной шине, а к шине APB1, которая имеет максимальную частоту 36 МГц.
Читаем даташиты 2: SPI на STM32; ШИМ, таймеры и прерывания на STM8