«и доказал, что поскольку… то схема на частотах требуемого диапазона работать не будет» Савченко «Открытие себя»
Поводом к написанию данного опуса послужило, как всегда и бывает у меня, стечение обстоятельств. Размышляя над особенностями возможной реализации интерфейса от микроконтроллера (МК) к WS2812, наткнулся, причем совершенно случайно, на нечто аналогичное на сайте одной фирмы, называть которую не буду, поскольку намерен ее слегка (а может и сильно, пока не знаю, будет видно по ходу изложения) поругать. Даю подсказку — она занимается продажей в нашей стране Arduino плат и шилдов к ним, название начинается с первой буквы русского алфавита, заканчивается на нее же, и товар, сподвигнувший меня на данный пост, расположен на последней позиции четвертой страницы в разделе «Платы и модули», на странице этого товара можно найти схему устройства и ссылку на программу, о которых я и хотел бы рассказать кое-что интересное, в особенности для молодых инженеров (ну я так думаю). Не знаю, как у других обитателей Хабра, а у меня бывает такое, что читаю текст и вижу, что какое-то слово в нем неправильное. То есть сразу понимаю, что оно неправильное, но потом нужно некоторое время, чтобы в него вчитаться и понять, что именно в нем неправильно и где ошибка. К сожалению, данное правило действует только в отношении чужих текстов, когда я вычитываю свой, то частенько читаю не то, что реально написано, а то, что собирался написать (я то ведь твердо знаю, что тут должно быть). Ну так вот, при первом же взгляде на схему мне она показалась неправильной, и при внимательном рассмотрении первое мнение подтвердилось.
Сначала общие предпосылки к разработке данной схемы и некоторые теоретические положения.
При разработке различных электронных устройств мы часто сталкиваемся с необходимостью визуализации результатов обработки входящей информации, как с целью отладки, так и для реализации необходимого функционала. Один из наиболее часто используемых способов являются светодиодные излучатели оптического диапазона (набившее всем оскомину мигание светодиодом — один из примеров), причем как в виде отдельных элементов, так и в виде сборок излучателей, из которых весьма распространенными являются семисегментные индикаторы (на самом деле в наше время они восьмисегментные, но, видимо, так было не всегда).
Управление подобным прибором не представляет собой особо сложной задачи, особенно если не прибегать к мультиплицированию, но прямое управление (то есть одна ножка на один сегмент) представляет 2 трудности в реализации: во-первых, количество задействованных ножек равняется количеству сегментов, то есть в случае четырехразрядного индикатора нам потребуется 4*8=32 ножки МК, что не всегда возможно, и во-вторых, если мы решим первую проблему, то нас ждут неприятности по втекающему (вытекающему) току, 32*(пусть даже и)4 = 128ма, что очевидно превышаете характеристики обычных МК (обычно регламентируется ток на одной ноге (от 4 до 20 ма), но есть и ограничение по сумме одновременно протекающих токов (от 100ма до 300ма)) и хотя, скорее всего, МК не выйдет из строя и даже будет функционировать в таких условиях, выходить за рамки ТУ (в настоящее время их именуют даташитами) я бы категорически не рекомендовал (мы об этом поговорим подробно позже).
Поэтому широкое распространение получили разного рода буферные схемы, которые позволяют путем различных ухищрений снизить количество задействованных ног МК и распределить ток светодиодов по нескольким корпусам, существенно улучшив условия функционирования как МК, так и буферов.
Из богатого разнообразия буферных схем авторами вышеупомянутого устройства были выбраны сдвиговые регистры типа 74НС595, которые широко известны среди радиолюбителей. Данные приборы позволяют при помощи трех входов управлять восемью выходами (естественно, не бесплатно, усложняется алгоритм управления, но мы ничего другого и не ожидали), но, кроме того, данные приборы можно включать последовательно, что позволяет при помощи все тех же трех ножек управлять теоретически неограниченным количеством выходных сигналов (практически, конечно, ограничения есть, но об этом чуть позже).
Немного подробностей о регистрах вообще и 595 в частности
Сюда я буду выносить то, что для меня очевидно, но может быть не вполне понятно некоторым из читателей.
Упомянутая микросхема представляет собой сдвиговый регистр с дополнительным стробируемым регистром на выходе. Попробуем перевести эту фразу на русский язык.
Прежде всего, что такое регистр. Это устройство, которое позволяет зафиксировать его выходы в некоторый момент времени в зависимости от состояния входов в этот момент и в дальнейшем, т.е. до наступления другого такого момента выходы не меняются вне зависимости от изменения входов. При этом наступление такого момента определяется некоторыми из входов, которые выполняют специальные функции (вот такое непростое выражение у меня получилось для короткого слова строб).
Что нам дают регистры как таковые для решения обозначенных проблем — мы можем поставить несколько регистров, их информационные входы объединить, для каждого из них сделать отдельный строб и, затратив N+n выходов МК, получить N*n независимых выходных сигналов, для нашего примера с N=8 и n=4 потребуется 12 ножек МК вместо 32. Эта схема легко масштабируется, но все равно для ряда МК даже и 12 выходов — недопустимая роскошь.
И тут на помощь приходят сдвиговые регистры, которые позволяют при помощи всего лишь двух ножек организовать сколь угодно много выходов на управляемое устройство (индикатор). Принцип работы сдвигового регистра аналогичен обычному регистру (он состоит из множества одно-выводных регистров, или триггеров) и заключается в фиксации выходного значения в момент подачи строба, а изюминкой является то, что выход одного триггера является входом другого (но еще и выходом устройства в целом) и входной сигнал подключается только к первому триггеру. При этом мы сначала подаем вход для последнего триггера в цепочке, фиксируем его на первом триггере при помощи строба, затем подаем сигнал для предпоследнего триггера в цепочке, очередным стробом фиксируем его в первом триггере, при этом то, что было записано в первый триггер предыдущим стробом, переносится во второй триггер цепочки, и сели мы продолжим данную процедуру требуемое количество стробов, то вся необходимая информация окажется в нужных триггерах на всем протяжении цепочки. Нетрудно видеть, что схема является масштабируемой, то есть увеличения длинны цепочки триггеров не приводит вообще к увеличению количества необходимых выводов МК.
У этой схемы есть один важный недостаток (на самом деле их не один, но нам важен именно он) — в процессе продвижения информации выходы всех триггеров в цепочке неоднократно меняют свое значение, прежде, чем получить предназначенные именно им данные. Если мы будем записывать информацию достаточно быстро, а потом в течении длительного (по сравнению с записью) времени оставлять ее неизменной, то исполнительное устройство может и не заметить этих быстрых смен значений, особенно если он достаточно медленное. К сожалению, светодиоды к подобным медленным устройствам не относятся, и Вы будут удивлены, если проведете эксперименты с целью посмотреть, какой длительности импульсы приведут к наблюдаемым вспышкам света (с кратковременными отключениями все намного лучше, наблюдать их Вы едва ли сможете, но это слабое утешение).
Поэтому прибор 595 состоит из двух частей — сдвигового регистра длинной 8 и включенного вслед за ним обычного регистра шириной 8 бит, информация в котором фиксируется по специальному входу. При этом мы производим запись в сдвиговый регистр при помощи строба сдвига, но информация на выходах не меняется, а вот по завершению сдвиговых операций мы выдаем строб переписи и информация на всех выходах синхронно обновляется и опять остается неизменной, позволяя нам осуществлять следующую процедуру записи в сдвиговый регистр.
Упомянутая микросхема представляет собой сдвиговый регистр с дополнительным стробируемым регистром на выходе. Попробуем перевести эту фразу на русский язык.
Прежде всего, что такое регистр. Это устройство, которое позволяет зафиксировать его выходы в некоторый момент времени в зависимости от состояния входов в этот момент и в дальнейшем, т.е. до наступления другого такого момента выходы не меняются вне зависимости от изменения входов. При этом наступление такого момента определяется некоторыми из входов, которые выполняют специальные функции (вот такое непростое выражение у меня получилось для короткого слова строб).
Что нам дают регистры как таковые для решения обозначенных проблем — мы можем поставить несколько регистров, их информационные входы объединить, для каждого из них сделать отдельный строб и, затратив N+n выходов МК, получить N*n независимых выходных сигналов, для нашего примера с N=8 и n=4 потребуется 12 ножек МК вместо 32. Эта схема легко масштабируется, но все равно для ряда МК даже и 12 выходов — недопустимая роскошь.
И тут на помощь приходят сдвиговые регистры, которые позволяют при помощи всего лишь двух ножек организовать сколь угодно много выходов на управляемое устройство (индикатор). Принцип работы сдвигового регистра аналогичен обычному регистру (он состоит из множества одно-выводных регистров, или триггеров) и заключается в фиксации выходного значения в момент подачи строба, а изюминкой является то, что выход одного триггера является входом другого (но еще и выходом устройства в целом) и входной сигнал подключается только к первому триггеру. При этом мы сначала подаем вход для последнего триггера в цепочке, фиксируем его на первом триггере при помощи строба, затем подаем сигнал для предпоследнего триггера в цепочке, очередным стробом фиксируем его в первом триггере, при этом то, что было записано в первый триггер предыдущим стробом, переносится во второй триггер цепочки, и сели мы продолжим данную процедуру требуемое количество стробов, то вся необходимая информация окажется в нужных триггерах на всем протяжении цепочки. Нетрудно видеть, что схема является масштабируемой, то есть увеличения длинны цепочки триггеров не приводит вообще к увеличению количества необходимых выводов МК.
У этой схемы есть один важный недостаток (на самом деле их не один, но нам важен именно он) — в процессе продвижения информации выходы всех триггеров в цепочке неоднократно меняют свое значение, прежде, чем получить предназначенные именно им данные. Если мы будем записывать информацию достаточно быстро, а потом в течении длительного (по сравнению с записью) времени оставлять ее неизменной, то исполнительное устройство может и не заметить этих быстрых смен значений, особенно если он достаточно медленное. К сожалению, светодиоды к подобным медленным устройствам не относятся, и Вы будут удивлены, если проведете эксперименты с целью посмотреть, какой длительности импульсы приведут к наблюдаемым вспышкам света (с кратковременными отключениями все намного лучше, наблюдать их Вы едва ли сможете, но это слабое утешение).
Поэтому прибор 595 состоит из двух частей — сдвигового регистра длинной 8 и включенного вслед за ним обычного регистра шириной 8 бит, информация в котором фиксируется по специальному входу. При этом мы производим запись в сдвиговый регистр при помощи строба сдвига, но информация на выходах не меняется, а вот по завершению сдвиговых операций мы выдаем строб переписи и информация на всех выходах синхронно обновляется и опять остается неизменной, позволяя нам осуществлять следующую процедуру записи в сдвиговый регистр.
Вот такое у меня получилось описание регистра, наверное, я все таки преувеличиваю степень неподготовленности аудитории, но Вы можете спойлер и не открывать. Кстати, там внизу будем опрос, не поленитесь ответить, пожалуйста, это для меня, как для автора, действительно важно.
Итак, мы получаем возможность при помощи всего лишь трех ножек МК управлять произвольным количеством выходов, предназначенных, в нашем случае, для включения/выключения сегментов светодиодного индикатора. То есть наш выигрыш очевиден, в чем же проигрыш, он точно должен быть, ибо «ДарЗаНеБы»? Проигрыш состоит в более длительном времени, необходимом для передачи информации, по сравнению с методом прямого управления, причем составит он ориентировочно N*n раз. Для относительно медленных устройств (а светодиоды, несомненно, к ним относятся, так как конечным потребителем является человек с его ограниченными, и весьма, скоростями обработки информации), такой проигрыш не столь существенный, но тем не менее он имеет место, и забывать об ограничениях того либо иного метода не следует, если Вы не любитель ходить по граблям.
Но, как известно, совершенству нет предела, и пытливая мысль разработчиков стала искать способы сократить еще больше количество необходимых ножек. Для этого нам необходимо объединить функции, выполняемые некоторыми из наших трех ножек, или даже всех. Объединять будем как минимум в одну, я все-таки плохо себе представляю интерфейс к устройству из менее чем одного сигнала (обратите внимание, я написал сигнала, а не провода — это по поводу беспроводных систем). Какие мы имеем возможности в этом направлении? Их не так много, а всего-лишь две — манипуляция амплитудой сигнала и манипуляция временными параметрами. В сторону амплитуды мы можем даже не смотреть, движение в этом направлении весьма затруднено, а вот с временем можно и поиграться. Например, мы можем заменить два сигнала — данные и строб на один, примем факт наличия сигнала эквивалентен приходу строба, а вот временные параметры (длительность, как вариант) может нести информацию о состоянии данных.
По такому пути пошли многие, в том числе и разработчики вышеупомянутого устройства, логику их решения можно представить следующим описанием: передаем по одной линии сигнал в виде импульсов различной длительности — короткий, подлиннее и длинный. Один из них будет означать передачу единицы, другой — нуля, а третий — завершение передачи и фиксацию информации в выходном регистре. Выбор конкретного распределения длительностей определяется нашим стремлением (вполне естественным) передавать информацию как можно быстрее, поэтому для наименее редко встречающегося сигнала (признака завершения передачи) применим наиболее длительный импульс, оставшиеся два можно распределить произвольно, но, исходя из логики функционирования 595, удобнее для записи единицы применять короткий импульс, так что для нуля ничего, кроме среднего по длительности, не осталось.
Теперь для работы нашего устройства нам необходимы аппаратные решения, способные отличить один сигнал от другого (провести селекцию по временным параметрам). Вот почему мы выбрали длительность, поскольку селектор по данному параметру сигнала намного проще в реализации, чем по иным параметрам, для чего может быть с успехом применена схема, состоящая из последовательно соединенных резистора и конденсатора на землю, так называемая RC цепочка, известная также как интегрирующая цепочка или фильтр низких частот первого порядка.
Если мы посмотрим на схему описываемого устройства, то мы увидим на ней две таких цепочки, одна из которых предназначена для различения короткого и подлиннее импульса (тут прячется засада, но об этом позже), а вторая — для разделения импульса подлиннее и длинного. Вот о расчете параметров этих цепочек мы с Вами и поговорим.
Идея селектора такого типа очень проста — конденсатор не позволяет напряжению на нем изменяться скачкообразно, поэтому при подаче на интегрирующую цепочку импульса напряжение в конце этого импульса будет зависеть от его длительности (по непростой формуле, но это неважно), и если сам момент окончания импульса принять за строб, то напряжения на конденсаторе в этот момент может быть рассмотрено, как данные, и зафиксировано на выходе регистра (сдвига). Отсюда требования к длительности импульса — короткий импульс должен создавать на конденсаторе напряжения, воспринимающееся входом регистра, как высокий уровень, а длинный — как низкий.
Здесь мы имеем дело сразу с множеством неизвестных — длительности двух видов импульсов, амплитуда импульсов (она входит в формулу), параметры цепочки, высокий и низкий уровни входные уровни. Начнем сокращать их количество. Сразу определимся, что импульсы принимают два значения по амплитуде — высокий, равный напряжению питания (U), и низкий, равный земле(0). Строго говоря, это совершенно не обязательно, но так получается намного проще и, поверьте, выбор других значений нам жизнь не упростит, а совсем наоборот.
Следующие данные — входные уровни, здесь нам поможет ТУ на микросхему, которое утверждает, что для 74НС595 любое напряжение, превосходящее 0.7*U, будет считаться высоким, а любое напряжение, не превосходящее 0.3*U, будет считаться низким, здесь U — напряжение питания регистра и пусть оно совпадает с U для параметров импульса, опять таки так проще сделать и проще считать. Обратим внимание, что распространенное мнение о пороговом значении в 0.5*U авторами ТУ не поддерживается.
Небольшое отвлечение в сторону, по Вашему, что больше: 4.2В или 3.2В? Не торопитесь с ответом, подумайте, ведь Ваш совершенно естественный ответ придет с противоречием с мнением известной фирмы NXP, в ТУ которой на данный прибор на странице 7 приведено минимальное значение 4.2В, а типовое 3.2В (лично мне казалось, что типовое должно быть между минимальным и максимальным и максимальное должно быть больше минимального, а тут так никак не получится, ну да век живи, век учись). К счастью, не менее уважаемая фирма TI в своем ТУ приводит минимальное значение входного напряжения 4.2В, на которое и будем ориентироваться. Все эти данные приведены для U = 6В, то есть выполняется 4.2=6*0,7.
Вообще то, позволю себе легкое фе в сторону NXP (они все равно Хабр не читают, а из Вас им никто не настучит, что я их поругал, так что я ничем не рискую), а что такое вообще типовое значение порога и на кой леший оно сдалось? Большинство микросхем переключаются при этом значении во всем диапазоне? Все микросхемы переключаются при этом значении в нормальных условиях? Я могу придумать еще с десяток подобных определений, но смысл в том, что типовое значение никому не нужно, ну разве что в целях общего развития, если мы проектируем устройство, которое работает без подбора компонентов, что, кстати, прямо запрещено ГОСТ, ну да эта аббревиатурой, видимо, в наше время многие пренебрегают, а ведь их неглупые люди придумывали.
Возвращаясь к нашей задаче, мы определили 4 неизвестных, осталось еще две — длительности импульсов и параметры цепочки. С последним легко — поведение интегрирующей цепочки описывается уравнением U(t)=Uo+(U-Uo)*(1-exp(-t/T)), где Uo-напряжение на конденсаторе в момент изменения прилагаемого к резистору напряжения, U-значение прилагаемого напряжения, T=R*C-постоянная времени цепочки, t-время.
Тогда напряжение в момент окончания импульса длительностью Tx составит Ux=U0+(U-Uo)*(1-exp(-Tx/T)).
Если мы зададимся значением Tx, то время, за которое напряжение достигнет такого значения, мы получим по формуле
Tx=-T*ln(1-(Ux-Uo)/(U-Uo)), или, если мы подставим выбранные значения, то Tx=-T*ln(1-(Ux-U)/(0-U)) и очевидно, что Tx=-T*ln(Ux/U).
Подставим конкретные значения и получим Tx(Ux=0.7*U)=0.35*T и Tx(Ux=0.3*U)=1,2*T.
Какие практические выводы мы может сделать из этих двух цифр? Прежде всего 1.2/0.35=3,43, это означает, что длительности импульсов, распознаваемые нашим селектором, должны различаться минимум в 3,43 раза. Усилим данное требование путем учета возможного разброса компонентов, который положим для резистора 10%, а для конденсатора 20% (с последним не все так хорошо, обычно в ТУ указывают -20%/+50%, но мы взяли конденсаторы с хорошими показателями), тогда получаем 3,43*1,1/0,9*1,2/0,8=6.29, и это есть отношение длительностей импульсов, которые будут гарантированно распознаваться при любом (в рамках ТУ) изменении параметров схемы. Конечно, это предельные значения, и в практике весьма маловероятно одновременное отклонение параметров в одну сторону, но мы обязаны учитывать наихудший случай. «Конечно, всего этого можно и не делать, если Вас не интересует конечный результат» — Жванецкий.
Аналогичные цифра у нас получаются для отношения постоянных времени двух селекторов, которые должны по разному реагировать на один импульс, оно должно превосходить 6.29 для удовлетворения критерия надежного срабатывания. Теперь мы можем переходить к выбору оставшихся неизвестных, а именно длительности импульсов и параметрам селекторов.
Для начала определим дополнительный критерий выбора — мы стараемся спроектировать схему с максимальным быстродействием, поэтому, по возможности, длительности импульсов должны быть минимальными. В качестве длительности короткого импульса (t1) выберем ту, которую имеет минимально возможный в силу аппаратных ограничений (скорость работы МК и выбранный способ формирования импульса) импульс. Вслед за этим определяем длительность импульса подлиннее (to) в 6.29*t1 и, соответственно, длительность длинного импульса (t2) определяем в 6,29*6,29*t1=39,51*t1.
Тогда постоянная времени первого селектора должна быть T1>=t1/0.35/0.9/0.8=t1*3.96 и одновременно T1<=t0/1.2/1.2/1.1=t0*1.15=t1*3.97, то есть значение T=3.96*t1 удовлетворяет обоим критериям, ну так и должно быть. Аналогично получаем, что постоянная времени второго селектора T2=3.96*t2=156.5*t1. Осталось выбрать значение t1 и задача выбора длительности импульсов решена полностью.
Но посмотрим, не осталось ли еще каких-нибудь вопросов? Выясняется, что остались, а именно вопрос об интервалах между импульсами. Поскольку мы в расчетах предполагали, что начальное значение напряжения на конденсаторе составляло U — напряжение питания, а в конце импульса оно существенно от этого значения отклоняется, поэтому мы должны принять меры к тому, чтобы вернуть напряжение на конденсаторе к напряжению питания.
Если мы догадались параллельно резистору включить диод (лучше Шотки и лучше с небольшим тока-ограничивающим резистором параллельно), то напряжение будет во время паузы между импульсами возрастать с существенно меньшей постоянной времени и эта проблема теряет актуальность, хотя тогда мы должны учитывать прямое падение напряжения на диоде при определении начального значения.
Если же мы этого не сделали (ну так получилось), то нам потребуется довольно таки значительный интервал между импульсами, и все равно, если посмотреть на формулу поведения напряжения от времени, мы значение высокого уровня не получим НИКОГДА, хотя со временем приблизимся к нему на пренебрежимо малую величину. Ну да теория пределов имеет к реальным разработкам весьма отдаленное отношение, и мы должны задаться некоторой устраивающей нас точностью. Расчеты показывают, что если для восстановления напряжения мы выберем значение временного интервала в 3*(T1,T2), то напряжение на конденсаторе перед очередным импульсом составит не менее 0.95*U, что является достаточно хорошим приближением.
Таким образом, мы получили все необходимые данные для построения схемы и для реализации программы, данные схему обслуживающую, необходимо только определить t1, а все остальные параметры получаются автоматом.Остался еще один заслуживающий внимания вопрос — о том, как мы будем реализовывать постоянные времени T1,T2, ведь они определяются соотношением T=R*C, а это означает, что требуемое значение может быть получено множеством способов. Решения обычно принимают исходя из различных факторов, иногда просто из наличия того либо иного номинала либо его применимости в других местах устройства, но мы подойдем к этому вопросу научно.
Для начала рассмотрим резистор, на который накладываются ограничения сверху — ток, протекающий через резистор в селекторе, должен быть существенно (на порядок и более) выше, нежели входной ток цепей приборов, к нему подключенных, иначе наши исходное предположение о зависимости напряжения от времени подлежат корректировке. Обращаемся к ТУ и видим, что входной ток составляет 1мкA, тогда получаем Ir=U`/R >> i=i1*n, где U` — минимальное напряжение в конце импульса, i1 — входной ток прибора, n — количество приборов. Отсюда R << U`/i1/n, подставляя значения R << 0.3*3.3/(1*10-6)/4=247 Ком.
Но есть и ограничение снизу, помимо того, что для маленького резистора может потребоваться слишком большая емкость, а именно мощность, на резисторе выделяемая. Для нее верно соотношение Pr=U*Ir=U*U/R<=Pmax, откуда получаем R>=U*U/Pmax=3.3*3.3/0.125=87 ом (для малогабаритных резисторов). Не то чтобы это было сильное ограничение, требования по разумной емкости все равно заставят нас резистор увеличить, но помнить о нем никогда не вредно.
Тем не менее наши расчеты привели нас к диапазону 247Ком >> R >=87 ом, что лишний раз подтверждает эмпирическое правило — если лень считать номинал резистора, ставь 10Ком, не ошибешься. Ну а задавшись номиналом резистора, номинал конденсатора рассчитывается в одно действие.
Но тут нас подстерегает одна опасность — полученный расчетом номинал конденсатора может оказаться недоступным (ну нет его в стандартном ряду), поэтому в расчеты отношений длительностей импульсов и постоянных времени следовало бы добавить еще 10% расстройки, оставляю это для пытливого читателя. И еще одно соображение, которое в реальной схеме вряд ли проявится, но помнить о нем надо — выбранный номинал конденсатора должен существенно (на порядок и более) превосходить входную емкость прибора, которая согласно ТУ составляет 10 пФ, что приводит к ограничению снизу C >> 10пФ*4 =40 пФ, иначе мы должны учитывать ее в своих расчетах, а я этого категорически не рекомендовал бы, поскольку мы знаем только ее верхнюю границу.
Теперь, когда мы знаем, как надо рассчитывать элементы подобной схемы, обратим внимание на конкретную реализацию, с которой все и началось. Там применены в первой селектирующей цепочке резистор 3.3Ком и конденсатор 2.2нФ, что определяет t1=7,26 мксек, а для второго селектора t2=72.6 мксек, что удовлетворяет критерию t2>6.29*t1. Номиналы обоих резисторов удовлетворяют условиям выбора, конденсатор тоже проходит по ограничению снизу, тут все хорошо. Правда, мы несколько снизили возможное быстродействие, но это не так критично.
Далее, определяем длительности импульсов. Длительность импульса записи единица должна быть t1<=0.38*T1=2.54 мксек, длительность импульса записи нуля должна быть 0.35*T2=25.4>=t0>=1.2*T1=8.71 мксек и длительность импульса фиксации данных должна быть t3>=1.2*T2=87.12 мксек. Пауза после t1 должна быть более 3*T1=21 мксек, пауза после t0 — более 3*Т1=21 мксек и пауза после t3 — более 3*T2=210 мксек.
Посмотреть длительности подаваемых импульсов на схеме мы, естественно, не сможем, поэтому обратимся к тексту скетча, доступного по ссылке на странице описания товара. И вот тут нас ожидает некоторое расхождение, а именно мы видим в тексте программы следующие значения:
импульс t1 — длительность по тексту определить не удается, используются функции из стандартных библиотек, но для быстродействия в 16 мГц количество команд в 2.54*16=40 команд для записи 1 в выходной регистр должно быть достаточно — удовлетворяет требованиям;
пауза после t1 — 30 мксек >= 21 мксек — удовлетворяет требованиям;
длительность t0 — 15 мксек >= 8.71 мксек, 15 мксек =< 25.4 мксек — удовлетворяет требованиям;
пауза после t0 — 60 мксек >= 21 мксек — удовлетворяет требованиям;
длительность t2 — 60 мксек >=87.12 — не удовлетворяет требованиям;
пауза после t2 — 300 мксек>=210 мксек — удовлетворяет требованиям.
То есть мы видим, что длительность импульса фиксации не обеспечивает надежного срабатывания второго селектора и работа устройства в целом не гарантирована. Как же так может быть, ведь данное устройство предлагается к реализации и такая ошибка должна быть сразу обнаружена? Объяснение этому возможно разное — мы рассчитывали пределы для наихудших случаев, а в типовом случае все хорошо, поскольку информация меняется не так часто, по пропуски обновления могут быть незаметны, если иногда устройство все-таки будет срабатывать, на самом деле пауза после t1 должна быть не 21 мксек, а 3*72=210 мксек, поэтому при передачи нулей наблюдается понижение начального уровня и, соответственно, облегчаются условия срабатывания, ну и, наконец, мы (я) просто где-то чего-то недоучли.
Для проверки некоторых из этих предположений проводим эксперимент по моделированию данной схемы в программе Proteus (кстати, пользуюсь случаем ее порекомендовать, действительно очень неплоха, хотя и не без странностей) и видим, что эксперимент подтверждает правильность наших расчетов — при длительности t2 в 60 мксек фиксации данных не происходит, а при наличии в информационном потоке нулей перед импульсом фиксации длительность импульса достаточна в 75 мксек, а не в 87 мксек, как было по расчетам, и как есть при наличии единиц перед импульсом фиксации. Тем не менее, 60 мксек недостаточно никогда.
Внимательное изучение репозитория приводит к еще одному объяснению — если мы смотрим релиз библиотеки в архиве, то там стоит 100 мксек, что вполне удовлетворяет требованиям, а вот если мы смотрим непосредственно доступные файлы, то видим 60 мксек и сообщение о том, что это фикс двухмесячной давности. Я не очень хорошо разбираюсь в GitHub, может быть, там так положено, но, по моему, это просто признак небрежности.
Итак, я показал, что программа не будет устойчиво работать с данными на схеме номиналами селективной цепочки, однако внимательный читатель сразу заметит, что такое несоответствие я не мог обнаружить, только посмотрев на схему (как я заявил в начале поста), без текста программы, да еще и проделав все необходимые вычисления в уме. «Не верю» — воскликнет внимательный читатель и будет абсолютно прав. Кроме данного несоответствия, которое может и не проявляться на конкретных экземплярах устройств (ведь есть, кроме максимального, еще и типовое значение, и с ним все будет хорошо), в схеме есть и другой недостаток, который гораздо более существенен.
Заключается он в том, что импульс фиксации, помимо своей основной функции, совершит еще и запись в сдвиговый регистр, поскольку его прекращение будет расценено прибором, как строб. В результате в первый разряд цепочки запишется 0, а все остальные данные будут сдвинуты и мы увидим совсем не то, что ожидали. К длительностям импульсов данное обстоятельство не имеет никакого отношение и является неустранимым. Вот это мне и бросилось в глаза.
Несколько снизить остроту проблемы можно, если при записи данных учесть это обстоятельство и для первого индикатора передавать не все 8 бит, а только 7. Тогда при передаче импульса фиксации все данные сдвинутся и окажутся на своих местах, а последний бит, который строго равен нулю, мы не будем выводить на индикатор, чтобы его не было заметно. Именно по этому пути разработчики и пошли, если обратить внимание на то, что на схеме первый выход первого прибора не подключен к индикатору. Подтверждение также можно найти в тексте программы, где вывод информации осуществляется функцией
static void sendByte(uint8_t pin, byte data, byte n = 8)
с дефолтным параметром 8, причем вывод последней секции можно было бы сделать с явным параметром 7, но почему то этого не сделано.Следует также отметить, что такое решение все равно оставляет нас без возможности зажечь точку в первом индикаторе и было бы неплохо где нибудь об этом прямо указать.
Резюмируя, можно с уверенностью заявить, что приведенная разработчиком программа что в архивном, что в развернутом варианте с приведенной разработчиком схемой правильно работать не может и не будет. Какие можно было бы сделать минимальные изменения в схеме (очевидно, что никакие изменения в программе управлять первым разрядом первого индикатора нам не позволят), чтобы данная программа могла функционировать без ошибок? К счастью, таки изменения возможны. Достаточно всего лишь добавить в цепь второго селектора инвертор, либо в виде прибора, либо в виде инвертирующей транзисторной схемы (в этом случае придется пересчитать длительности, исходя из параметров транзистора), и вышеуказанная проблема будет успешно решена. При этом во время передачи импульса t2 (а не по его окончанию) будет сформирован сигнал перезаписи, который зафиксирует правильную информацию, а после окончания импульса прибор примет строб, исказив информацию в регистре, но на выходах, в силу особенностей функционирования прибора, это не скажется. Надеюсь, разработчики так и сделали, просто забыли обновить схему на своем сайте (что опять таки говорит о небрежности) и выпускаемые ими устройства продолжают радовать любителей электроники своей безупречной работой.
Тем не менее, хотел бы настоятельно предостеречь молодых инженеров от подобных решений, когда примитивные селекторы длительности, особенно со значительными постоянными времени, работают непосредственно на вход логического элемента, а тем более на тактовый вход. Дело в том, что длительный фронт влечет за собой массу неудобств, если не принять специальных мер по защите, начиная от собирания шума всего окружения в точке вблизи напряжения переключения и заканчивая потенциальным повреждением прибора в результате длительного воздействия промежуточных значений входного напряжения и связанным с этим сквозными токами входного каскада. Современные приборы данной напасти практически не подвержены, а вот в годы моей молодости такое случалось.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
wormball
> Уровень изложения поста
Стало быть, вы критики хотите. Их есть у меня. Прочитал один только первый абзац, а слов накопилось едва ли не на такую же статью.
> «и доказал, что поскольку… то схема на частотах требуемого диапазона работать не будет» Савченко «Открытие себя»
Долго думал, что это такое. Потом всё-таки догадался, что это эпиграф. Так вот, эпиграф оформляется не так. Совсем не так. И вообще такого сочетания знаков препинания я в русском языке как-то не припомню. Да и эпиграф этот, на мой взгляд, уместен разве что в среде истовых фанатов Савченко (о котором лично я в первый раз слышу), которые наизусть знают его произведения и смогут по достоинству оценить ту несомненно остроумную шутку, которую вы имели в виду. Или здесь один я не читал указанное произведение?
> Не знаю, как у других обитателей Хабра, а у меня бывает такое, что читаю текст и вижу, что какое-то слово в нем неправильное. То есть сразу понимаю, что оно неправильное, но потом нужно некоторое время, чтобы в него вчитаться и понять, что именно в нем неправильно и где ошибка. К сожалению, данное правило действует только в отношении чужих текстов, когда я вычитываю свой, то частенько читаю не то, что реально написано, а то, что собирался написать (я то ведь твердо знаю, что тут должно быть).
Вот знаете, как-то мне совершенно не интересны ваши душевные метания. И так простыня текста, а вы её ещё водой разбавляете.
> Размышляя над особенностями возможной реализации интерфейса от микроконтроллера (МК) к WS2812, наткнулся, причем совершенно случайно, на нечто аналогичное на сайте одной фирмы, называть которую не буду, поскольку намерен ее слегка (а может и сильно, пока не знаю, будет видно по ходу изложения) поругать. Даю подсказку — она занимается
Похоже, статья для любителей ребусов. Что такое WS2812? Что за фирма? Будете вы её ругать или не будете? И ни одного рисунка! Хотя бы этот несчастный WS2812 изобразили бы, что ли. Вообще на статью такого объёма, на мой взгляд, должно быть хотя бы пять картинок, а лучше десять. Ежели не можете наскрести столько картинок — то хотя бы подзаголовки делайте, чтобы в тексте можно было ориентироваться. Только не такие «информативные», как заголовок.
Подытоживая — из первого абзаца я даже приблизительно не смог понять, о чём же будет статья, зато вдоволь покушал воды и был поставлен перед кучей совершенно не интересных мне ребусов. В общем, при таком раскладе как-то пропадает желание читать статью дальше.
Кстати, откуда такая боязнь называть вещи своими именами? На мой взгляд, страна должна знать своих героев, положительных или отрицательных. А ежели администрация захочет, чтобы «о рекламодателях или хорошо, или ничего» — то нафик тогда такой хабр нужен.
Четырёхразрядный индикатор (Troyka-модуль) amperka.ru/product/troyka-quad-display — оно?
А вот так выглядит WS2812:
GarryC
Да, Вы угадали, как говорится, приз в студию.
И, конечно, спасибо за критику, много в ней справедливо, но вот по одному пункту категорически не могу согласиться, а именно, по поводу картинок. Все таки я рассматриваю мои посты как общение с коллегами по инженерному делу (может быть и зря) и картинки как иллюстративный материал категорически не приемлю. Несомненно, были бы полезны схемы и временные диаграммы, но я не очень в ладах с графическими редакторами и поэтому ими манкирую. А вот фотографии — Вы привели фотография WS2812 и что нам она дает с точки зрения понимания интерфейса взаимодействия с ней? Да ровным счетом ничего, ее назначение — всего лишь оживить материал и ни малейшей смысловой нагрузки. А за вступление Вы меня, наверное, вполне справедливо поругали, пятница, вечер, слегка расслабился и дал волю потоку сознания. Жаль, что подобное вступление Вас отпугнуло, я, наоборот, хотел привлечь, не получилось, наверное, что то пошло не так. Ну а не назвать предмет обсуждения было частью такой игры с читателем, как бы интрига, опять таки с целью привлечь внимание, и опять неудачно. Меня, по крайней мере, никогда администрация Хабра не просила снять названия фирм, которых я поругивал, а такое бывало неоднократно, так что должен за них вступиться, чтобы ни у кого не возникло ложного мнения о некоей цензуре.
Еще раз спасибо за критику (ну кроме картинок) и очень жаль, что статью Вы не прочитали, конечно, там нет откровений, но мне в свое время такая статья была бы весьма полезна, только поэтому и написал. Извините, если что не так.
kumbr_87
А на мой взгляд вступление должно быть т. к. начинать рассказ без предыстории нельзя, не вижу ничего ужасного в нем, наоборот позволяет подготовиться к определенной тематике. А вот отсутствие форматирования и картинок напрягает, очень сложно воспринимать много информации в монотонном тексте, местами хочется посмотреть на картинку чтобы пока смотришь успеть переварить и запомнить что было написано, да и наглядно лучше информация усваивается.
Также правила хорошего тона нажать ввод перед формулой и ввод в конце, особенно если это более менее длинная формула/цепочка вычислений. А еще выделять в тексте аббревиатуры, формулы, названия жирным шрифтом, не все дабы в глазах не рябило но акцентировать внимание на них надо. Очень сложно читать монотонно написанный текст и отступы не панацея.
eandr_67
То, что Вы не читали Савченко, говорит только о том, что Вы либо слишком молоды, либо в принципе не интересуетесь интеллектуальной научной фантастикой. И ставить в вину автору то, что Вы не знакомы с классикой этого жанра, по меньшей мере странно.
Тем же, кто кол-во мыслей в книге ценит больше, чем кол-во приключений, советую прочитать (или перечитать) и «Открытие себя», и «Пятое измерение», и «Должность во вселенной»…
wormball
> То, что Вы не читали Савченко, говорит только о том, что Вы либо слишком молоды, либо в принципе не интересуетесь интеллектуальной научной фантастикой.
Ну, во-первых, не вижу причин для употребления здесь эпитета «интеллектуальный», кроме как для того, чтобы как бы невзначай дать оценку уровню моего интеллектуального развития.
Во-вторых. Да, действительно, я не интересуюсь ни «интеллектуальной», ни какой-либо ещё научной фантастикой, да и вообще художественной литературой. Потому неудивительно, что я Савченко не читал. Однако ж я его не просто не читал, я вообще об нём ничего не слышал! Я вот так с ходу могу назвать, ну, штук двадцать имён известных в народе фантастов. Но Савченко среди них не будет (по крайней мере не было до вчерашнего дня). Вот скажите мне, как такое могло произойти, что есть такой величайший фантаст всех времён и народов, все его денно и нощно читают и безмерно уважают, а я за тридцать два года своей никчёмной жизни вообще ни одного слова об нём не слышал? Это уже само по себе фантастика получается, и я не уверен, что научная.
И коли уж на то пошло. Быть может, вас не затруднит объяснить мне серому, в чём соль обсуждаемого глубокомысленного эпиграфа к настоящей статье?
eandr_67
1. Если Вас настолько коробит название литературного жанра (не понимаю, с какого бока Вы к этому себя прилепили?), замените слово «интеллектуальная», на «философская». Надеюсь, к общепризнанным философам Вы себя не относите?
2. Не надо выдумывать то, что я не говорил. И тем более, ссылаться на «народ»: «народ» предпочитает не напрягающее мозги развлекательное чтиво, вроде Макса Фрая, у которого максимум полторы мысли на роман, или «Дозоров», являющихся абсолютным самоповтором авторов, вообще не содержащих не одной новой мысли (и это ещё более-менее качественная литература, а большая часть издаваемого сейчас — откровенно тупой шлак).
3. В вашем списке известных фантастов есть Альфред Бестер, которого многие знаменитые ныне фантасты называют своим учителем? Или Илья Варшавский, про рассказы которого Станислав Лем сказал: «не думал, что вся современная западная фантастика может уместиться в одной папке»? Сколько из Ваших знакомых читали (именно читали, а не смотрели дебильные экранизации) «День триффидов»? А сколько из них прочитали «Вавилон-17»? Боюсь, что даже Лукиных/Лукина в Вашем списке не обнаружится. Я могу назвать множество высококлассных писателей, не ставших раскрученными брендами. Но всё же в моё время авторов, пачатаемых в «библиотеке современной фантастики», читали. И если Вы, в свои 32, о Савченко ничего не слышали (можете заглянуть в интервью Бориса Стругацкого — он не только слышал), то для меня, в мои 48, «Открытие себя» — это ярчайшие детские впечатления (кстати, в одном ряду с «Обменом разумов» Шекли). И взрослые впечатления при перечитывании были не менее сильными: да, местами очень наивно, но вопросы, поднимаемые в повести (многие из которых в детском возрасте просто прошли мимо сознания), сейчас даже более актуальны, чем в момент написания.
amartology
Классика русскоязычной научной фантастики — это Беляев, Ефремов, Стругацкие и Толстой. На этом всё, как бы вам не хотелось иного.
Для таких, как Варшавский и Савченко, есть прекрасные определения «непризнанный гений» и «незаслуженно забытый гений», а выставление их «классикой» есть не что иное, как инфантильное желание выставить собеседника необразованным дураком. При этом, конечно же важно понимать то, что вы сами написали — есть достаточно много высококлассных писателей, не ставших раскрученными брендами, но понятие «классика жанра» — оно как раз в первую очередь про раскрученный бренд, и уже бонусом к нему обычно (но не всегда) идет качество содержания.
GarryC
При всем уважении, Вы точно уверены, что эти 4 (несомненно сильных) писателя и есть Вся фантастика? (пусть и русскоязычная) А тот же Савченко, Снегов, Мирер, Варшавский — это малая часть того, что пришла в голову сразу. По моему мнению, дилогия «Дом скитальцев» вообще чуть ли не лучшее произведение в жанре «боевой» русскоязычной — и это не классика? Как я всегда говорил моим сыновьям «Как же вы мало читаете!», но, видимо, есть люди, которые читают еще меньше, не думал, что такое возможно.
amartology
Во-первых, я очень много читаю, и фантастика в моем круге интересов занимает важное, но не первое и даже не второе место.
Во-вторых, я нигде не говорил, что озвученными мной авторами фантастика ограничивается. Ее много, в силу специфики жанра даже больше, чем стоило бы, и хорошей тоже немало — но классикой жанра у меня не поворачивается назвать язык ничего, кроме уже озвученного.
Как правильно заметили выше, классика должна быть хотя бы по названиям знакома обывателю, не интересующемуся жанром. «Гиперболоид инженера Гарина» и «Трудно быть богом» знают все, а про уважамых интересных авторов, о которых говорите вы, что-то знает один из ста.
eandr_67
Из современной молодёжи и слышали далеко не все, а читали и того меньше (впрочем, «Гиперболоид» — произведение не того качества, чтобы реально относить его к класике). А ведь «Трудно быть богом» — одно из самых простых произведений Стругацких. Многие-ли — даже постарше — знают «Град обречённый», или «Хромую судьбу»?
eandr_67
Сколько человек смотрели «Восемь с половиной», а сколько «Блеф»? Однако классикой (если исходить из Вашей логики — по какому-то странному недоразумению) является фильм Феллини, а не Корбуччи.
eandr_67
Я разве говорит о классике всей фантастики? Речь шла только об очень узком её жанре. Ефремов и Стругацкие — безусловно, да. Беляев — это фантастика «ближнего прицела», да и назвать его классиком можно только потому, что авторы того времени (вроде того же Адамова) в целом ещё хуже. Толстой — великолепный «классический» писатель, но фантастические повести — далеко не лучшая страница его творчества. Если уж говорить о довоенной фантастике, то это прежде всего Булгаков.
«Непризанный гений» — это Вы о ком? О тех, книгами которых зачитывались огромное кол-во людей, и единственная проблема которых в том, что современные российские издательства сознательно ориентируются на предельно низкий интеллектуальный уровень? Вот интересно, почему мои друзья (причём не только моего поколения) прекрасно знают, кто такие Савченко и Варшавский?
И зачем мне пытаться кого-то кем-то выставить? Автор комментария сделал всё сам — по собственной воле.
Я понимаю Вашу точку зрения, но не согласен с ней. Прежде всего качество, а уже потом раскрученность. Иначе мы придём к тому, что величайшим писателями советского периода были Сталин и Брежнев — об их «произведениях» знали абсолютно все.
wormball
> И ставить в вину автору то, что Вы не знакомы с классикой этого жанра
Я не ставлю в вину автору, что лично я с чем-то не знаком. Но ежели я хоть что-то понимаю в статистике, то с указанным солнцем русской литературы не знаком не только я, но и львиная доля здесь присутствующих. Но это, конечно, тоже не состав преступления. А состав в следующем. По моему глубочайшему убеждению эпиграф должен быть выдержан либо в юмористическом, либо в философском ключе, либо и то, и другое одновременно. Но вот я не вижу в настоящем эпиграфе ни того, ни другого (надеюсь, только оттого, что не читал оного произведения). Я готов снять своё обвинение в том случае, ежели хотя бы три человека скажут, что они находят в оном эпиграфе хотя бы одну из указанных составляющих. А желательно ещё и пояснят, в чём она заключается.
eandr_67
1. Попробуйте сначала прочитать, а уже потом язвить. А то слишком уж похоже на: «я Пастернака не читал, но осуждаю».
2. Скажите пожалуйста, какой именно нормативный документ требует, чтобы эпиграф был либо юмористическим, либо философским.? Насколько я знаю, никаких обязательных к исполнению литературных правил не существует. В данном случае эпиграф передаёт смысл статьи и потому совершенно уместен.
GarryC
Ну если коротко, то там идет защита диссертации анти-героем, которую герои произведения решили завалить, и именно такая фраза применяется при описании процесс заваливания. Я занимался примерно тем же — показывал, что эта схема с этой программой неработоспособна, вот и нашел аналогию.
И все таки, очень грустно, что современные молодые люди ( позвольте мне так Вас называть, мой старший Вашего возраста) мало читают. Конечно, в наше время не было телевизора и Инета, но у меня и сейчас под боком стоит шкаф с около 300 книгами, купленными за последние 2-3 года, это не считая книг по профессии, их я скачиваю в основном.
Никого не хочу обидеть, но, все таки, если я много читаю и при этом нахожу ошибки в Ваших (не Ваших конкретно, но в смысле обобщения) схемах, может быть, Вы (опять таки обобщение) что то не так делаете? Ведь чтение — одно из высших интеллектуальных наслаждений для образованного человека, почему же такое пренебрежение таких приятным занятием?
Как сказал кто то из великих «Читать — это разговаривать с умершими друзьями». По моему, исключив из списка своих друзей людей класса Савченко, Вы обедняете эту часть своей жизни.
olartamonov
У вас есть удивительная черта: сколько вижу ваши комментарии — вы ни разу не можете удержаться от того, чтобы в лицо нахамить собеседнику.
В данном случае вы не знаете ровно ничего о том, сколько и чего читает ваш оппонент — и, очевидно, он может читать много вещей, которые вам будут очень, очень сильно не по зубам, и не читать вашего любимого фантаста, потому что ничего нового тот ему уже не скажет. Из Канта, например, вы что находите наиболее для вас лично интересным?
Поэтому вы в явном виде постулируете, что ваш оппонент — необразованный идиот, читающий мало книг. То есть, лёгким движением руки превращаете неизвестную вам переменную в известную и выгодную вам же.
Что характерно, текст статьи переполнен тем же лёгким хамством, причём обращённым в сторону вообще неопределённого круга читателей. Всё это можно было написать раз в десять короче, но вы растекаетесь по бесконечным подробностям, каждый раз оправдывая их тем, что читатель может быть глупее вас и не разбираться в этом вопросе. Что особенно поразительно, вы этим «на случай, если вы не понимаете, что я тут говорю» прямо и неоднократно читателю в нос тыкаете.
То есть, для вас демонстративное возвышение себя над читателями и оппонентами — это обязательный и важный элемент.
Вот в этом проблема, а не в эпиграфе из малоизвестного писателя-фантаста.
P.S. Да, я попробовал читать Савченко. По-моему, это кошмарно, причём конкретно в «Открытии себя» особенно кошмарны конкретно эпиграфы, начиная с первого же. Я так подозреваю, в них выражены представления автора о юморе.
GarryC
Ну что же, вы своей фразой
лишний раз подтвердили мое мнение об определенных молодых людях. А, по моему мнению, это замечательно, хотя и слегка наивно. Конечно, на страницах его произведений никто не падает в торт лицом, и в эпиграфах такого тоже не найти, поэтому конкретно Вам данный вид юмора может быть и не вполне понятен. Но, на мой взгляд, это проблемы не Савченко, а скорее Ваши. Как написано в предисловии к «костеровской Алисе», «чтобы правильно читать эту книжку, а правильно читать ее — это читать и смеяться, надо очень много знать».Так что в данном случае есть две различные точки зрения, но правоту одной из них (моей) косвенно подтверждает тот факт, что, как я и указал, я ошибки в Ваших программах нахожу, а вот Вы попробуйте найти методологическую либо фактическую ошибку в моих расчетах, тогда будем на равных.
Ну и чтобы поставить точки над i, если Вы посмотрите на результаты опроса в конце поста, то увидите, что бОльшая читателей часть не считает мой пост «перенасыщенным бесконечными подробностями», то есть это не «демонстративное возвышение», а попытка говорить с читателем на одном языке, может быть, не всегда удачная, так для этого я опрос в конце и предложил.
olartamonov
Боже, какая экспрессия!
Савченко — типичный представитель «журнального чтива эпохи соцреализма», литературы для скучающих м.н.с. и инженеров из многочисленных НИИ: вся обстановка, действия, взаимоотношения героев — они на уровне этого НИИ, юмор — курилка того же НИИ, и потому целевой аудитории он приятен и понятен. В остальном это — картонные персонажи, взаимодействие между которыми в девяти случаях из десяти определяется штатным расписанием того же НИИ, такой же картонный юмор (эпиграфы из инструкций по безопасности и выдуманного самим же автором юмористического персонажа — это настолько плоско и уныло, что Петросян начинает казаться отличным комедиантом), такая же картонная философия уровня курилки этого НИИ. И, как правило, попросту плохой, неуклюжий, натужный русский язык.
Ну то есть известные многим интернетчикам «Хроники лаборатории», только в разы длиннее и скучнее.
Как и любую другую нишевую второсортную литературу (любовные романы, детективные боевики, попаданцы, фанфики Толкиена, you name it), добровольно читать это может только строго целевая аудитория. Причём в среде этой ЦА авторы быстро обрастают какими-то регалиями, степенями, рангами и званиями, в то время как отойди на полметра — и никто даже их имён не знает.
Вот сейчас было действительно смешно. А какое отношение я имею к программам, в которых вы нашли ошибки?
Вашу простыню открыли 3,5 тыс. человек, проголосовали их них 34 человека. 99 % ваших читателей просто умерли на середине этой простыни.
GarryC
Если бы Вы внимательно читали комментарии, по поводу которых высказывались, то увидели бы, что там «Вы» — собирательный образ, что подчеркнуто 2 раза. Извините, что забыл поставить кавычки и ввел именно Вас в заблуждение.
Несомненно, поколение, представителем которого Вы являетесь, достигло намного больших успехов в сфере научно-технического прогресса, нежели поколение «м.н.с.», к которому себя причисляю я, и Вы имеете полное право смотреть на нас слегка свысока. Тем не менее, был бы раж ознакомиться со списком этих, несомненно, выдающихся достижений, список достижений предыдущих поколения можно найти в БСЭ (там не все идеологическая туфта).Ваших программ я на видел (а они есть? ссылочку можно?), уровень их оценить не могу, хотя на форуме Стрижа меня зацепила фраза о разработке программного UARTa, где было сказано (не Вами, наверное, но Вы с этими людьми работали, как я понял) что не следует надеяться на 115200 бод. Отличный план, МК с быстродействием в 300 М в секунду не хватит для реализации такой чудовищной скорости. Может быть, все дело в тонкостях ОС, под которую писали данный UART, но само по себе выглядит подобное заявление сильно.
И я, конечно, слегка расстроен, что дочитали до конца всего лишь 34 человека, но это, наверное, были люди, которым эта статья в чем то помогла, так что я слегка горд этим. Несомненно, статью с фотографиями котиков до конца дочитало бы большое количество людей, но, боюсь, что мне эти читатели не слишком интересны. Если Вы, по своей привычке, усмотрите в данном заявлении легкое хамство, то Вы таки да, правы.
Как я понял из контекста (из умолчания) предъявить ошибки в моих постах Вы не можете, естественно, исключительно в силу нежелания вчитываться в страницы (прошу прощения, в простыни) скучного технического текста, для понимания которого требуются специальные знания.
Больше всего меня порадовал пассаж от человека, мгновенно обнаруживающего хамство в чужих комментариях, о
olartamonov
А можно я вместо ваших комментариев буду ориентироваться на правила русского языка? Можно? Спасибо. Так вот, по правилам русского языка обращение «Вы» является персональным уважительным обращением к конкретному человеку.
Ну вот, опять возвысились надо мной — вы понятия не имеете, какие знания у меня есть, а каких нет, поэтому торопитесь это постулировать.
Кстати, напоследок: а почему вы считаете, что опыт инженера-электронщика автоматически переносится на ваши компетенции в области литературной критики?
GarryC
Я же уже признал свою ошибку в непроставлении кавычек, сделаю это еще раз, имелись в виду не Вы конкретно, а «Вы» как обобщение, в таком оформлении это не было бы обращением к конкретному человеку?
Поскольку я не увидел конкретного разбора моих ошибок, то позволили себе подобное предположение, поскольку нисколько не считаю себя непогрешимым и ошибки должны быть, значит, вы их не нашли, что делает мое предположение о «нежелании...» и далее по тексту правдоподобным, буду рад увидеть опровержение.
Ни в коей мере не переносится, разумеется, оценка литературы является сугубо личностным явлением, если Вы внимательно прочитаете комментарий, там было высказано предположение, что чтение книг могло бы помочь в проффесиональном становлении, основанное на единичном опыте конкретного инженера и подкрепленное конкретным примером из практики. Больше там ничего не было и быть не могло, мои вкусы по части литературы никак не могут быть эталоном, и это несомненно.
olartamonov
Конечно, было бы. Учите русский язык.
Тем не менее, свою правоту в литературной оценке творчества Савченко вы сами перед собой подтверждаете своим опытом инженера-электронщика.
Могло бы, конечно. Чтение книг могло бы помочь вам, например, лучше пользоваться русским языком. Только книги надо читать написанные хорошим языком, а не второсортную фантастику эпохи соцреализма.
GarryC
Ни в коей мере не претендую на Ваше право высказывать столь резкие оценки (ну в мой адрес — это пустяки) в адрес Савченко
тем не менее хотелось бы получить хотя какие то подтвержения права на столь безаппеляционные оценки.Поскольку, как мы договорились, литературные вкусы есть вещь субъективная, хотелось бы ознакомится со списком Ваших личных достижений, который дает Вам право на подобные заявления. Возможно, это будет ссылка на высокохудожественное произведение, «написанное хорошим языком», и если не лично Вами (допущение фантастическое, но кто знает ...), то тем автором, которого Вы считаете несомненным эталоном и можете рекомендовать с целью повышения интеллектуального уровня начинающим инженерам.
Или же это может быть мотивированный анализ ошибок какого либо из моих постов (хотя, несомненно, данная тема недостойна Вашего внимания), или ошибок какой либо схемы, размещенной в Инете, ну или что нибудь подобное, например, сравнительный анализ различных методов адресации, архитектур, способов формирования стандартных сигналов, ускорения работы интерфейсов и т.д., то есть разнообразных глупостей, которым я посвящаю страницы (простите, простыни) текста.
Жду с нетерпением, но что то внутри заставляет меня сомневаться в плодотворности ожидания.
olartamonov
На вашем месте я бы начал с Дитмара Эльяшевича.
Всего хорошего. Не болейте.
GarryC
Я так понял, что ничего другого не дождусь… ну по крайней мере рад, что не ошибся.
А по поводу Розенталя — при всем уважении к данному автору, никак не могу отнести его произведения к разряду художественной литературы, так что и тут Вы предпочли уклониться.
«В разгар спора неожиданно сменить тему ...» Жванецкий.
amartology
Для повышения интеллектуального уровня молодых инженеров куда лучше любой, даже очень хорошей фантастики подходят, например, Маркес, Фаулз, Голдинг, Кутзее или Грасс.
Или, например, Пастернак, которого продолжают не читать. Или Астафьев. Или Булгаков. Или Распутин. Или Аксенов.
Список может быть очень длинным, и Савченко с озвученной вами компанией в нем выглядят, прямо скажем, весьма бледно.
GarryC
Если позволите, маленький вопрос: Вы лично читаете
в оригинале? Тогда снимаю шляпу, мой английский (а других языков я вообще не знаю) заканчивается на уровне ТУ. А если нет, то это не вышеперечисленные авторы, а их переводчики, которые, несомненно, стараются сохранить дух оригинала, но насколько это им удается… Фабула произведения, конечно, сохраняется, но стиль и слог — совершенно не уверен, по крайней мере я сужу по небогатому личному опыту — сравнение Киплинга в оригинале и после Маршака — все таки получаются немного разные вещи.amartology
Фаулза, Голдинга и Кутзее — да, в оригинале. Немецкого и испанского, к сожалению не знаю.
По остальной части моего поста, как я понимаю, вопросов нет? )
GarryC
Офигеть, это действительно классно, завидую белой завистью. Вот тут Вы, несомненно, правы — чтение английских авторов в оригинале действительно весьма полезно для инженера, жаль, что себя так и не могу заставить взяться за язык, старшая сестра не позволяет.
amartology
Если даташиты нормально читаются, то попробуйте начать с Пратчетта. Словарь местами пригодится (особенно для понимания юмора), но в целом у него прекрасный и вместе с тем не очень сложный язык.
Alexeyslav
Вообще это особенность современных процессоров — Вручную(тобишь, программно) реализовывать на них аппаратные интерфейсы невозможно, поскольку на это они не заточены(одна из самых длительных операций на быстрых контроллерах — это операции ввода-вывода, поэтому ножками программно они дёргают даже медленней чем привычные 8Мгц контроллеры). Взамен, они имеют богатую периферию, которая покрывает все необходимые задачи чтобы не возится с программной реализацией. Вплоть до встроенной ПЛИС в контроллер, на которой можно реализовать нестандартное «железо».
MTyrz
Знаете, «соль» в общем-то любого эпиграфа к любому произведению довольно неплохо раскрыта в Википедии.
То есть ваше понимание эпиграфа, как непременно философского, либо юмористического, отличается от общепринятого. Уважаемый автор вполне легитимно исходил из общепринятых, а не ваших личных представлений, и в вину ему это поставить довольно сложно.Впрочем, юмористическую часть я в эпиграфе вполне нахожу: лично я перекличку смыслов оценил и улыбнулся. Счетчик находящих можно увеличить на единичку.
И да. Я встречал эпиграфы к русскоязычным (т.е. написанным для русскоязычной аудитории писателями-носителями русского языка) произведениям на латинском, греческом, английском, французском, японском, испанском, итальянском, арабском, немецком языках, а также на иврите и эсперанто. Совершенно очевидно, что только часть читателей способна прочесть и опознать эти эпиграфы, также как и распознать все аллюзии и реминесценции внутри текста произведения. По сложившейся практике это считается корректным: опознавший читатель получит дополнительное удовольствие (или не получит, признака обязательности тут тоже нет), не опознавший может либо пропустить, как малозначащее, либо заинтересоваться и узнать для себя нечто новое. Подобная практика вошла в писательский обычай задолго до термина «постмодернизм», хотя и считается одним из основных его признаков в тривиальном понимании.
В конце концов, более половины абстрактных читателей, отличаясь от аудитории гиктаймса, не распознают моей финальной мысли, что не помешает вам понять, а мне завершить комментарий.
</зануда>
GarryC
Оказывается я постмодернист, спасибо, не знал,. Можно погордиться ).
wormball
Рад, что вы адекватно реагируете на критику! :)
> картинки как иллюстративный материал категорически не приемлю.
Ну, понятное дело, под картинками я имел в виду не фотографии котиков. Графики, схемы, осциллограф можно сфотографировать и т. п. И одна-две фотографии собственно вашей железки были бы полезны. А то и три.
> фотография WS2812 и что нам она дает с точки зрения понимания интерфейса взаимодействия с ней? Да ровным счетом ничего
Не скажите. По крайней мере из неё явственно видно, что у ней внутре
неонкатри светодиода и микросхема. И что три ноги идут к светодиодам, а три к микросхеме. И сразу становится понятно, об чём идёт речь. Хотя бы что это микросхема, а не челомедведосвин или философская категория. Конечно, можно это всё словами сказать, но картинка донесёт смысл быстрее и надёжнее. Всё же со зрительными образами люди имели дело уже полмиллиарда лет, а с буквами — всего каких-то пять тысяч (и то далеко не все). Ну и вообще, картинка банально больше информации в себе содержит, словами вы её очень долго будете описывать. Вот вы сами даже пишете:> При разработке различных электронных устройств мы часто сталкиваемся с необходимостью визуализации результатов обработки входящей информации
Сталкиваетесь с необходимостью визуализации, а сами отказываетесь визуализировать. Эдакий сапожник без сапог получается.
> ее назначение — всего лишь оживить материал и ни малейшей смысловой нагрузки.
Ну, здесь в том числе развлекательный сайт, так что это тоже немаловажно. Да и на сугубо «рабочем» сайте лёгкость восприятия никогда не помешает, на мой взгляд. Ну и не надо забывать, что здесь всё же довольно широкая аудитория, надо ей продемонстрировать место того, об чём вы рассказываете, так сказать, в системе мироздания. Вот ежели вы это вашим непосредственным коллегам рассказываете — то им можно не показывать фотографии, но только потому, что они и так эти железки по сто раз на дню видят.
> Несомненно, были бы полезны схемы и временные диаграммы, но я не очень в ладах с графическими редакторами и поэтому ими манкирую.
А зачем вам графические редакторы? Схемы в редакторах схем рисуются. А временные диаграммы на осциллографах, ну или есть pylab, excel и т. п. А можно и вовсе всё от руки нарисовать и сфотографировать, это только в плюс пойдёт.
Коли уж на то пошло, то приведу фотографию оного дисплея:
wormball
Теперь моя очередь промахиваться мимо ветки. :(
alff31
Комментарий от абстрактного читателя: «Вообще без картинок сложно быстро понять о чем статья. Начал читать вначале, какая-то вода и литературное вступление, прокрутил статью в поисках за что можно зацепится, простыня текста. Начал читать в середине, непонятные для меня вычисления и формулы. Я не к тому что „многобукв неасилил“, а к тому вообще непонятно нужно ли мне это читать. Что тут, про космос, про микроэлектронику и микросхемы или про силовые линии электропередач?»
Если бы были картинки устройства, принципиальные схемы, я бы стразу понял бы что про что примерно статья и стоит ли мне вообще её читать.
mark_ablov
Я прочитал без особых проблем. Отсутствие картинок не особо мешает. Разве что в TeX формулы можно было бы загнать, но они не такие уже и сложные здесь.
serafims
Думаю, иногда графически проще изобразить все эти тайминги с фронтами и потом уже пояснять про t1 и t2…
GarryC
Несомненно, с временными диаграммами было бы намного нагляднее, но у меня, как я сказал выше, проблемы с графикой. И, кстати, единственная тройка в МИЭТ у меня было по инженерной графике, как бы я не старался, чертежи получались неряшливые :( В посте я напирал на методику расчета, а что именно считалось как бы подразумевалось.
amartology
Просите кого-нибудь помочь. Есть же известное правило, сформулированное Хокингом: «каждая иллюстрация в научно-популярной книге увеличивает количество прочитавших вдвое, а каждая формула — уменьшает вдвое».
Читатель существо привередливое, он вам ваши недостатки не простит, просто пролистает статью, и всё.
Текст-то интересный и полезный, особенно начинающим, но оформление серьёзно уменьшило его аудиторию. Стоит потратить немного сил, чтобы так больше не случалось.
P.S. Меня крайне удивляет, почему нельзя уже один раз выучить правила употребления деепричастных оборотов. " Проезжая мимо станции, у меня слетела шляпа" во всей красе — не только у вас, но и у каждого второго автора.
Sergey_datex
А где схемы описанных в статье подключений? Они сказали бы гораздо больше чем сотни строк текста. Плюс осциллограммы. Скриншоты даташитов к которым апеллируете. Тогда статья будет иметь смысл.
GarryC
Схема лежит на сайте фирмы, в одном из комментов дали ссылку. А по поводу ТУ (позвольте мне именовать их несколько старомодно), так они доступны по первым двум строкам поиска, первая — TI, вторая — NXP.
Поскольку я схему как бы ругал, с моей стороны было бы невежливо напрямую ее указывать.
amartology
У вас довольно странные понятия о вежливости в этом вопросе. Ругать — так ругать. Адекватный производитель вам ещё спасибо скажет за конструктивную критику.
GarryC
А кто их знает, а вдруг они неадекватный производитель?
wormball
А неадекватный производитель тем паче заслужил. И читатели заслужили право знать, какой производитель неадекватен. Или вы боитесь, что сей производитель к вам убийцу пришлёт?
GarryC
Ну конечно же, нет. Просто раньше (лет десять назад) я мог прямо сказать в лицо человеку, что он идиот. Теперь ту же самую мысль я постараюсь выразить в виде «Вам не кажется, что у некоторых их здесь присутствующих не слишком высокий IQ».
DIHALT
Для тех кому нужны картинки их есть у меня. Там правда другая схема, но суть та же.
easyelectronics.ru/upravlenie-semisegmentnymi-indikatorami-po-odnomu-provodu.html
GarryC
Спасибо, очень кстати, и у Вас там все хорошо, поскольку нет строба фиксации, из-за которого работа рассматриваемого девайса и поплыла.
Steve_Key
Я вообще не понял,
кто на ком стоя?л…Конкретная программа не работает с конкретной схемой? Косяк. Программиста — в шею!
Какие-такие задержки? Зачем ждать, пока поток битов «протолкнётся» через регистры?
Это всё в прерываниях неспешно делается. Параллельно основной работе.
Экономия проводов-выводов? Ну, тогда придётся смириться с задержками…
Alexeyslav
Кстати, к вопросу о диоде (за)разряжающему конденсатор в паузе между импульсами — его нельзя оставлять одним, ток необходимо ограничивать. Иначе — выход из строя драйверов, много помех в эфир… поэтому с диодом нужен ещё и резистор, вероятно порядка 100 Ом.
Когда-то давно думал о таком же способе работы с регистрами, но мне что-то показалось это слишком ненадёжным и сложным к реализации. Опять же, у вас еще не учтена температурная зависимость емкость конденсаторов, которая для керамических конденсаторов(сейчас же большинство конструкций делают именно на них, особенно SMD) может дать огромный результат. Вобщем, решение может быть оправдано только в условиях огромной экономии выводов контроллера.
С программной точки зрения, особенно на современных контроллерах это тоже очень гиморно — каждую операцию надо описывать, импульсы формировать вручную… куда лучше использовать аппаратный SPI интерфейс и пусть железо САМО загружает данные в регистр на скорости максимально доступной для регистра, а это порядка 100Мгц для некоторых представителей 595-х т.е. вжииик и больше не обращаем внимания на эту задачу следующую вечность(по меркам быстродействия контроллера) и не отвлекаем внимание программиста на ньюансы формирования временных интервалов. Хотя, на контролерах можно и таймеры использовать с DMA для формирования импульсов строго заданных длительностей аппаратно надо только настроить всё это дело, положить в память последовательность длительностей и дать команду — а дальше железо контроллера воспроизведёт всю пачку импульсов уже независимо от программы.