Учимся писать прошивки.

Расшифровка видео
0:00
[музыка] всем привет любители электронной причуды
0:07
с вами юрий us и сегодня как я и обещал у нас небольшой видеоурок по
0:13
микроконтроллерам я сперва хотел просто показать как писать простейшую прошивку на
0:19
контроллере attiny13 но все-таки мы затронем немножечко общую тему вообще что такое микроконтроллер и
0:26
с чем их едят я не буду рассказывать профессиональным языком научным я расскажу так чтобы
0:34
большинство людей стало более менее понятно вообще что это за зверь такой
0:40
для того чтобы понять давайте откроем картинку которую я скачал в интернете на
0:48
ней видна структура ну любого а vr контроллером как вы видите что это не
0:56
просто какая то микросхема логическая или транзистор посмотрите это целый компьютер у него
1:03
есть процессор у него есть память у него есть энергонезависимая память у него
1:08
куча портов воды выводы аналого-цифровые преобразователи и поддержка большого
1:16
количества протоколов по этому контроллеру следует относиться как к
1:23
настоящему компьютеру который может выполнять простые и сложные логические операции
1:31
я не буду сейчас говорить про все контроллеры потому что их есть великое множество это контроллер и пик семейства
1:40
это stm контроллеры на сегодняшний день я поведую про а в.р.
1:47
контроллер может выполнять последовательно операции то есть у него
1:52
идет действие от начала к концу алгоритма и это это происходит на очень
1:58
большой частоте то есть вот представьте что допустим на работа контроллера
2:03
это течение воды в реке с огромной скоростью и вода несет в себе энергию дак вот нам
2:12
чтобы использовать это движение воды нужно в правильных местах поставить
2:18
control бы перегородки плотины турбины для того чтобы допустимым получать
2:24
какую-то механическую или электрическую энергию также в работе с контроллером представьте что выполнение алгоритм это
2:31
вот действительно как будто течет вода и нам нужно правильно расставить в этом
2:36
коде алгоритма все условия вычисления так чтобы собственно говоря
2:43
контроллер эти вычисления производил контроллер умеет производить
2:48
математические операции складывать и вычитать и умножать делить все это вид делать умеет общаться по
2:57
разным протоколом с какими-то датчиками внешними устройствами для этого просто
3:04
нужно знать регистры каких-либо устройств и исходя из этих регистров
3:10
писать правильные прошивки чтобы контроллер умел общаться с внешними
3:15
этими устройствами сегодня мы не будем так глубоко копать
3:22
сегодня мы напишем простейшую прошивку чтобы ничего лишнего не выдумывать
3:29
возьмем наш любимый контроллер attiny13 он самый простой какой только есть у
3:36
него конечно мало памяти и ну рациональный всегда писать какие-то
3:41
прошивки и вообще делать проекты на более таких продвинутых контроллерах хотя бы atmega8 и atmega16 в них и
3:48
памяти многое портов куча можно много чего повесить значит берем
3:54
контроллер attiny13 как вы видите он может быть в разных корпусах мужик dip корпусе может
4:01
быть снг корпус но суть одна и та же у него восемь ножек две из них питания а
4:06
все остальные это как раз таки наши порты ватине это вообще один порт который
4:13
состоит из отдельных ножек так сказать отдельных каналов мы их и
4:19
будем сегодня использовать а чтобы не выдумывать алгоритм давайте
4:24
просто я расскажу вам как я писал прошивку в своем прошлом ролике поехали
4:32
описать мы будем прошивочку как раз для устройства из прошлого видеоролика
4:38
вот оно это устройство это я напомню переключатель каналов то есть одной
4:45
кнопкой мы переключаем разные нагрузки давайте я покажу все таки как писать
4:51
прошивку здесь у нас задействован attiny13 про который я говорил и так как многие уже успели
5:01
заметить все пусть они уберут как многие уже
5:09
успели заметить пишу я прошивки среде flowcode 5 вот а
5:18
нам тела в ней много плюсов и много минусов ну об этом чуть-чуть попозже мне удобно
5:26
очень в этой программе работать и вам как начинающим программистам я тоже
5:33
очень сильные рекомендуем итак что мы имеем опять же будем подглядывать везде вот
5:39
наша принципе алко вот наша печатная плата помним да мы ее рисовали прошлый раз
5:46
итак что нам нужно как мы помним кнопка у нас заведено
5:52
но ногу pb 4 то есть то порт b канал 4 запомнили пд-4 эта кнопка а все
6:01
остальные выходы это у нас b b 0 pb1 p2
6:06
и p3 то есть четыре первых ноги порта b итак что нам нужно сделать по сути нам
6:15
нужно чтобы контроллер опрашивал состоянии парта pb 4 по умолчанию когда
6:22
кнопка не нажата резистор 2 и 2 килоома подтягивает эту ногу к земле вот здесь
6:29
следовательно пока кнопка не нажата на ноге всегда будет логический ноль и
6:35
контроллер это видит и пока на ноге логический ноль ничего не будет
6:41
происходить так вот нам нужно заставить контроллер работать так что когда на
6:47
ноге pb 4 сменится логический уровень с нуля на единицу контроллер должен значит
6:55
по очереди при каждом получается нажатии на кнопку и при каждой смене логического
7:01
уровня по очереди на каждый и вот эти вот 4 ноги
7:06
переключайте единицу то есть один раз нажали на этой ноги единица на всех остальных 0 еще раз
7:13
нажимаем кнопку на вот то это и ноги единицы на всех остальных 0 еще раз нажали вот здесь единица и еще раз
7:21
нажали вот здесь единица то есть получается эта кнопка должна заставлять контроллер переключать по очереди
7:27
логические уровни с нуля на единицу кто понимает о чем я говорю то есть 0 это 0
7:35
вольт а единица это 5 вольт то есть когда на каком-то порту будет единица то
7:42
значит контроллер выдает на этот на эту ногу 5 вольт разумеется как вы уже
7:50
поняли что эту ногу контроллера мы будем использовать как вход потому что мы
7:55
будем подавать на эту ногу или не подавать напряжение а все остальные ноги
8:01
мы будем использовать как вы ходы-выходы на транзисторы а потом уже на реле и так получив все
8:10
эти знания и набросав в голове план работы возвращаемся в среду разработки кто хоть
8:19
как-то мало мальски учился в школе знают что даже вспомните паскаль или delphi
8:26
любая программа начинается с беги на это начало и заканчивается эндом это конец
8:32
это ну так это заведено нам нужно чтобы
8:38
программа выполнилась не один раз а повторялось постоянно поэтому нельзя программу
8:46
просто написать между бигином и эндом потому что цикл выполнена движение
8:52
программа выполнится один раз и программа завершается это не наш случай кто немножечко помнит есть такое понятие
8:58
в программировании как цикл вот здесь есть такой значок называется цикл хватаем его тащим и
9:06
бросаем все этот цикл если сейчас ничего здесь не изменять не вносить не какие
9:13
условия то по умолчанию этот цикл и бесконечен то есть если ход программы попадает
9:19
внутрь этого цикла она будет здесь мотаться бесконечно ну представьте что льется вода в эту воду постоянно
9:26
набираете и относите обратно в начало реки и так бесконечно или грубо говоря
9:32
река течет по кругу вот я думаю просто понять все цикл мы добавили так первый
9:37
шаг дальше нам нужно чтобы контроллер опрашивал как вы помните ногу pb 4 вот
9:45
она пд-4 а нам как я уже говорил для этого нужно ногу использовать как вход вот смотрим
9:53
вход берем его и кидаем вот сюда вход то
10:00
есть мы поставили вход пока никуда не поставили просто поставили кликаем два раза появляется такое окошко
10:08
в котором нам нужно задавать условия на самом деле все просто тут только порт b
10:15
потому что в kinky niky больше портов не только порт b если мы ничего не поменяем то контроллер
10:23
будет весь спорт опрашивать то есть все ноги порта от 0 до 6 нам нужно опросить
10:29
только одну значит мы указываем здесь не весь порт а один бит нажали и здесь выбираем какую
10:38
ногу будем опрашивать pb 4 помните да все и теперь на мне
10:45
просто нужно ее опрашивать а чтобы значение которое контроллер опросил за носилась в значении какой-то переменной
10:52
поэтому мы нажимаем на вот эту стрелочку здесь у нас появляется такое окошечко есть переменная сейчас эти переменные
11:00
долю чтобы все помола и сделать переменные нажимаем два раза здесь он у
11:07
нас просит введите имя новой переменной пишем батон кнопка оставляем битого и
11:16
значение но нам подходит идеально у нас всего лишь будет тут либо но либо единица
11:22
можно булин конечно использовать ну я по умолчанию использую
11:29
битого ok все теперь нам нужно вот этот bottom подставить вот сюда в значении
11:37
переменной два раза кликаем и стираем 0 потому что надо было сразу стереть все
11:43
что мы сделали мы опросили ногу pb 4 и значение этой ноги заносим в переменную
11:50
bottom если у нас кнопка не будет нажата то значение переменной bottom будет равно
11:57
нулю если ну кнопку нажмем то значению переменной батон присвоится значение единица поняли поняли окей все мы
12:05
научились опрашивать ногу теперь надо теперь что-то делать с этим значением как-то обработать
12:12
еще раз возвращаемся в эту программу нам нужно сделать так чтобы при нажатии
12:17
кнопки единица перещелкиваю то есть по очереди с этой то есть ни одно и то же
12:24
действие кнопка выполняла а получается прибавляла как бы каждому номеру порта
12:32
по единице это очень просто сделать как только
12:38
у нас здесь появилась единица в переменной батон нам нужно создать
12:43
условия этот значок называется условия
12:49
хватаем ставим теперь в этом условии нам
12:54
нужно прописать если значение батон берем его опять же
13:00
отсюда если значение батон стало вдруг равно единице как то есть мы нажали кнопочку
13:09
видите два плеча кто помнит блок-схемы это все знакомо должно быть вот если да
13:16
то есть если бат мы равно единице что мы должны делать мы должны выполнить некую математическую калькуляцию то есть
13:23
сейчас я быстро сильно сделал есть такая штучка здесь называется вычисления вот
13:28
она берем ее хватаем и тащим сюда то есть если нас значение единица на парту
13:34
в 4 мы должны создать еще какую-то переменную ну пускай будет
13:39
output создали тоже битого и значение
13:47
как я уже говорил нам нужно чтобы контроллер прибавлял единицу при каждом нажатии
13:53
чтобы он мог по очереди включать как бы ноги контроллера так вот мы получается
14:00
out put равно опять output + 1 то есть при
14:07
каждом нажатии кнопки к перемены output будет прибавляться единица
14:12
ok есть такое дело все получается при
14:18
каждом нажатии у нас будет output по умолчанию 0 потом один потом два потом 3
14:24
и 4 вот есть такое дело у нас уже получается
14:29
кнопка будет выполнять ни одно и то же действие а разные действия то есть значение перемены out put постоянно
14:36
будут прибавляться теперь как нам обработать перемену output очень легко
14:42
есть такой значок называется switch то есть переключатель хватай мам тащим дальше ставим и заходим его
14:52
условиям что нам нужно сделать нам нужно чтобы при нуле не выполнялось ничего при
15:01
единицы нога номер ноль зажигалась при три двойки
15:08
нога номер 1 и так далее получается мы значение перемены output
15:15
вносим в значении переключателя в условия переключателя
15:21
вот и забывайте что вот вот эта переменная вот эта кнопочка аут все мы
15:27
прописали и нам нужно что значит 0
15:41
12 3 и 4 вот так вот запоминайте как я
15:50
сделал я в переключатель добавил возможные значения перемены output у нас
15:57
ведь ноги всего 4 вот мы добавляем 4 значения вот они а 0
16:02
это у нас будет выключение всех ног часы объясню это сделать все нажимаем ok все у нас прописалась 5 возможных
16:10
вариантов видите да замечательно что нам
16:17
нужно теперь сделать нам нужно при этих значениях что-то делать с портами
16:26
именно спортом на ноге 0 1 2 и 3 значит
16:32
когда мы нажали кнопку один раз у нас значению out put присвоила значение 1 то
16:39
есть алгоритм пойдет вот в это плечо суда значит вот в эту вот область нам нужно
16:45
поставить уже действия то сделать какой-то выход есть такая штучка мы
16:52
ставили когда кнопку опрашивали вход теперь берем выход берем его и ставим
16:57
сюда еще раз сюда сюда
17:04
и суда есть такое дело и так
17:16
сюда тоже надо поставить атлас выключающий будет час настаёт самое
17:22
интересное вот эта среда разработки удобно чем что можно управлять портом
17:30
одним числом итак поехали попали мы вот
17:37
в этом место в единицу до попадаем вот сюда здесь нам нужно на покажу сейчас
17:47
вот видите на ppp0 послать единицу а на
17:55
всех остальных чтобы оставалось оставался 0 это на п1 п2
18:01
и pb 3 как это сделать хитрым способом кто помнит когда-то давно я писал такую
18:08
программку назывался binary калькулятор вот представьте что вот это у нас как
18:16
раз таки наш порт что нам нужно сделать смотреть нужно справа налево все не как
18:24
у людей нам нужно на первую ногу порта
18:30
подать единицу она все остальные 0 и ставим сюда единицу нажимаем подсчет все значит нам
18:38
нужно единичку подставить весь спорт возвращаемся в среду разработки
18:50
заходим вот сюда теперь нам нужно
18:56
получается в весь порт как раз таки отправить эту единицу то есть не вадим
19:02
бит весь спорт но но что нужно сделать
19:08
чтобы у нас нога номер четыре не перестала работать как вход мы ставим
19:15
галочку выход весь порт но по маске то
19:20
есть п п 0 п p1 и p2 и p3 остальные мы не трогаем потому что 4 нам
19:28
нужно для опроса кнопки все окей теперь у нас при переключении в эту ветку
19:36
загорится на гapи b0 дальше нажали кнопку еще раз вот эту батон креплю
19:45
совалась единица поехали суда двоечка получилось что нам нужно сделать нам
19:54
нужно чтобы вот на ноге pb 0 до 0 на единицы единица здесь 00
20:02
маска здесь выбираем опять наши четыре
20:09
ноги заходим в логический калькулятор и переставляем птичку вот сюда ну вы
20:14
понимаете это ясно и понятно что вот я единицу переставляю подсчет двойка все
20:20
нам нужно теперь сюда прописать двойку ok есть такое дело теперь опять все
20:29
повторяется по новой прибавилось единица значения приняла знаете ну приняла
20:34
четверку теперь что тогда произойдёт
20:41
тогда мы здесь а должны опять все то же самое сделать
20:48
но опять передвинуть галочку суда
20:53
подсчитать и теперь нужно четверку подставить вот сюда и последняя нога у нас это у нас
21:06
получается на последней на последней
21:13
ногу part on нужно передвинуть восьмерка ставим сюда восьмерку все
21:23
казалось бы ну наступает момент когда после цифры номер четыре
21:30
он ты еще раз при плюсует понимаете и у
21:35
нас будет пятерка на пятерке нигде нет а потом шестеркой шестерки нет что тогда
21:40
получается программа становится бесконечные пока число output не дойдет до 200 55 и тогда все как бы
21:50
переключиться на 0 но это же не выход нам нужно чтобы после четверки значение
21:57
out put становилась значением 0 для этого мы вот что сделаем но в
22:03
переключатель добавим еще одно значение цифру 5 и в этом случае мы добавляем
22:13
математическую калькуляцию
22:20
в которой значению output присваиваем значение 0 все
22:27
когда у нас перещёлкнет больше чем нужно обнулится вернется сюда вернется в
22:35
начало цикла и теперь самое интересное попадет вот в этот ноль а здесь мы
22:42
просто прописываем 0 как и есть все
22:49
легко и просто мы опросили кнопку получили значение out put вернулись в
22:57
переключатель согласно значению а утку попали сперва в это потом в это потом бы
23:04
это потом в это при каждом нажатии кнопки получается и как только у нас значение кнопки превышает количество
23:09
наших ног на порту там и out put обновляем возвращаемся обратно и вот
23:17
этим значениям switch гасим порт b вот
23:25
такая вот простая вещь можно было конечно по-другому сделать ну так тоже
23:33
будет работать все бы ничего есть одна
23:39
проблема дело в том что если оставить программу как есть то пока мы будем
23:45
нажимать кнопку вот этот цикл может пронестись несколько тысяч раз и просто
23:52
ну получится что попало вы не сможете выбирать то есть цикл это
23:57
бесконечный и все операции производятся но в моем случае на чистоте 600 килогерц
24:05
то есть вот представьте за секунду контроллер делает 600 тысяч операций и вот пока вы там
24:12
кнопочку будете нажимать он сколько-то тысяч раз все это прояснит есть два варианта либо для кнопки делают
24:21
анти дребезг что такое анти дребезг ну просто добавляют вот есть такая штучка
24:27
делай то есть это задержка после кнопки добавляют какую-то сзади ну скажем там 100 миллисекунд ну и вроде
24:34
бы все она будет тогда работать как надо то есть нажал кратковременное она будет
24:39
перещёлкивается но опять мне так вот честно никогда не нравится делать я как делаю я удаляю эту
24:47
задержку я хочу сделать так что я нажал кнопку выполнилась действие и пока я
24:54
кнопку не отпущу алгоритм программы не возвращался
25:00
обратно в начало как это сделать просто берем еще один цикл хватаем и кидаем его после свеча кинули
25:09
в этом получается цикле мы опять
25:15
опрашиваем ногу b4 то есть кнопку я ее просто скопирую можно копировать и
25:23
вставлять вот переставлю вот мы и здесь снова
25:29
опрашиваем и теперь мы в цикле можем задать условия то есть то есть когда
25:35
кнопка нажата у нас всегда будет единица но мы можем
25:40
сделать так что из этого цикла программа не сможет выйти пока значение b 4 не
25:46
примет значение 0 как это сделать легко и просто два раза кликаем по циклу и здесь ставим галочку суда ангел то есть
25:55
этот до тех пор вау это пока а ангел до тех пор и здесь прописываем пока наш бат он не станет
26:02
равен нулю все теперь программа будет возвратиться в этом под цикле пока мы не отпустим
26:10
кнопку и тут ещё одну я всегда все таки добавляю
26:15
некоторую задержечку 100 миллисекунд и все что получается нажимаем кнопку
26:24
прибавляется и день это переходит получается в какой-то из
26:30
плеч и попадает вот в этот цикл и ждет пока мы отпустим кнопку отпустили кнопку
26:36
habana перри щёлкну нас опять наверх и начинают получается мотаться в этом цикле
26:43
бесконечно пока мы не нажмем кнопку почему она будет бесконечно мотаться потому что говоришь пока кнопка не
26:49
нажата ее значение 0 и она без проблем идёт сюда сюда сюда сюда и сразу же выходит
26:57
из этого цикла потому что мы кнопку даже и не нажимали поэтому условия цикла сразу соблюдается
27:03
и алгоритм отсюда выходит и пока мы кнопку не нажали программа мотается получается внутри вот этого основного
27:10
цикла они под цикла как только нажали кнопку сюда куда-то сюда сюда мотается мотается
27:17
кнопку отпустили вывалилась и обратном начала вот и все ребята еще хотел
27:24
немаловажную нюансе ну подсказать заходим вот сюда чип настройки проекта
27:32
вот здесь важно указать частоту я всегда ставлю 600000 чуть по позже объясню
27:40
почему 600000 ставим ok все мы можем даже проверить это все без
27:49
протеуса в самой среди разработки вот тут есть такая панель что мы делаем мы
27:56
просто берем и вешаем на эту панель тут просто есть ну такие как бы графические
28:02
элементы для проверки сейчас покажу нажимаем входы можно выбрать вот switch
28:09
нам нужен switch то есть кнопка добавили кнопку и нам нужно 4 светодиода
28:15
выходы берем лет и рэй то есть полоска светодиодов есть сперва заходим
28:23
выключатель расширенные свойства здесь выбираем не тумблер а кнопка делаем ее
28:29
по-больше все больше нас здесь ничего подождите моментальный да нам не 100
28:36
парящий нужен а моментально то есть кнопка нажата пока мы ее держим применить окей всё кнопочку мы сделали
28:43
теперь ее нужно подключить куда надо заходим соединение здесь вот выключатель
28:48
выбираем порт b выбираем нога номер четыре совершено все кнопка у нас
28:55
обвязана теперь заходим соединение не подождите не то в расширенные свойства
29:03
здесь значит что мы делаем выбираем чтобы количество светодиодов было четыре
29:10
можно сделать их побольше вот так для
29:17
красоты ok вот они наши четыре светодиода символизирующий и выходную нагрузку
29:23
правой кнопочкой соединение подключаем опять на порт b а они уже автоматически распределились
29:30
0123 все совершенно можем нажать кнопочку play как на видеомагнитофоне
29:38
и проверить нашу симуляцию среди разработки пока что без протеуса нажимаем кнопку что будет происходить
29:49
оп-оп-оп-оп потухла все работы и
29:54
заметьте я нажал держу действие происходит пока я не ну действие не
30:01
будет идти дальше пока не отпущу кнопку видите все заработало
30:10
пожалуйста а сейчас я покажу что было бы если бы я не сделал вот этого вот этого
30:17
то есть проверка отпускания кнопки тут можно так вот de sable детей был икон короче все она теперь не
30:25
будет выполняться запускаем программу и смотрите чё будет виде пока я держу
30:30
кнопку она будет перелистывается это это потому что я добавил в конце задержку 100 миллисекунд еслиб этого я не сделал
30:37
она бы на огромной частоте перещелкиваю а это же чё попало это не наш способ поэтому идеальный вариант когда мы вот
30:44
здесь вот делаем подождите надо остановить симуляцию когда мы здесь
30:50
делаем вот такую проверку отпущенного состояния кнопки есть такое
30:57
дело есть запускаем еще раз проверяем
31:03
великолепно
31:09
давайте все-таки теперь проверим в протеусе но что мы делаем мы нажимаем
31:15
сохранить и нажимаем вот эту кнопочку компиляция в hex потому что hex это
31:21
16-ричный код который понимает контроллер нам обязательно нужно сперва вот это все скомпилировать в hex а потом
31:29
уже hex мы заливаем в наш контроллер нажали ждем компиляция завершена успешно
31:38
закрыть сворачиваем и так вот наш proteus
31:45
заходим два раза кликаем на наш контроллер выбираем нашу прошивочку вот она gbb вот
31:57
о чем я говорил я не так сложилось я всегда беру чистоту 48 мегагерц и и еще
32:05
выставляй удивительно 8 вот programmid вот так вот это делается все окей
32:14
запускаем симуляцию поехали смотрим а лампы
32:29
вот так вот нехитрым способом мы собственно говоря и сделали
32:35
а давайте вот что сделаем я знаю что эта тема интересна многим меломанам мы-то
32:41
все удаляем удаляем все связи удаляем все так вот это удаляем вот у нас есть
32:51
четыре роли так так я слышал что многим хочется
32:57
собрать переключатель аудиосигналов так давайте это сделаем вот input и допустим
33:05
у нас много разных входов вот вход номер
33:11
один вход номер два вход номер три вход номер четыре допустим компьютер плеер
33:18
там телефону еще к нибудь не видишь к или dandy не знаю ну звуковые источники
33:23
и один выход это уже у нас на усилитель все просто мы входы
33:32
подаем на нормально разомкнутые контакты реле
33:46
а выходы получаться оставшиеся контакты реле не просто это мы вы поняли
33:57
соединяем с выходом вот этот контакт вот
34:03
этот контакт вот этот контакт и вот этот контакт все
34:09
вот и пожалуйста вот у нас 4 аудиовхода массы мы все соединяем между собой
34:15
а именно сигнал и вот через реле пожалуйста ну и что у нас получается
34:22
запускаем симуляцию вот все то же самое нажимаем роли номер один номер два номер
34:29
3 номер 4 и никакие реле чтобы выключить
34:34
все а выход один на узелок пожалуйста делайте собирайте кому надо могу даже
34:41
печатку нарисовать пожалуйста проверили давайте еще раз пробежимся чтобы
34:49
освежить память так
34:55
смотрим еще раз программа в ней основной цикл внутри основного цикла опрос кнопки
35:02
опросили кнопку если кнопка нажата к переменной прибавляем единицу исходя из
35:09
значения переменной переходим соответствующие плечо переключателя в этом плече
35:16
контроллер посылает в порт по маске десятичное число а каждая десятичное
35:22
число то бишь 123 1248 соответствует вот такой вот битого
35:29
раскладки на порту то есть один это вот это два это вот это 4 это вот это восемь это вот это я скину
35:37
кому надо у такой двоичный калькулятор это я сам писал такой мне для удобства то есть вот так вот и делается
35:44
проставляем галочки на те порты которые нам нужно подать единицу да нажимаем
35:49
подсчет все вот это число мы просто пишем выход порта и у нас уже контроллер
35:55
сам будет знать на какие ноги подавать единицу все просто если 0 до 0 а также
36:04
программа работает наоборот вот видите 120 даже могут сравнить вот сейчас про
36:09
ставим все галочки подсчет 15 и сюда напишем 15 вот пожалуйста 1111 и здесь
36:16
1111 это значит что п п 0 по b1 b2 и
36:22
тб-3 отправиться единиц то есть все светодиоды загорятся если отправить в порт цифру 15 то все
36:29
четыре светодиоды будут гореть и верить и проверим давайте вместо вместо
36:38
допустим ну вот здесь вместо 0 опишем 15 запускаем симуляцию видеть все
36:47
1 34 все вот так вот то есть
36:56
очень легко оперировать таким способом портом целиком заранее подсчитали и это
37:04
число запихнули во весь выход для чего я говорю галочки проставлять чтобы не
37:10
влиять на ногу номер по b4 которая у нас за действие как опрос ноги
37:17
по входу вот так вот поэтому ну все
37:22
просто я думаю обратно здесь пропишем 0
37:32
ну еще разочек давайте вот чтобы два крайних загорелась цифра 9 вот здесь
37:37
ставим цифру 9 ok запускаем симуляции ведь два крайних загорелась потому что у нас по умолчанию
37:43
output моль и она сразу сюда залазить вот как то так
37:55
так что это простейший пример таким образом можно делать что угодно а именно
38:01
тут помимо входа-выхода есть коммуникации смотрите эспио rs232 can
38:09
one вайер как раз по протоколу в ангар осуществляется опрос цифровых температурных датчиков по
38:16
rs232 можно общаться с com портом или пою с битвы с там вариантов много по
38:23
испей можно управлять с беговыми резисты регистрами
38:28
для управления светодиодными индикаторами поют усе можно управлять
38:35
датчиками которые на aliexpress есть то есть ну это все осваивается ничего там
38:40
такого сложного нету то есть можно использовать ноги не как просто для 0 и
38:46
единицей а именно для каких-то коммуникаций также здесь вон еще есть понимаете да кстати
38:57
вот он шин замечательно работает scheme и про
39:06
gsm gps и честно говоря ничего это не делал но вот кастом и кастом 2 это самая
39:12
необходимая вещь для чего в этих компонентах можно прописывать свои
39:18
какие-то получаются компоненты то есть над она называется кастом что это
39:24
пользовательские компоненты но тут уже конечно нужно мозги морщить как следует
39:30
вот как то так мы с вами написали сегодня эту прошивку
39:37
можете повторить задавайте вопросы если вдруг что то не понятно это простейший
39:43
пример но я же говорю если вы поймете как это работает то все у вас не
39:49
остановить и как я уже вам вначале ролика говорил что представьте что действие это вода льется льется как
39:55
водопад если ничего не подставить она просто от беги на канду прольется и все а мы
40:01
поставили за концы вали водопад то есть вода теперь по кругу
40:07
движется поставили одну разделяющую перегородку она либо сюда вода либо суда
40:13
вода и здесь много разделяющих перегородок понимаете то есть ну вот такая простая ассоциация что работа
40:20
контроллера это движение воды в реке а мы должны этой воде подставлять разные
40:26
костыли чтобы заставлять делать то что нужно нам вот так вот простым языку так
40:32
сказать ну и на этом бы и закончить бы но я знаю вы хотите чтоб я собрался в
40:39
железе и проверил давайте сделаем это вот такой вот нехитрый набор
40:46
радиодеталей макет к вот ваш любимый контролем синичка
40:53
покров давайте будем паять потолок он
40:59
здоровенный мужик он нам асу вертел шашлык масан грядки он копал
41:09
носом бед и поливал она соси
41:15
об учете узел он смотрел через казино
41:20
соседа дядю гришу но сомкните слышу ограждать свою волю
41:31
он спасти одну немцы наших окружили не
41:39
наших перебили отец свою голову на грудь
41:45
и нос на речкой протянул наших о массу пошли наши наших пройти
41:55
[музыка] мини cs5 стали манас наступать
42:03
этносом колыхнул немцев и по кубу
42:08
а тем кто попал плавать и
42:14
попил свои по голове после боя меня
42:20
эбу 8 целовал [музыка]
42:48
так опрашивать будем моим любимым программатором самодельным вот в этот
42:54
отладочная платка я уже видите такую делал она тут под два контроллера
43:00
так что мы вставляем по ключу вот в эту
43:07
маленькую на эти вот ставили с хрустом
43:14
из чему-то
43:19
нужно будет работать и вставлен в избе
43:27
[музыка] опрашивать мы будем водка вы программой khazama avr programmer самая удобная
43:34
программа для прошивки запускаем ее вот вылазит такой маленькая
43:42
кошечка заходим в файл vr карантине 13 самое
43:52
главное нажимаем на замочек это считывание вузов rid of
44:00
вот он считал все заводские фьюзы пролистаем до конца и что мы видим вот
44:10
они наши два интересующих view за дело в том что эта конструкция которую мы стояли настолько как бы ну просто я что
44:17
в ее устройстве не нужен и кварцевый резонатор мы же не собираемся считать
44:23
время заниматься измерением чистоты нас свиста пердел к по сути чисто для
44:28
демонстрации контроллер нова могущество поэтому вот этот самый последний фьюз он
44:36
отвечать как раз таки на какой частоте будет работать контроллер и получается
44:42
от какого колебательного контура то есть от своего внутреннего которой в
44:48
контроллере есть либо от внешнего кварцевого так вот мы будем использовать внутренний
44:53
потому что нужно внешней нет необходимости тратить деньги вот у все варианты в какие хотите
45:00
когда вот такое слово exte флокс это значит будет работать от внешнего
45:06
резонатора но мы выбираем внутренней я всегда выбираю чистоту 4 и 8 мегагерц а
45:15
с получается вот это как этому вается 64 миллисекунды то есть когда
45:21
запускается программа контроллер делает паузу 64 миллисекунды и запускается на алгоритм запускает я
45:28
считаю что тону в лучший вариант в нашем случае выбираем его и здесь у меня стоит
45:33
по умолчанию делитель на 8 кто помнит в прошивке мы указали как вы уже помните
45:40
вот чистоту 600 килогерц видите вот а в прошивать
45:47
или у нас стоит 48 мегагерц разделенные на 8 как раз и получается эти самые 600
45:54
килогерц все если у нас вот здесь стоит что-то не так обычно завода стоит
46:01
частота 9 и 6 мегагерц мы выставляем и тото 48 и потом нажимаем
46:06
бюро it all ok вот кейн все получается
46:14
наши фьюзы запрограммированы кто-то
46:19
слышал уже это слово фьюзы как раз таки и фьюзы и так биты конфигурации то есть
46:24
настройки контроллера так сказать его предустановки а именно
46:30
будет ли он на этой частоте работать или на какой-то другой также будем ли мы
46:35
использовать reset как reset и либо как дополнительный порт в общем об этом можно почитать подробнее я просто вам
46:43
рекомендую делать все так как я вам показал а в дальнейшем уже когда освоите вот
46:49
такой как бы вариант написание прошивки вы дальше уже сами разберетесь
46:54
всем и зашили теперь нам нужно выбрать прошивку которую мы написали нажимаем
47:01
вот эту кнопочку f вот наша папка в гпд
47:12
могу показать что это вообще за hex вот он исходный код для контроллера вот это
47:22
что получается в итоге когда мы компилировали прошивочку наш вот она и
47:27
вот это и заливается в наш контроль все мы выбираем открыть нажимаем pencil q
47:35
номер три ждем окей
47:41
отсоединяем контроля и так настал
47:47
волнительный момент вся камеру наклоню маленько достаем контроллеры с
47:57
отладочной платы убираем программатор вот наши толпа буда
48:03
что мы стояли вставляем контроллер
48:15
итак момент истины господа хорошие я беру питание вот mi 5 вольт есть от
48:21
этого от конвертора от юсб короче
48:26
часа проводки возьму 5 вольт все
48:34
может свет выключить
48:41
итак тест нажимаем ухухуху номер 1234
48:51
выключен также возьму камеру и поднесу поближе [музыка]
48:59
смотрим
49:09
так и накроют бумажкой чтобы хорошо было видно
49:22
митинг разные
49:32
то есть это все ерунда работает все в
49:37
порядке значит наша прошивка написано верно вот таким образом можно одной
49:45
кнопкой переключаете сколь угодно много каналов то есть если вы поставите сюда
49:51
контроллер там не attiny13 atmega8 то вообще можете ну там сколько так
49:58
сказать каналов 16 наверное вот округлить одной кнопкой если надо
50:04
[музыка] поздравляю вы вместе со мной только что
50:12
написали прошивку для такого свиста перделки давайте еще разок
50:24
не забывайте что сейчас светодиоды подключены напрямую контроллеру общая
50:30
масса светодиодов через резистор 1 килоома массу вот если вы будете
50:36
использовать конечно более мощную огрузку нужно транзистор на я развязка это в любом случае
50:42
ещё хотел сказать я уже говорил в прошлом ролике вот здесь стоит резистор 47 килоом а это нужно делать обязательно
50:51
чтобы подтягивать получается reset контроллером на к плюсу питания через
50:56
этот резистор откройте схему контроллер attiny13 найдите там на горе сет и обязательно
51:02
вешаете ее резистором над плюс на плюс 5 вольт вот так господа легко и просто
51:10
если чуть поработать головой можно делать любые вещички какие вам
51:17
только нравятся мне эти тем более это среда разработки который вам показал
51:24
настолько просто и интересно мне и так приятно работать это просто упражнение
51:30
логику развивает воображение и пространственное мышление
51:36
ну и вообще любая умственная деятельность это очень хорошо так что
51:44
пишите прошивки у вас все получиться и так вот и все давайте подведем небольшие
51:52
итоги как вы уже поняли разрабатывать
51:58
прошивки в принципе дела не очень сложно главное поработать немножечко головой
52:04
есть плюсы и минусы этого языка в котором я вам показал как работать минус
52:12
это конечно в том него что есть некоторые ряд ограничений конечно
52:19
некоторые вещи мне пока сложно в нем даются потому что там действительно можно большего добиться но есть и
52:28
ограничение не все можно подрезать контроллеру на этой среде и плюс еще
52:35
конечно же прошивка которая написана вот-вот по flow котики она занимает
52:40
намного больше места чем допустим прошивка которую писали сразу все и компилировали в hex в этом плане да
52:47
большой минус место прошивки занимают много допустим если мы от меди 8 или 16
52:53
это некритично там много памяти а вот на attiny13 там памяти очень мало и уже
52:58
большую прошивку хрен запихнешь они и ну что не хватит места я думаю на первых
53:05
этапах разработки это не так то страшно достаточно чтобы освоить азы и уже реализовывать какие-то
53:13
такие простые мелочи а ведь реально меня друг виктор хотел сделать переключатель
53:21
аудиоканалов вот готовое решение о кависа светодиодах вешаем транзисторы и релюхи все готово неких тумблеров кнопок
53:30
многопозиционных не на 1 тактовая кнопочка решается те проблемы только пять выхода из суда если
53:36
от юсби или от алекса откуда хочешь хочешь зарядку от телефона при колхоз сюда тоже все будет великолепно работает
53:44
вот такой вот получился сегодня небольшой видео урок надеюсь вам все
53:50
понравилось задавайте вопросы буду отвечать всем советовать может вы мне что-то
53:57
посоветуете ведь я знаю на самом деле не так то и много как хотелось бы но я
54:03
стремлюсь надеюсь что вам все понравилось заходите еще пишите комментарии ставьте
54:09
лайки и дизлайки пляшите танцуйте как обычно ну и подписывайтесь на мою группу
54:17
в контакте электронные причуды ссылка будет в описании с вами был юрий us
54:23
всем пока [музыка]

Поделиться: