Форум за любителите на Стара електроника

Общ раздел => Технологии и джаджи => Темата е започната от: ahedproductions в 26 Ноември, 2015, 15:35:44

Титла: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 26 Ноември, 2015, 15:35:44
Привет съндакчии!
Представям ви първия си леко нескопосан опит за образователно филмче!  :D
Надявам се, че ще имам времето и възможността да продължа серията и да обхвана темата в дълбочина.
Никога през живота си не бях правил видеоклип (освен другото кратко филмче в канала ми) и това определено си личи. Моля да бъда извинен за лошото качество и грешките.
 :hi:

Клипът е направен на Sony Vegas Pro 11 и, разбира се, Excel.
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: Pichaga933 в 26 Ноември, 2015, 19:50:05
Цензурирам си собствения спам. Чуден е проекта, ще следя с интерес  :drinks:

Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 26 Ноември, 2015, 20:19:14
Количеството любители, програмиращи за микроконтролери е огромно, както е и огромен броя на тези, които се занимават с Ардуино. Атмега-та си е пак микроконтролер. А распберито е нещо съвсем различно, то си е компютър с периферия, до която е осигурен достъп чрез операционната система на ниско ниво.
Не мисля, че малко хора в БГ се занимават с микроконтролери, напротив, хич не са малко. Да твърдиш че са екзотика за инженери и проектанти е нелепо - разъкай из интернет малко преди да пишеш такива неща. Ще останеш учуден колко много хора се занимават, много повече от всички останали. Но се изисква малко усилие - да седнеш, да прочетеш, да понаучиш, да понапоиш някоя платка. А не да идеш, да си купиш нещо готово, да го забодеш на USB-то и да му кажеш с компютъра да мига, използвайки готова библиотека. Защо не си напишеш сам кода за USB връзката? Защо не седнеш да прочетеш и да вденеш как работи това чудо и не го подкараш сам? Защото е трудно и изисква време, старание и много опити. Но резултатът е истинско разбиране и знание, което ще ти остане и ще ти служи цял живот.
Аз мога да използвам термини в представянето, но това не е самоцелно или случайно. Няма проблем да преведа на БГ думите, но е много по-добре от самото начало да бъдат чувани, както ще бъдат използвани после и намирани в документациите на чиповете - на английски. По-нататък при разглеждането на подробностите ще се върна към всеки един от тях и ще го обясня подробно, с примери и нагледно.
Причината "Робко" да остане неупотребен от потребителя е тотален мързел и нищо друго. Консуматорската настройка изисква готови продукти, които да се ползват, а не да седнеш и да се потрудиш, да разбереш нещата истински и да дадеш нещо от себе си за крайния резултат. Микроконтролерите не са продукти, те са инструменти. За да се ползват трябва да се научиш как, да разбереш хардуера, а не да се криеш зад библиотеките и готовите интерфейсни портове. Това прави всеки програмиращ за PC - управлява готов хардуер с код.
Причината да не пиша за Ардуино, е че ползвам PIC процесори, не обичам Атмел. А за распбери-то има предостатъчно написано. Не се кефя на неща, на които може да върви Windows Portable, не са ми интересни. Не мога да вникна в това как работят, не мога да ги ремонтирам, не мога да ги достигна на ниско ниво. Това са компютри, а не микрокомпютри. Не смятам, че те научават любителите на електроника на нещо друго, освен да програмират и не смятам че са полезни за начинаещия. Пътят към компютрите минава през микроконтролерите. Пряк път към разбирането няма.
А и честно да ти кажа не ми е много приятно това, което си написал. Звучи ми така - "не ме кефи това, което си направил, нито как си го направил, нито темата. никой не му дреме за това, което си направил. има по-добри теми, що не пробваш с тях?" Не мисля, че отношението ти е коректно и възпитано, при все че накрая искаш от мен да седна и да се потрудя в посока, която ще ти е интересна лично на теб. Надали бих направил това.
 :hi:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: Boian Mitov в 26 Ноември, 2015, 21:29:21
Добро начало  :)
Е живот и здраве някои ден мже и да пусна версия на Visuino за PIC :) . Тогава ще ти е повече по вкуса :)
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 26 Ноември, 2015, 21:36:43
Правя тези филмчета за хората, които наистина се интересуват от това, как работят микроконтролерите. За тези, които търсят разбирането, а не бързия резултат. За тези, които уважават труда на другите и не го приемат за даденост, точно както труда на човека, който е седнал, набил е 1000-2000 линии код, дебъгнал го е, тествал го е стотици пъти и накрая го е качил под формата на безплатна за ползване библиотека. Точно тази билиотека, която ще ти направи бобинарката възможна. Този човек е разбирал и от регистри, и от 100 други неща. Пътят към разбирането никога не може да бъде скъсен, само пътят към резултата. Моите филмчета са за хората, които имат желание да изминат този път и да добият умения, не само знания. Всеки може да влезе в нета, да си намери някой, който вече е реализирал нужното му, да си дръпне сорс кода и си изпече процесора. Но това няма да го научи на нищо. Защото когато се окаже, че в кода има бъг, или че хардуера прави номера, или че ти се иска друга функция, той не може нищо да направи, по простата причина, че не го е направил той, he didn't do it himself. И няма идея какво го кара да цъка.
Надявам се, че сред хората от форума, които са ми писали с въпроси за микроконтролери, ще се намерят такива, които ще оценят труда който съм положил да правя тези филмчета и готовността ми да отговоря до колкото мога и да помогна на всеки, който се обърне към мен учтиво, като човек към човек.
Микроконтролерите са много приятно занимание, носят удовлетворение и учат на постоянство. И удоволствието да се похвалиш е огромно. Както моето, когато успях да подкарам моя генератор на произволни числа за целите на криптирането. Борбата с процесора беше епична, освен това на платката има и чип с програмируема логика - сфера, до която не се бях докосвал. Отне ми около месец да го овладея и програмирам. Платката стана страхотна и генерираните числа отговарят на всички криптографски стандарти. Айде сега го пробвай това с  распбери. Да видим колко код ще ти се наложи да напишеш и дали стандартните библиотеки ще те спасят. :)
 :drinks:

Ето го модулът. От дясно на ляво - два генератора на шум със самобалансиране на единиците и нулите и компенсация на температурата и стареенето на елементите, CPLD (програмируем логически чип) натоварен с математически функции за подобряване на произволността на числата и микроконтролер, следящ здравето на шумовите генератори, събиращ произволните единици и нули в пакети по 256 бита и обслужващ USB връзката. Между другото, препрограмирането става през същото това USB, не с програматор. Има си начин, нарича се bootloader. Няма по-голям кеф от този успех. За целите на проекта модифицирах 4 библиотеки, 3 от тях доста генерално, практически ги преписах. Ако се чудите какъв е запоения отгоре USB модул - временна комуникация за програмиране, докато успея да се преборя с факта, че захранвам схема, която е създадена да шуми зверски, през същия кабел, през който комуникира с компютъра. Черното блокче отгоре е DC/DC конвертор, даващ 15 волта за генераторите. И те, и той хвърлят обратно към USB порта страшна шумотевица. Спасиха ме няколко дълги седмици на четене, писане на код и пробване, през които пренстроих USB комуникацията да не се скапва.

[attach=1]
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 26 Ноември, 2015, 21:37:43
Добро начало  :)
Е живот и здраве някои ден мже и да пусна версия на Visuino за PIC :) . Тогава ще ти е повече по вкуса :)
Еййй! Браво! Страхотно изглежда! Поздравявам за труда! Бих се радвал на среда за PIC. Не казвам че им има нещо на атмелите, напротив дори са по-сериозни процесори. Просто въпрос на вкус.  :drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: radio-hobi в 26 Ноември, 2015, 21:47:28
Поздравления ! На мен лично ми харесва .  :good:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: Pichaga933 в 26 Ноември, 2015, 21:53:40
Цензурирам си собствения спам. Чуден е проекта, ще следя с интерес  :drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: Boian Mitov в 26 Ноември, 2015, 22:06:47
Еййй! Браво! Страхотно изглежда! Поздравявам за труда! Бих се радвал на среда за PIC. Не казвам че им има нещо на атмелите, напротив дори са по-сериозни процесори. Просто въпрос на вкус.  :drinks:
Благодаря :)
Поздравления за филмчето и успех със следващите  :drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 26 Ноември, 2015, 22:07:12
А да бе, голяма работа, ще се триеш сега. То пък не може все да сме на едно мнение и на една вълна. Светът е голям и спасение дебне отвсякъде, както се казваше един филм. Платформи за всички, от писане на инструкции на Асемблер до програмиране с движения на окото 8)
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ONZI в 26 Ноември, 2015, 22:27:51
Поздравление за клипчето,много ми хареса ще чакам следващият. :hi:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: Nprod в 27 Ноември, 2015, 00:03:04
Браво! Видеото е отлично и съдържа много полезна информация.  :good:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ian в 27 Ноември, 2015, 06:07:58
Браво! Филмчето е станало чудесно! :good:
Качеството е напълно задоволително, всичко се вижда и чува. Продължавай със същия хъс и желание!
Поздравления! :hi:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 27 Ноември, 2015, 07:45:59
Благодаря на всички за хубавите думи и подкрепата! Още днес започвам да подготвям епизод 2, въпреки че май избързах с последните кадри и какво ще е съдържанието му  :blush:. 
Във втората част ще поговорим за процеса на писане и програмиране - какви програми се ползват и как се програмират процесорите, какви файлове се генерират по пътя и за какво служат. Мисля, че епизодът ще бъде по-дългичък. Ще го видим.
:drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 28 Ноември, 2015, 19:18:00
Втори епизод подготвен, в понеделник записвам и рендирам.  :drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ftest в 29 Ноември, 2015, 09:02:57
Поздравления за видеоклипа, полезна и навременна информация!
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 30 Ноември, 2015, 16:02:40

Част 2 от серията!  :drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ftest в 01 Декември, 2015, 07:48:34
Поздравления!
Видеоклипът е с отлично качество, съдържа
много и актуална информация.
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 01 Декември, 2015, 07:53:23
 :drinks: Следващия епизод ще е видеозапис и ще се позабави покрай обработката, но се надявам до края на седмицата да го кача. Днес го почвам.
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 04 Декември, 2015, 09:13:05

Ето го и третия епизод!  :hi:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ftest в 04 Декември, 2015, 10:15:31
Ентусиазъм, хъс и практичност.
Поздравления за положеният труд!
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 12 Декември, 2015, 14:21:13

Привет! Представям епизод 4 - приятно гледане! Малко зацепвах днес, има смешни моменти.  :D
Отговарям на един въпрос на ЛС тук, защото отговорът е за всички:
Идеята ми не е да обяснявам всичките подробности, свързани с езика JALv2. Идеята е да ви покажа как се ползва процесора. Който ще върви по стъпките ми и ще повтаря експериментите трябва да си направи домашната работа и да попрочете информацията от линковете към видеата. В този епизод въвеждам 3 команди, променливи и низ. Ако имате на какво да тествате ще са ви нужни 30 минути да опознаете тези команди в дълбочина, а ако нямате - точно 5 за да прочетете описанието им. Във видеото не споменавам подробности, като факта, че командата IF е зонална, т.е. се загражда от END IF до там, до където искаме тя да действа. Това и подобните пропуски трябва да научите сами! Разбира се съм насреща за отговаряне на въпроси, на които описанието на езика и дейташита на контролера не може да отговори.
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ftest в 13 Декември, 2015, 08:41:39
Отново отличен видеоклип като качество и съдържание!
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 13 Декември, 2015, 08:59:30
 :drinks: :hi:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: chav_chav в 04 Януари, 2016, 11:02:32
Поздравления за автора!!!Много отдавна сме жадни за образователни филми.Това се равнява на класиката "Радиото!Че то е много просто".Само едно нещо ме смущава,а може би аз не го правя както трябва-не ми излиза на цял екран.
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 04 Януари, 2016, 13:05:44
  :D Само дето си говоря сам, а не с някой любопитен хлапак, както е в споменатата книга.
В ляво от бутонката за пълен екран е знака на ютюб. Цъкаш го и те праща да го гледаш там, в моя канал, където работи нормално на цял екран.
Утре започвам следващия епизод!
 :drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 06 Април, 2016, 20:56:40
Моля да бъда извинен за закъснението на следващия епизод, чаках 100 гледания на някое от филмчетата, че да продължа. Скоро ще е готово, надявам се да не съм ви изгубил като публика.
 :hi:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ONZI в 07 Април, 2016, 00:20:01
Не си ни изгубил очаквам го с интерес,дори мислех че си се отказал.
Преди време се опитвах на асемблер,но е много тромаво иска много описване и се отказах та за това ми е интересно.От къде мога да намеря информация за командите-инструкциите за пик контролерите за този език.
С английският не съм на ти.От мен адмирации за инициативата.
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 07 Април, 2016, 01:10:40
Има линкове под епизодите!  :drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: Gabo в 07 Април, 2016, 02:34:51
Преди време се опитвах на асемблер,но е много тромаво иска много описване и се отказах
Ех, да имаше едно копче, на което да пише "НАПИШИ ПРОГРАМА". щото иначе многу гадну - карат ни да читьем неквьи кодови и да пишим пруграми.
УЖАССС
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 07 Април, 2016, 07:55:20
Факт е, че асемблера е тромав. Той и не е предвиден да не е. Н и неговото програмиране може да се автоматизира до голяма степен с подходяща работна среда. Дълги години е писано само на него, тъй като като единственото, което е трябвало да направят инженерите-програмисти, за да работятя с даден чип е било да изчетат инструкциите и да погледнат периферията и ядрото. Останалото просто е било коване на редове и после много дебъгване, или отстраняване на грешки.
Гугъл знае достатъчно английски за програмирането, поне за начинаещите. Но ако човек иска да научи някой контролер и да го ползва с всичките му възможности, трябва да изяде дейташита му, няма как.
Иначе в програмирането има основно 3 вододела. Първия се минава с първата програма, която прави нещо, от което имаме нужда. При мен беше контролер за поливане на 3 саксии с цветя, голямо чудо беше...  :D
Втория вододел е преминаването на психологическата бариера около таймерите и прекъсванията в процесорите. А третия е навлизането в дълбоките води около цветните дисплеи, DSP блокчетата и тежките периферии всякакви сложни. И трите са свързани с много неуспехи и упоритост, но възнаграждават усилията богато. А, да, и да подтиснете ужасно силното желание да идете и да си купите за 1-2 лева отгоре ПО-ДЕБЕЛ процесор, защото искате още лампички например.  Докато не изцедите чипа, на който сте докрай, не минавате на друг, освен ако очевидно не стига периферията. Но ще се учудите колко много може да се направи с много малко. Ето един пример -
На този "хардуер" върви пълноценен web сървър
http://web.archive.org/web/20021003111042/http://www.rmbeales.fsnet.co.uk/files/html/picserver/picservd.htm
    HTTP 1.0 web server
    miniature TCP/IP implementation
    RS232 level SLIP interface
    32kB file storage for up to 99 files
И това е на чип с 1024 байта памет и 10МХц часовник. А какво ли може да се изцеди от един от дебелите АRМ9 ядра, които са на 2ГХц... това са 12 компонента, ако махнем ненужния в днешни дни RS232 чип. Това наричам минимализъм, а има и един по-малък, но нещо са станали комерсиални и проекта го няма онлайн - webACE, целия сървър беше на една 5/12мм платчица на върха на сериен конектор - http://tzywen.com/photos/smallservers/PCB-quarter.jpg
P.P. A, ето - http://p2p-internet.weebly.com/uploads/1/4/4/1/14419908/http___d116.pdf
Всъщност в днешни дни на никой не му се налага да прави такива пируети от храброст, има серийни сървъри на малки модули, дори с безжичен нет. Само слагаш и твоята джаджа е онлайн. Но четенето на англойски там е повечко. :)
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ftest в 07 Април, 2016, 11:10:19
Моля да бъда извинен за закъснението на следващия епизод, чаках 100 гледания на някое от филмчетата, че да продължа. Скоро ще е готово, надявам се да не съм ви изгубил като публика.
 :hi:

Напротив, даже се чудехме защо закъснява поредният епизод.
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 07 Април, 2016, 11:43:19
Ми що не питате? Аз веднага ще си кажа! :) Освен горната причина има и друга - просто бях много зает. Правя тези неща, когато няма какво друго да правя. От доста време не съм имал един цял свободен ден, а обикновенно едно от тези филмчета ми отнема 2 дена да го подготвя.
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ftest в 07 Април, 2016, 11:48:03
Със сигурност е така, оценяваме положеният труд.
А сме наясно и с безбройните проблеми и предизвикателства
около АМ предавателя.
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 03 Май, 2016, 12:39:30
За мое най-голямо съжаление на 28 миналата седмица, при сакат опит да ползвам развойната платка не по предназначение, съм успял да опуша контролера и драйверния чип. Поръчал съм нов, мислех че имам още, но нейсе. Тъкмо намерих време да седна и да запиша следващия епизод, и се оказа че не мога. Като дойде чипето ще му кача бутлоадера и продължаваме снимките. Предполагам другата седмица ще излезе епизода с АЦП.
С него приключвам първата серия филмчета, покриваща основните периферии и ядрото. В следващата поредица, която не зная кога ще започна още, ще наблегнем на по-комплексни неща като прекъсвания, ползване на вътрешния EEPROM, ползване на I2C шината и свързване към нея на температурен датчик, RTC (външен часовник с календар, Real Time Clock), разширителен чип с 8/16 крачета, памет, iButton за идентификация при електронни брави, радио модули и др.
 :drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 23 Октомври, 2016, 20:21:25
Привет колеги!
Платката ми е ок вече, но се случи случка с фотоапарата ни. Явно е заложена повреда в него, приятелка фотографка ми каза, че била чест проблем. Една от мъничките предавки в системата за оптичен зум явно е изгубила няколко зъбчета и сега понякога не ми се прибира оптиката до край при гасене, понякога като зумна до край и после върна - имам тъмно петно в дясната част на снимките. Това ни е семейния апарат, нямам пари за друг сега, нито за ремонти, така че ще правя само по някоя снимка от време на време и ще гледам да не го мъча и да не го разнасям с мен до работата постоянно, където снимам филмчетата.
За сега спирам със снимките, но ще Ви предложа писмено обяснение и сорс код за последния епизод от тази серия - АЦП.
Тази програмка измерва напрежението на аналоговия вход и прави с резултата две неща - показва нивото му на светодиодната стълбица и предава стойностите към компютъра през серийния порт. Тъй като светодиодите са 8 на брой и АЦП се използва в 8-битов режим (0-255), то стъпката на стълбицата е 0.625V на стъпка. Стъпката на напрежението през серийния порт е по-фина - 0.195V. Нека погледнем кода:

-- ------------------------------------------------------
-- Title: BOb ADC SERIAL
-- Author: Billian Marinov
-- Compiler: 2.4q4
-- Revision: 0.1
-- Description: LED/SERIAL 8 bit voltmeter
-- Notes: 0.625V/LED step, 0.195V/serial step
-- ------------------------------------------------------
include 16f88
pragma target clock    20_000_000
pragma target OSC      HS
pragma bootloader bloader
include print
include format
Ок, до тук всичко е както в предните случаи.
-- ------------------------------------------------------
enable_digital_io() -- enable ditital IO on ports
const serial_hw_baudrate = 1_200 --set your baudrate here
include serial_hardware
serial_hw_init() --initialize the serial module
-- ------------------------------------------------------
const byte ADC_NVREF = ADC_NO_EXT_VREF -- using internal Vref
const bit ADC_HIGH_RESOLUTION = false -- using 8 bit mode on ADC
include adc
adc_init() -- initialize ADC
set_analog_pin(0) -- set A0 as analog input pin
-- ------------------------------------------------------
Инициализираме ифровите входове/изходи, избираме скорост за комуникацията 1.2кбит/с. След това идва новото - инициализацията на АЦП модула. Стъпките са няколко. Както при всяко друго АЦП трябва да изберем дали ще позваме какво референтно напрежение ще използваме. Тъй като ще мерим до 5 волта, можем да позлваме вътрешния източник, който практически е захранващото напрежение. За да заявим нашия избор на библиотеката, която ще управлява АЦП-то, дефинираме байт констнта ADC_NVREF като ѝ даваме текстова стойност ADC_NO_EXT_VREF (без външно референтно напрежение).
В 16F88 има вграден 10 битов АЦП модул, кйто ни дава разделителна способност от 1023 точки. Това е хубаво и означава, че теоритично можем да измерваме с точност около 5 миливолта, но има един малък проблем - микроконтролера е 8 битов и резултата от измерването ще ни бъде върнат в два байта, като в горния ще имаме 2-та допълнителни бита. За наште цели не само, че такава точност е ненужна, но и сметките с пренасяне в два байта са твърде сложни. Точно за такива моменти е предвидена възможност АЦП модула да се ползва с ниска резолюция от 8 бита, което ще ни позволи лесни сметки и резултат само в един байт. За да заявим този избор дефинираме бит константа ADC_HIGH_RESOLUTION и ѝ даваме стойност false.
След това добавяме библиотеката, инициализираме модула и избираме кой от входовете да измерваме. В този случай съм избрал А0, защото на развойната платка това ми е единствения защитен вход на клема, но има достъп и до други, ако е нужно. Този избор може да бъде правен по всяко време в кода.
alias   DI1      is pin_A5
alias   DI2      is pin_A4
alias   DIO1      is pin_B0
alias   DIO2      is pin_B1
alias   DIO3      is pin_B3
alias   DIO4      is pin_B4
alias   DIO5      is pin_B6
alias   DIO6      is pin_B7
alias   DIO7      is pin_A1
alias   DIO8      is pin_A2
-- ------------------------------------------------------
pin_B0_direction = output
pin_B1_direction = output
pin_B3_direction = output
pin_B4_direction = output
pin_B6_direction = output
pin_B7_direction = output
pin_A1_direction = output
pin_A2_direction = output
pin_A4_direction = input
pin_A5_direction = input
Тук правим традиционните настройки на изходите и входовете, познати ви от предните епизоди. Нека сега извършим някои необходими дефиниции за нашата програма:
const byte str1[] = "RCe100 ADC Voltage: "
var word measure = 0
dio1 = 0 dio2 = 0 dio3 = 0 dio4 = 0 dio5 = 0 dio6 = 0 dio7 = 0 dio8 = 0
Създаваме текстов стринг str1[], който ще изпращаме през серийния порт. Създаваме променлива байт measure, в който библиотеката за АЦП-то ще ни връща резултата от измерванията. Нулираме 8-те изхода за светодиодите. Време е да създадем главния цикъл!
forever loop
-- *****************************************************************************
measure = adc_read_low_res(0)
_usec_delay(100)
   if measure >= 32 then dio1 = 1 else dio1 = 0 end if
   if measure >= 64 then dio2 = 1 else dio2 = 0 end if
   if measure >= 96 then dio3 = 1 else dio3 = 0 end if
   if measure >= 128 then dio4 = 1 else dio4 = 0 end if
   if measure >= 160 then dio5 = 1 else dio5 = 0 end if
   if measure >= 192 then dio6 = 1 else dio6 = 0 end if
   if measure >= 224 then dio7 = 1 else dio7 = 0 end if
   if measure >= 255 then dio8 = 1 else dio8 = 0 end if
   measure = measure * 196
print_string(serial_hw_data, str1)
format_word_dec(serial_hw_data, measure, 6, 4)
serial_hw_data = ASCII_CR
_usec_delay(200_000)
-- *****************************************************************************
end loop
Ето я и основната част от нашата програма - измервателния цикъл. В началото извършваме измерване, като на променливата measure риравняваме функцията adc_read_low_res(0) от библиотеката ADC. Това действие предизвиква измервателен цикъл, на края на който в measure получаваме измерената стойност. Тя е под формата на число от 0 до 255. Изчакваме 100 микросекунди АЦП модула да си свърши работата.
Следват функциите за управление на светодиодната стъбица. Чрез тях преценяваме нивото на напрежението и запалваме определения брой светодиоди. Използват се структури IF/THEN/ELSE, като обхвата е разделен на 8 части.
За да изобразим напрежението на компютърния екран трябва първо да превърнем тази байтова стойност в смисленото за човека напрежение във волтове. Правим това, като умножаваме получения резултат със стойността на стъпката от 19.6 миливолта, т.е. ако имаме резултат 100 като измерване, това ще означава, че напрежението е 1.96 волта. За да не правим умножение на числа със запетая, което изисква дефиниране на друг тип променливи и константи, съм умножил с 196, като за десетичната запетая мога да се погрижа в последствие чрез параметрите на функцията print. Както виждате извършва реверсивно умножение, т.е. умножавам measure с 196 и записвам резултата обратно в measure. Тази опция в JALv2 позволява спестяване на една променлива и няколко реда код. Резултата от горния пример би бил 100*196=19600.
След това, използвайки print_string изпращаме към екрана на компютъра надписа "RCe100 ADC Voltage: ". Веднага след това, използвайки функцията format_word_dec (форматиране на десетична дума) форматираме резултата като число с 6 знака (заедно с точката), като разполагаме точката на 4 позиция от края. Това би оформило числото 19600, което дадохме за пример горе, като 1.9600, точната стойност, и я изпращаме към серийния порт.
Ако оставим обаче нещата така, вместо да виждаме на екрана един ред, например RCe100 ADC Voltage:1.9600, ще се получи един водопад от такива редове, пълнещ екрана и правещ наблюдението почти невъзможно. По тази причина след резултата изпращаме стандартната ASCii команда CR, или връщане на каретката (carriage return). Тя връща курсора в горния ляв край на екрана, за да може следващото измерване да бъде изписано върху старото, предотвратявайки задръстването на екрана.
Изчакваме 200 милисекунди и започваме отново. Защо правим това -  оставям на вас!  ;)
Това е програмата, колеги!
Ще се опитам да направя кратко видео с работещия код и да го кача, за нагледен пример.
 :drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 28 Октомври, 2016, 13:06:01
Колеги,
искам да попитам някой има ли въпроси от изложения материал във филмчетата и последния пост? За толкова много гледания ме удивлява, че никой не ми зададе дори един въпрос. Отворен съм за разяснения и дискусии.
 :hi:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 08 Ноември, 2016, 11:27:07

Ето и обещаната кратка демонстрация на последния код!
 :drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: Boian Mitov в 26 Юни, 2017, 00:08:02
Понеже преди време се оплака че Visuino не може да програмира PIC контроллери, та взех че се спретнах и добавих потдръжка за chipKIT за теб ;-)

https://www.visuino.com

Поздрави,
  Боян
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 26 Юни, 2017, 08:36:21
 :hi: Да си жив и здрав!  :drinks:
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: Niakoi в 26 Юни, 2017, 14:21:45
Колеги,
искам да попитам някой има ли въпроси от изложения материал във филмчетата и последния пост? За толкова много гледания ме удивлява, че никой не ми зададе дори един въпрос. Отворен съм за разяснения и дискусии.
 :hi:
Може ли по-подробно обяснение на това твърдение: "Факт е, че асемблера е тромав. Той и не е предвиден да не е."
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: ahedproductions в 27 Юни, 2017, 11:11:47
Да, определено е нужно да обясня какво имам пред вид, и то защото така като си прочетох твърдението, хич не ми харесва и не съм искал да кажа нещата така. Благодаря за въпроса. Асемблера НЕ Е тромав, дори в много случаи може да позволи дълбока оптимизация, намаляване на обема на кода и ускоряване на изпълнението на програмите. Но и в много случаи е повече от неподходящ. Тромава е работата с него! Близостта му с комплекта инструкции на процесора го отдалечава от по-висши функции, съществуващ в езици като Джал, Си и т.н., някои оператори, функции, процедури, изрази, подпрограмно групиране. Всички тези големи улеснения в нелеката задача да се доближи логиката на една програма до логиката на човешкия мозък, са като цяло липсващи на ниво асемблер. Или са доста по тежки за реализация, което пък води до усложнено дебъгване, изисква повече умение в програмирането и по-задълбочения знания, опит.
Титла: Re: Серия образователни филмчета за микроконтролери
Публикувано от: Niakoi в 27 Юни, 2017, 13:36:03
 :good: