Теплый ламповый дисплей. Собираем монитор из электронно-лучевой трубки - «Новости» » Самоучитель CSS
Меню
Наши новости
Учебник CSS

Невозможно отучить людей изучать самые ненужные предметы.

Введение в CSS
Преимущества стилей
Добавления стилей
Типы носителей
Базовый синтаксис
Значения стилевых свойств
Селекторы тегов
Классы
CSS3

Надо знать обо всем понемножку, но все о немногом.

Идентификаторы
Контекстные селекторы
Соседние селекторы
Дочерние селекторы
Селекторы атрибутов
Универсальный селектор
Псевдоклассы
Псевдоэлементы

Кто умеет, тот делает. Кто не умеет, тот учит. Кто не умеет учить - становится деканом. (Т. Мартин)

Группирование
Наследование
Каскадирование
Валидация
Идентификаторы и классы
Написание эффективного кода

Самоучитель CSS

Вёрстка
Изображения
Текст
Цвет
Линии и рамки
Углы
Списки
Ссылки
Дизайны сайтов
Формы
Таблицы
CSS3
HTML5

Новости

Блог для вебмастеров
Новости мира Интернет
Сайтостроение
Ремонт и советы
Все новости

Справочник CSS

Справочник от А до Я
HTML, CSS, JavaScript

Афоризмы

Афоризмы о учёбе
Статьи об афоризмах
Все Афоризмы

Видео Уроки


Видео уроки
Популярные статьи
Наш опрос



Наши новости


РЕКЛАМА


ВАША РЕКЛАМА
ДОБАВИТЬ БАННЕР


21-05-2022, 00:02
Теплый ламповый дисплей. Собираем монитор из электронно-лучевой трубки - «Новости»
Рейтинг:
Категория: Новости

6ЛО1И. Мотиви­рова­ла меня ее низ­кая сто­имость (мне этот девайс обо­шел­ся в 400 руб­лей) и ее ком­пак­тность.
Теплый ламповый дисплей. Собираем монитор из электронно-лучевой трубки - «Новости»
6ЛО1И

Од­нако уже во вре­мя сбор­ки и нас­трой­ки я осоз­нал, нас­коль­ко это пло­хой выбор, ведь имен­но из‑за исполь­зования 6ЛО1И я стол­кнул­ся с таким количес­твом труд­ностей. А дело в том, что у труб­ки есть такой показа­тель, как чувс­тви­тель­ность откло­няющей сис­темы. Изме­ряет­ся она в мил­лимет­рах на вольт, и у 6ЛО1И это зна­чение сос­тавля­ет око­ло 0,15 мм/В, для оси X — чуть мень­ше, для оси Y — чуть боль­ше. Такая чувс­тви­тель­ность край­не низ­кая, и для дви­жения луча по горизон­тали от левого края экра­на до пра­вого нуж­но поряд­ка 250 В, а по вер­тикали око­ло 200 В. Это доволь­но мно­го и тре­бует от виде­оуси­лите­ля очень хороше­го быс­тро­дей­ствия. Собс­твен­но, если пос­мотреть, что имен­но выпус­кала про­мыш­ленность на этих труб­ках, то ста­новит­ся ясно, что это были «показо­мет­ры» с шириной полосы не более нес­коль­ких десят­ков килогерц, нап­ример ОМШ-3М.


Читайте также - Оклейка автомобиля антигравийной плёнкой (бронирование авто) – это максимальная защита автомобиля от гравия, сколов, пескоструя, зимних реагентов и царапин. Антигравийная плёнка абсолютно прозрачная и не влияет на цвет вашего автомобиля, защитное покрытие кузова по доступным ценам.

Здесь, прав­да, мож­но нем­ного схит­рить и понизить анод­ное нап­ряжение на труб­ке с пас­пор­тно­го 1200 В до, ска­жем, 700–1000 В. Яркость при этом сни­зит­ся, а чувс­тви­тель­ность откло­няющей сис­темы замет­но воз­растет, и в дан­ном слу­чае это разум­ный ком­про­мисс. В общем, советую взять труб­ку поп­рилич­нее — это силь­но упростит ковыря­ния с виде­оуси­лите­лем.
Но есть у 6ЛО1И и дос­тоинс­тва: устрой­ство ее нес­ложное, поэто­му и схе­ма питания у нее прос­тая.


 

Питание и обвязка трубки


Пе­ред тем как изоб­ретать свой велоси­пед, неп­лохо бы озна­комить­ся с уже изоб­ретен­ными вари­анта­ми. По уму, конеч­но, сто­ило бы соб­рать для анод­ного нап­ряжения импуль­сник со ста­били­заци­ей. Но пос­коль­ку для накала нуж­но 6,3 В, а в осциллог­рафичес­ких труб­ках боль­шая часть высоко­го нап­ряжения пода­ется на катод, то есть потен­циал катода око­ло –900 В, источник питания накала дол­жен быть надеж­но изо­лиро­ван от мас­сы. Про­ще все­го про­вер­нуть этот финт, исполь­зуя накаль­ную обмотку.


А раз уж нуж­на накаль­ная обмотка, зна­чит, тран­сфор­матор будет содер­жать и анод­ную обмотку, поэто­му высокое нап­ряжение мож­но получить умно­жите­лем. Как говорит­ся, 1000 В — это все­го лишь три раза по 330 В. Поэто­му, вдох­новив­шись про­ектом прос­того осциллог­рафа на 6ЛО1И, я раз­работал свою схе­му, в которой от исходной остался толь­ко кон­цепт.



warning


Раз­ность потен­циалов меж­ду положи­тель­ным и отри­цатель­ным пле­чами источни­ка питания пре­выша­ет 1000 В! Удар таким нап­ряжени­ем смер­тель­но опа­сен, а кро­ме того, это очень боль­но. Поэто­му будь край­не вни­мате­лен и осто­рожен! А если нет опы­та в работе с высоким нап­ряжени­ем, воз­можно, луч­ше и не свя­зывать­ся с этим бло­ком питания. Я пре­дуп­редил.



Схе­ма бло­ка питания и обвязки 6ЛО1И

Ос­новой бло­ка питания слу­жит 30-ват­тный торо­идаль­ный тран­сфор­матор с дву­мя обмотка­ми, накаль­ной и анод­ной. Анод­ная обмотка выда­ет 235 В, которые пос­тупа­ют на вып­рямитель и умно­житель](https://en.wikipedia.org/wiki/Voltage_multiplier). Вып­рямитель при­менен одно­полу­пери­одный, так как он хорошо сочета­ется с умно­жите­лем, а токи пот­ребле­ния схе­мы око­ло 0,5 мА. На выходе вып­рямите­ля получа­ем око­ло +330 В. На выходе умно­жите­ля име­ем, соот­ветс­твен­но, око­ло –660 В, что в сум­ме дает нам 1000 В — впол­не дос­таточ­ное нап­ряжение для работы труб­ки.


Об­рати вни­мание на резис­торы, шун­тиру­ющие кон­денса­торы вып­рямите­ля и умно­жите­ля: они могут сущес­твен­но прод­лить твою жизнь, пос­коль­ку кон­денса­торы — шту­ка ковар­ная (см. пре­дуп­режде­ние). Вооб­ще говоря, нес­мотря на пас­пор­тное анод­ное нап­ряжение 1200 В, 6ЛО1И работа­ет и от 1000 В, и даже от 500 В. При этом повыша­ется чувс­тви­тель­ность откло­няющей сис­темы и сни­жает­ся яркость све­чения.


При 1000 В яркость впол­не при­лич­ная. Обвязка самой 6ЛО1И впол­не стан­дар­тная, как и в упо­мяну­том выше про­екте. Сто­ит так­же обра­тить вни­мание, что к обще­му про­воду под­клю­чен не выход вып­рямите­ля, а сред­няя точ­ка делите­ля на резис­торах R5/R6. Это нуж­но, что­бы при­под­нять нап­ряжение на откло­няющих элек­тро­дах при исполь­зовании окон­чатель­ного вари­анта виде­оуси­лите­ля.


Де­ло в том, что нап­ряжение на вто­ром ано­де (астигма­тизм) дол­жно быть чуть ниже, чем на откло­няющих элек­тро­дах. Если нап­ряжение на них низ­ковато, то и на вто­ром ано­де его при­дет­ся занижать, в резуль­тате пада­ет яркость, исполь­зование же делите­ля поз­воля­ет обой­ти эту проб­лему. Да, нас­трой­ки яркости, фокуса и астигма­тиз­ма вли­яют друг на дру­га. Если вклю­чить устрой­ство на этом эта­пе, пос­ле прог­рева на экра­не появит­ся точ­ка, которую мож­но сфо­куси­ровать. Сиг­нал пода­ется на откло­няющие плас­тины, выводы 10, 11 опре­деля­ют откло­нение по оси Y, выводы 7, 8 — откло­нение по оси X. Теперь перей­дем к виде­оуси­лите­лю.


6ЛО1И с бло­ком питания и обвязкой 

Видеоусилитель


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


Ис­ходный вари­ант виде­оуси­лите­ля

Од­нако это решение неудоб­но, так как тре­бует допол­нитель­ного сме­щения на базу пер­вого тран­зисто­ра, в про­тив­ном слу­чае кас­кад работа­ет в нелиней­ном режиме, что совер­шенно неп­рием­лемо. Хотя если хочет­ся пос­мотреть фи­гуры Лис­сажу, а в качес­тве источни­ка сиг­нала исполь­зовать завод­ской ГСС, где мож­но задать сме­щение в пару вольт отно­ситель­но зем­ли, то такое решение впол­не рабочее. Изба­вить­ся от необ­ходимос­ти внеш­него сме­щения мож­но, исполь­зуя дву­поляр­ное питание, что я и сде­лал.


Прос­тей­ший вари­ант виде­оуси­лите­ля

Уси­литель Y-канала иден­тичен. Как видишь, здесь появил­ся еще один источник питания — 5 В, это усложня­ет блок питания, но реша­ет проб­лему сме­щения, поэто­му на вход мож­но подавать сиг­нал непос­редс­твен­но с ЦАПа. Этот вари­ант уси­лите­ля чрез­вычай­но прост и под­ходит для экспе­римен­тов с труб­кой, одна­ко име­ет сущес­твен­ные огра­ниче­ния. И это в пер­вую оче­редь быс­тро­дей­ствие. Так, полоса про­пус­кания дан­ного уси­лите­ля будет око­ло 10 кГц, и выше этой час­тоты уси­ление дос­таточ­но быс­тро сни­жает­ся.


И что с того, спро­сишь ты? А из это­го сле­дует, что количес­тво сем­плов ЦАПа будет огра­ниче­но полосой про­пус­кания, что, в свою оче­редь, будет огра­ничи­вать раз­мер изоб­ражения (количес­тво точек), которое мож­но отри­совать без мер­цания. В дан­ном слу­чае количес­тво точек будет поряд­ка 500. А если под­нять час­тоту ЦАП, то изоб­ражение будет иска­жать­ся.


С дру­гой сто­роны, нес­коль­ко сотен точек впол­не дос­таточ­но для отри­сов­ки цифер­бла­та и стре­лок, нес­ложной геомет­ричес­кой кар­тинки или тех же фигур Лис­сажу. Собс­твен­но, в боль­шинс­тве конс­трук­ций подоб­ное изоб­ражение и выводят. А что делать, если мы хотим боль­шего, нап­ример вывес­ти на экран дос­таточ­но слож­ную кар­тинку в пару десят­ков тысяч точек? Для это­го при­дет­ся под­нимать быс­тро­дей­ствие, и самый прос­той спо­соб это сде­лать — под­нять токи выход­ного кас­када.


Кро­ме того, сто­ит иметь в виду, что кол­лектор­ные резис­торы вмес­те с емкостью откло­няющей сис­темы и выход­ной емкостью тран­зисто­ра обра­зуют RC ФНЧ, час­тоту сре­за которо­го мож­но при­мер­но при­кинуть, взяв емкость, ска­жем, 15 пФ. На прак­тике получа­ется замет­но хуже, чем в теории, ну да это как всег­да. Для резис­торов 220 К получа­ется зна­чение 48,25 кГц, а для резис­торов 3 К уже 3,54 МГц — то, что надо.


Нес­коль­ко усложним схе­му, исполь­зовав кас­кодное вклю­чение тран­зисто­ров. Такое вклю­чение поз­воля­ет сде­лать схе­му менее кри­тич­ной к парамет­рам высоко­воль­тных тран­зисто­ров. В целом кас­код работа­ет как иде­али­зиро­ван­ный кас­кад с общим эмит­тером. Нас, конеч­но, это не спа­сет, пос­коль­ку мы все рав­но упремся в парамет­ры труб­ки, зато поз­волит исполь­зовать дешевые высоко­воль­тные тран­зисто­ры в вер­хнем пле­че, нап­ример MJE13003, MJE13005. Одна­ко луч­ше все‑таки 2SC2611 или КТ940А.


Кро­ме того, добавим источник тока в эмит­терные цепи — так и работа­ет луч­ше, и нас­тра­ивать гораз­до удоб­нее. А сверх того на вход пос­тавим исто­ковые пов­торите­ли, что­бы не шун­тировать ЦАП. В пер­вом вари­анте схе­мы их не было, одна­ко ока­залось, что уси­литель замет­но шун­тировал ЦАП и силь­но про­сажи­вал нап­ряжение, потому пов­торите­ли приш­лось добавить.


Схе­ма виде­оуси­лите­ля

Дан­ный уси­литель обес­печива­ет полосу око­ло 1,5 МГц при раз­махе сиг­нала на выходе каж­дого пле­ча 75 В и уси­лении око­ло 15. При этом замена тран­зисто­ров на MJE13005 дает при­мер­но такой же резуль­тат, и улуч­шить его малыми уси­лиями уже не получит­ся. Нас­трой­ка уси­лите­ля сво­дит­ся к подс­трой­ке источни­ков тока резис­торами RV2 и RV5: нуж­но добить­ся на кол­лекто­рах тран­зисто­ров Q2, Q5, Q7, Q10 нап­ряжения чуть выше полови­ны питания (око­ло 120 В), а так­же к под­бору кон­денса­торов час­тотной кор­рекции С3, С6, С9, С12.


Сто­ит заметить, что раз мы собира­ем не осциллог­раф, а монитор, то добивать­ся ров­ной АЧХ уси­лите­ля — не опти­маль­ное решение. Поэто­му под­бор кон­денса­торов удоб­но вес­ти, смот­ря на качес­тво изоб­ражения, добива­ясь минималь­ных арте­фак­тов. Методи­ка под­бора кон­денса­торов доволь­но прос­тая — начав с заведо­мо мень­шей емкости, нап­ример 1 нФ, необ­ходимо пос­ледова­тель­но уве­личи­вать емкость в два раза, наб­людая изме­нения изоб­ражения. Ког­да емкость ока­жет­ся чрез­мерной, начинай ее умень­шать на полови­ну пре­дыду­щего шага, таким обра­зом шагов за пять мож­но подоб­рать нуж­ное зна­чение. Обра­ти вни­мание, что эмит­терные резис­торы в каналах X и Y раз­личны и кон­денса­торы кор­рекции, соот­ветс­твен­но, тоже. Токи тран­зисто­ров так­же мож­но нас­тра­ивать, ори­енти­руясь на изоб­ражение.


Конс­трук­ция получи­лась дос­таточ­но слож­ной (12 тран­зисто­ров), а еще она замет­но гре­ется, поэто­му нужен хороший ради­атор. Мой, конеч­но, дико избы­точен, но он мне попал­ся под руку и под­ходил по раз­мерам. Резис­торы в кол­лектор­ной цепи так­же силь­но гре­ются, поэто­му надо взять пятиват­тные (не про­волоч­ные!). Хорошо, уси­литель есть, теперь нужен источник сиг­нала.


Внеш­ний вид виде­оуси­лиите­ля 

ЦАП


C точ­ки зре­ния соот­ношения цена/быс­тро­дей­ствие луч­шее решение — R-2R ЦАП. Пер­воначаль­но я пла­ниро­вал исполь­зовать Blue Pill как источник сиг­нала, и в этом слу­чае мож­но задей­ство­вать целый порт сра­зу на 2 ЦАПа (каналы X и Y). Одна­ко, ори­енти­руясь на дан­ный про­ект, я решил при­менить сдви­говые регис­тры 74HC59. В пла­не быс­тро­дей­ствия мы ничего не теря­ем, так как GPIO в stm32f103 работа­ют с час­тотой око­ло 2 МГц, и то при пря­мой записи в регис­тры, через обер­тки получа­ется нес­коль­ко мед­леннее. А вот шина SPI недур­но работа­ет на час­тоте 32 МГц, и ито­ге для двух 8-бит­ных каналов получа­ем 2 мегасем­пла в секун­ду, при этом ЦАП мож­но исполь­зовать незави­симо с дру­гими источни­ками сиг­нала. А кро­ме того, ЦАП на 74HC595 выда­ет сиг­нал до 5 В, что, учи­тывая низ­кую чувс­тви­тель­ность труб­ки, нам толь­ко на руку.


Схе­ма ЦАПа

Сна­чала, конеч­но, схем­ка была поп­роще, в ней при­сутс­тво­вали толь­ко сдви­говые регис­тры. Мик­рокон­трол­лер писал в SPI два бай­та, а потом дер­гал нож­ку RCLK, и все было хорошо, все работа­ло. Потом мне захоте­лось вымодить мас­сивы поболь­ше, которые не помеща­лись в память кон­трол­лера, и тут было два вари­анта: при­ладить к кон­трол­леру флеш­ку, или под­клю­чить к ком­пу через USB/SPI. Я выб­рал вто­рой вари­ант, а в качес­тве USB/SPI исполь­зовал FT232H.


Это самый быс­трый USB/SPI из мне извес­тных, а кро­ме того, его мож­но при­обрести в виде готово­го модуля за тер­пимые день­ги (ну, некото­рое вре­мя назад так и было). Одна­ко у FT232H есть та же проб­лема, что и у кон­трол­лера SPI: порт работа­ет быс­тро, а GPIO мед­ленно, при­чем гораз­до мед­леннее, чем в кон­трол­лере, поэто­му дер­гать нож­ку регис­тра на каж­дые два бай­та неразум­но. Приш­лось малой кровью допилить недо-SPI 74HC595 до «поч­ти SPI». Идея дос­таточ­но прос­та: надо счи­тать так­товые импуль­сы и каж­дый 16-й дер­гать RCLK. Для это­го соб­ран делитель на 16 на четырех D-триг­герах. А что­бы знать, отку­да счи­тать импуль­сы, по сиг­налу CS про­исхо­дит уста­нов­ка триг­геров, что сра­баты­вает как син­хро­низа­ция.


Ко­неч­но, делитель про­ще было соб­рать на 74HC4040, но это как‑нибудь в дру­гой раз. Так или ина­че, мы получи­ли ЦАП, спо­соб­ный выдавать до 2 мегасем­плов в секун­ду, при­чем его ско­ростью мож­но управлять, меняя ско­рость шины SPI. О резис­торах мож­но ска­зать, что исполь­зовать резис­торы одно­го номина­ла удоб­но: получа­ешь пра­виль­ное соот­ношение соп­ротив­лений 1/2. В прин­ципе, мож­но сэконо­мить и исполь­зовать резис­торы 5К1 и 10К. Нем­ного пос­тра­дает линей­ность, что на глаз поч­ти незамет­но, впро­чем, эко­номия копе­ечная и того не сто­ит.


Внеш­ний вид соб­ранно­го DAC 

Bluepill и фигуры Лиссажу


Ана­лого­вая часть соб­рана, и ЦАП у нас есть. Вре­мя про­верить, как оно работа­ет. Самый прос­той тес­товый сиг­нал для соз­дания изоб­ражения — это два синуса с раз­ными час­тотами или фазами. Про­ще все­го такой сиг­нал взять с ГСС и подать на вхо­ды виде­оуси­лите­ля, одна­ко если ГСС под рукой нет, то сиг­нал мож­но сге­нери­ровать в мик­рокон­трол­лере бук­валь­но нес­коль­кими десят­ками строк.


Ге­нери­ровать синус в мик­рокон­трол­лере мож­но тре­мя спо­соба­ми. Во‑пер­вых, исполь­зуя биб­лиоте­ку math.h и фун­кцию sin(), одна­ко это далеко не луч­ший вари­ант по быс­тро­дей­ствию и рас­ходова­нию ресур­сов. Работа с пла­вающей точ­кой — это не то, для чего пред­назна­чены мик­рокон­трол­леры, впро­чем, дан­ный метод работа­ет. Дру­гой дос­таточ­но инте­рес­ный вари­ант генера­ции синуса — на осно­ве раз­нос­тных схем — упо­мина­ется здесь. Урав­нения там дос­таточ­но прос­тые, и с пер­вого взгля­да даже не ска­жешь, что на выходе получа­ется синус.


-= X*R
+= V

Здесь R — это кон­стан­та. На осоз­нание вывода этих фор­мул меня не хва­тило, впро­чем, даже в момент окон­чания уни­вера гра­ница моих матема­тичес­ких спо­соб­ностей лежала где‑то в рай­оне дивер­генции гра­диен­та, а с тех пор ста­ло толь­ко хуже. Но при реали­зации в целочис­ленной матема­тике оно работа­ет, и работа­ет неп­лохо. Уж точ­но нам­ного быс­трее, чем биб­лиотеч­ный синус.


Тре­тий же метод генера­ции синуса — таб­личный, и вот он мне боль­ше все­го пон­равил­ся, осо­бен­но проз­рачностью уста­нов­ки фаз и час­тот. Кро­ме того, он демонс­три­ровал наиболь­шее быс­тро­дей­ствие. Суть метода: берем таб­лицу с заранее рас­счи­тан­ными зна­чени­ями синуса и прос­то выводим записан­ные в ней дан­ные через рав­ные про­межут­ки вре­мени с задан­ным шагом. Меняя шаг, мы меня­ем час­тоту, а меняя стар­товую точ­ку, меня­ем фазу. То, что надо!


...
uint8_t msin[256]={
 127, 130, 133, 136, 139, 142, 145, 148, 151, 154, 157, 160, 163, 166,
 169, 172, 175, 178, 181, 184, 186, 189, 192, 194, 197, 200, 202, 205,
 207, 209, 212, 214, 216, 218, 221, 223, 225, 227, 229, 230, 232, 234,
 235, 237, 239, 240, 241, 243, 244, 245, 246, 247, 248, 249, 250, 250,
 251, 252, 252, 253, 253, 253, 253, 253, 254, 253, 253, 253, 253, 253,
 252, 252, 251, 250, 250, 249, 248, 247, 246, 245, 244, 243, 241, 240,
 239, 237, 235, 234, 232, 230, 229, 227, 225, 223, 221, 218, 216, 214,
 212, 209, 207, 205, 202, 200, 197, 194, 192, 189, 186, 184, 181, 178,
 175, 172, 169, 166, 163, 160, 157, 154, 151, 148, 145, 142, 139, 136,
 133, 130, 127, 123, 120, 117, 114, 111, 108, 105, 102, 99, 96, 93, 90,
 87, 84, 81, 78, 75, 72, 69, 67, 64, 61, 59, 56, 53, 51, 48, 46, 44,
 41, 39, 37, 35, 32, 30, 28, 26, 24, 23, 21, 19, 18, 16, 14, 13, 12,
 10, 9, 8, 7, 6, 5, 4, 3, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 1, 1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 16, 18, 19, 21,
 23, 24, 26, 28, 30, 32, 35, 37, 39, 41, 44, 46, 48, 51, 53, 56, 59,
 61, 64, 67, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99, 102, 105,
 108, 111, 114, 117, 120, 123};
static void spi1_init(void){
 // Включаем порт и интерфейс
 rcc_periph_clock_enable(RCC_SPI1);
 rcc_periph_clock_enable(RCC_GPIOA);
 /Configure GPIOs:
SCK=PA5
MOSI=PA7
*/
 gpio_set_mode(GPIOA, GPIO_MODE_OUTPUT_50_MHZ,
GPIO_CNF_OUTPUT_ALTFN_PUSHPULL, GPIO5|GPIO7);

 spi_reset(SPI1);
 spi_init_master(SPI1, SPI_CR1_BAUDRATE_FPCLK_DIV_2,
SPI_CR1_CPOL_CLK_TO_0_WHEN_IDLE,
SPI_CR1_CPHA_CLK_TRANSITION_1,
SPI_CR1_DFF_8BIT, SPI_CR1_LSBFIRST);
 //spi_set_full_duplex_mode(SPI1);
 spi_enable_software_slave_management(SPI1);
 spi_set_nss_high(SPI1);
 spi_enable(SPI1);
 }

void gpio_init(){
 rcc_periph_clock_enable(RCC_GPIOB);
 gpio_set_mode(GPIOB, GPIO_MODE_OUTPUT_50_MHZ,
GPIO_CNF_OUTPUT_PUSHPULL, GPIO6|GPIO12);
 /*
GPIO4 ST_CP
GPIO12 LED
*/
 gpio_set(GPIOB,GPIO12);
 gpio_clear(GPIOB,GPIO6);
 }

void send_xy(uint8_t x, uint8_t y){
 spi_xfer(SPI1,x);
 spi_xfer(SPI1,y);
 // Дергаем RCLK для записи в регистр
 gpio_set(GPIOB,GPIO6);
 gpio_clear(GPIOB,GPIO6);
 }
void main(void){
 rcc_clock_setup_in_hse_8mhz_out_72mhz();
 spi1_init();
 gpio_init();
 uint32_t n=1;
 uint8_t a=128, b=128;
 while(1){
 n++;
 if(!(n%2))b++;
 for(uint16_t i=0;i<256;i++){
send_xy(msin[a],msin[b]);
a+=1;
b+=3;
}
 }
 }
...

Вот такой нес­ложный код генери­рует дос­таточ­но инте­рес­ную кар­тинку, которая еще и дви­гать­ся будет.


Фи­гура Лис­сажу

На этом мы, пожалуй, оста­вим Bluepill и перей­дем к x86_64.


Теги: CSS

Просмотров: 122
Комментариев: 0:   21-05-2022, 00:02
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

 
Еще новости по теме:



Другие новости по теме:
Комментарии для сайта Cackle