Сообщество - IT-юмор
Добавить пост

IT-юмор

4 296 постов 49 338 подписчиков

Популярные теги в сообществе:

408

Пишем программу для утюга на ассемблере

Пост носит сугубо техническо-юмористический характер, прошу всерьёз не воспринимать, а то были прецеденты


Всем привет! По причине того, что я имею официальный диагноз "Оператор ЭВМ", многие знакомые или родственники часто обращаются ко мне с просьбой что-нибудь починить. Ну, например, отвлечься от сортировки трёхмерных массивов, и сделать наконец-таки что-нибудь полезное для родины. Например, мультиварку или утюг. Но, чтобы это не было скучно, давайте попробуем написать исходный код для обыкновенного утюга. Для эстетичности и ради культурной ценности писать мы его будем на ассемблере.

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

Далее следует техническое описание, кому оно не интересно, а хочется сразу посмотреть результат, можете промотать до фотки с утюгом.

Ассемблер для AVR основан на RISC-архитектуре, что значительно позволяет упростить программу. Выберем микроконтроллер Attiny13, и напишем под него самую примитивную программу из возможных:

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

Чтобы не быть голословным, данная программа не задействует ОЗУ, а лишь устанавливает контроллер в конкретный режим работы. Далее я объясню, почему так.

Режим работы и данная программа весьма проста. Её можно выразить одним условием:
ТЕМП < K ? А : Б

Где темп - температура с датчика (напряжение на входе АЦП), к - требуемая константа температуры, а - состояние нагрева утюга, б - состояние охлаждения утюга

Аналогичная конструкция применяется в различных бойлерах, мультиварках, плойках и прочих устройствах, имеющих тысячи разновидностей. В таком виде я её впервые увидел в фирменном бойлере фирмы ARISTON.

У людей, более-менее знакомых с темой сразу же возникнет два вопроса:

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

По сути дела, данные устройства при использовании в этой задаче эквивалентны. Но имеется ряд отличий:

- Считается, что полупроводниковая схема надежнее, так как не имеет металлических частей, накапливающих усталостные напряжения. Поэтому такие устройства прослужат дольше. На практике случаи потери прошивки или пробоя по питанию столь же часты, сколь и выход из строя механического терморегулятора

- В данном включении наша ATTINY13 действительно ничем не будет отличаться от обычного компаратора LM339. Отличия проявляются лишь в возможности изменения константы K (вот эта строчка):

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

LM339 тоже поддерживает аппаратное изменение, для этого устанавливается обычный потенциометр на второй вход сравнения компаратора. Однако, например, в случае необходимости применения термопрофиля в качестве альтернативы МК практически отсутствуют варианты. Т.е. тут мы можем численно задать эту константу, и менять её при помощи внешних средств. Чтобы сделать подобное без микроконтроллера, платы будут очень громоздкими.

Немного отвлечёмся от темы:
В бойлере Gorenje эту константу можно дополнительно изменять при помощи двух кнопок, навешанных на свободные ножки контроллера. Для этого делаются соответствующие подпрограммы. Таким образом выставляется температура нагрева бойлера:

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

Правда, здесь используется контроллер с большим количеством ножек, для того, чтобы ещё и вывести динамическую индикацию этой константы:

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

Вернёмся к утюгу. Наша программа имеет 5 "субрутин", не записывает и не читает ничего из ОЗУ, даже не инициализируется стек. По причине того, что она весьма линейна.

preset - установка режима работы контроллеров. Записываем параметры в регистры управления.
adc_start - начало преобразования АЦП (напряжение в значение регистра)
wait - ожидание снятия флага преобразования. Флаг снимается, когда преобразование завершено.
compare - сравнение констант. Данные с АЦП пишутся в регистр, константа также пишется в регистр и происходит их сравнение (в данном случае - ветвление) brsh - branch if same or higher, то есть переход, если в АЛУ установлен флаг C
enable - ветка, в которую мы попадаем, либо не попадаем. Включает ТЭН.

Саму методику преобразования я уже описывал в предыдущих постах, когда работал с посудомойкой, а именно, здесь
Реле возьмём из проекта с пылесосом на линуксе.

Также нам понадобится, собственно, утюг. Возьмём типичный советский утюг, так как на опыты его уже не жалко:

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

Программа готова, прошьём контроллер:

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

Далее испытаем работоспособность схемы на макете. Вместо терморезистора (его видно в пакетике) для испытаний стоит крутилка из предыдущих проектов:

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

Всё успешно работает, поэтому можно попробовать подсоединить схему к утюгу. Пока что на соплях, для проверки того, что всё идёт по плану:

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

Далее установим терморезистор в область ТЭНа:

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

Ещё одним недостатком схем на микроконтроллерах и микросхемах, в отличие от механики, является необходимость в источнике питания. Это может быть трансформатор силовой, импульсный или же конденсаторный блок питания. В нашем случае лень было заморачиваться с этим, так что пока наш утюг получил USB-интерфейс, и питается от него:

Пишем программу для утюга на ассемблере Электроника, IT юмор, Тыжпрограммист, Assembler, Юмор, Длиннопост

Ну вот, собственно говоря, и всё. Пост писал Kekovsky для pikabu.ru

Показать полностью 12
1375

Новый способ борьбы с синдромом самозванца в IT

Новый способ борьбы с синдромом самозванца в IT Мобилизация, IT, Картинка с текстом, Синдром самозванца
Показать полностью 1
3189

К презентации GeForce RTX 40 готовы

К презентации GeForce RTX 40 готовы IT юмор, Nvidia, Видеокарта, Презентация, Огнетушитель

localhost

201

Семейный бизнес...

- Один мой друг выучил COBOL и ему вручили кодовую базу в которой последнее изменение было сделано в 90х годах ... его... мамой


- Наследование в программировании не так должно работать...

Семейный бизнес... Программирование, Юмор, IT юмор, Программист, Наследование, 9GAG, Повтор
149

Когда ты богат

Когда ты богат
42

Что он делает?

Что он делает? Реклама, Идиотизм, IT, IT юмор, Скриншот
Показать полностью 1
421

Проф. деформация во всей красе

Проф. деформация во всей красе Юмор, Картинка с текстом, Повтор

Позаимствовал отсюда

1034

Жалко пацана

Наткнулся сегодня на объявление на одной из площадок.

Жалко пацана IT юмор, Программирование, Assembler, Скриншот, Урок
Отличная работа, все прочитано!