Принципи микроконтролера

Как работает микропроцессор (Може 2019).

$config[ads_text] not found
Anonim

Принципи микроконтролера

Дигитални кругови


Питање 1

Прочитајте следећи цитат, а потом истражите појам микроконтролер да бисте видели шта значење има за цитат:

Отишао сам на своју прву рачунарску конференцију у Њујорку Хилтон пре око 20 година. Када је неко предвидео да ће тржиште за микропроцесоре на крају бити у милионима, неко други је рекао: "Где ће сви ићи" # 1 "> Открити одговор Сакри одговор

Допустићу вам да радите свој домаћи задатак на ово питање!

Напомене:

Не само да је цитат смешан, већ је и запањен, посебно онима који смо уопште рођени без икаквих компјутера у нашим домовима, а много мање рачунара.

Поента коју желим да ученицима истражим појам "микроконтролер" је да видим да већина рачунара у постојању није од сорте коју обично мисли на ознаку "рачунар". Ови рачунари рачунара - као и контрола мотора рачунари у аутомобилима, кухињски апарати, мобилни телефони, биомедицински импланти, говорне рођенданске картице и други мали уређаји - много су мањи и много више специјализовани од "општих намена" рачунара који људи користе на њиховим столовима за писање докумената или сурфовање интернетом. Они су тиха, невиђена страна савремене "компјутерске револуције" и на много начина су прикладнији за почетак студија дигиталне електронике да истражују него њихове веће, опште намене.

Питање 2

Јединица микроконтролера или МЦУ је специјализовани тип дигиталног рачунара који се користи за обезбеђивање аутоматског секвенцирања или контроле система. Микроконтролери се разликују од обичних дигиталних рачунара јер су веома мали (обично један чип интегрисаних склопова), са неколико наменских игала за улаз и / или излаз дигиталних сигнала и ограниченом меморијом. Упутства која су програмирана у меморији микроконтролера говоре како реаговати на услове уноса и које врсте сигнала треба послати на излазе.

Најједноставнији тип сигнала "разумљен" од стране микроконтролера је дискретни напонски ниво: или "висок" (приближно + В) или "ниско" (приближно приземни потенцијал) мерен на одређеном пин на чипу. Транзистори који су унутар микроконтролера производе ове "високе" и "ниске" сигнале на излазним пиновима, а њихове акције су моделиране СПДТ прекидачима ради једноставности:

Микроконтролери могу бити програмирани тако да емулирају функције дигиталних логичких врата (АНД, ОР, НАНД, НОР, итд.) Поред широког спектра функција комбиновања и мултивибратора. Једина стварна граница онога што микроконтролер може да уради је меморија (колико се може складиштити велики програм) и улазно / излазни пинови на МЦУ чипу.

Међутим, микроконтролери су сами састављени од хиљада (или милиона!) Логичких кругова. Зашто би било смисла користити микроконтролер за извођење логичке функције коју мали део њених конститутивних врата може остварити директно "# 2"> Открити одговор Сакри одговор

Једноставност конфигурације и флексибилности!

Напомене:

Имајте на уму да се нисам трудио да објасним свој изузетно чврст одговор. Ово је тема о којој желим да студенти размишљају дуго и тешко, јер су прави одговори на ово питање разлоги који доводе до развоја свих програмабилних дигиталних уређаја.

Питање 3

Студент одлучује да направи коло светлосног фласера ​​помоћу микроконтролера уместо 555 тајмера или неког другог чврстог стезног кола. На жалост, негде постоји проблем. Када се први пут напаја, ЛЕД светли на 1 секунду, затим се искључује и никада се не укључује. Једини начин на који се ЛЕД икада враћа је да ли је МЦУ ресетован или се његова снага искључи и укључи:

Објави Пин0 као излаз

ЗАПОЧЕТИ

Поставите Пин0 ХИГХ

Паузирајте 1 секунду

Поставите Пин0 ЛОВ

КРАЈ

Студентски колега, када га затражи помоћ, модификује попис програма и поново их шаље са личног рачунара на којем се уређује микроконтролеру, преко програмског кабла. Листа програма сада гласи као таква:

Објави Пин0 као излаз

ЛООП

Поставите Пин0 ХИГХ

Паузирајте 1 секунду

Поставите Пин0 ЛОВ

ЕНДЛООП

Када се МЦУ ресетује новим програмом, ЛЕД почиње да трепери и искључује. . . некако. ЛЕД је "укључен" већину времена, али сваке секунде се искључује и одмах се враћа. У ствари, "офф" период је толико кратак да је једва приметан.

Оно што је ученик желио је био 50-инчни радни циклус: "укључен" 1 секунду, а онда "искључен" 1 секунду, понављајући тај циклус на неодређено време. Прво, објасните значај модификације програма из разреда, а затим поново модификујте листу програма тако да ЛЕД диода ради оно што студент жели.

Открити одговор Сакриј одговор

Потребна је "петља" за МЦУ да понови секвенцу он / паусе / офф. Оно што је сада потребно је још једно кашњење у оквиру петље:

Објави Пин0 као излаз

ЛООП

Поставите Пин0 ХИГХ

Паузирајте 1 секунду

Поставите Пин0 ЛОВ

Пауза за 1 секунду ( нова линија кода )

ЕНДЛООП

Напомене:

Сврха овог питања је да ученици схвате да микроконтролеру мора бити речено да "петље" кроз инструкције које светлу трепере. Заиста, ово је само илустрација петљи у практичном контексту.

У случају да се питате зашто пишем псеудокоде, ево неколико разлога:

Без претходног искуства са програмирањем потребним за разумевање псеудокода
Никада не излази из стила
Независно од хардвера
Нема синтаксних грешака

Да сам одлучио да покажем код који би заправо био у микроконтролеру, поставио бих питање застарелости. Овим путем, могу да комуницирам дух програма, а да не будем везан за стварни програмски стандард. Једини недостатак је што ће студенти морати да преведу моју псеудокоду у стварни код који ће заправо радити на њиховом специфичном МЦУ хардверу, али то је проблем гарантован за неке, без обзира на који прави програмски језик бих изабрао.

Наравно, могао сам да узмем приступ Доналда Кнутх-а и измислим свој сопствени (имагинарни) хардвер и инструкцију. . .

Питање 4

Студент одлучује да направи коло са светлосним фласером помоћу микроконтролера. ЛЕД треба да трепће и искључује само када је прекидач притиснут. Требало би да се искључи када је прекидач отпуштен:

Објави Пин0 као излаз

Објави Пин1 као улаз

Док је Пин1 висок

Поставите Пин0 ХИГХ

Паузирај на 0, 5 секунде

Поставите Пин0 ЛОВ

Паузирај на 0, 5 секунде

ЕНДВХИЛЕ

ЛЕД светли све док се притисне дугме када се МЦУ напаја или ресетује. Чим се осигурач искључи, ЛЕД се искључује и никада се не враћа. Ако прекидач никада није притиснут током пуштања у рад, ЛЕД никада се не укључује! Објасните шта се дешава и модификујте програм по потреби како бисте решили овај проблем.

Открити одговор Сакриј одговор

Условна петља "ВХИЛЕ" треба поставити унутар безусловне петље:

Објави Пин0 као излаз

Објави Пин1 као улаз

ЛООП

Док је Пин1 висок

Поставите Пин0 ХИГХ

Паузирај на 0, 5 секунде

Поставите Пин0 ЛОВ

Паузирај на 0, 5 секунде

ЕНДВХИЛЕ

ЕНДЛООП

Следеће питање: за коју сврху отпорник Р служи у тастеру "белешке скривене"> Напомене:

Сврха овог питања је да ученици разумију шта петља "ВХИЛЕ" практично представља: ​​петљу са условима. Он такође супротставља условну петљу против безусловне петље и показује како обојица играју улогу у интерактивним системима као што је овај.

У случају да се питате зашто пишем псеудокоде, ево неколико разлога:

Без претходног искуства са програмирањем потребним за разумевање псеудокода
Никада не излази из стила
Независно од хардвера
Нема синтаксних грешака

Да сам одлучио да покажем код који би заправо био у микроконтролеру, поставио бих питање застарелости. Овим путем, могу да комуницирам дух програма, а да не будем везан за стварни програмски стандард. Једини недостатак је што ће студенти морати да преведу моју псеудокоду у стварни код који ће заправо радити на њиховом специфичном МЦУ хардверу, али то је проблем гарантован за неке, без обзира на који прави програмски језик бих изабрао.

Наравно, могао сам да узмем приступ Доналда Кнутх-а и измислим свој сопствени (имагинарни) хардвер и инструкцију. . .

Питање 5

Испитајте следећи шематски дијаграм и програмски попис (написан у "псеудоцоде" а не формални програмски језик) како бисте утврдили који тип основне логичке функције се имплементира у овој јединици микроконтролера:

Објави Пин0 као излаз

Објасните Пин1 и Пин2 као улазе

ЛООП

Ако је Пин1 висок, поставите Пин0 ХИГХ

ЕЛСЕИФ Пин2 је висок, поставите Пин0 ХИГХ

ЕЛСЕ поставити Пин0 ЛОВ

ЕНДИФ

ЕНДЛООП

Открити одговор Сакриј одговор

Овај микроконтролер имплементира логичку ИЛИ функцију.

Напомене:

Иако се ова логичка функција могла имплементирати лакше и јефтиније у логичкој логичкој логици, сврха је да ученици помисле на обављање логичких операција помоћу секвенцираног скупа инструкција унутар програмабилног уређаја (МЦУ). Ово је концептуални прескок, основни, али врло важан.

У случају да се питате зашто пишем псеудокоде, ево неколико разлога:

Без претходног искуства са програмирањем потребним за разумевање псеудокода
Никада не излази из стила
Независно од хардвера
Нема синтаксних грешака

Да сам одлучио да покажем код који би заправо био у микроконтролеру, поставио бих питање застарелости. Овим путем, могу да комуницирам дух програма, а да не будем везан за стварни програмски стандард. Једини недостатак је што ће студенти морати да преведу моју псеудокоду у стварни код који ће заправо радити на њиховом специфичном МЦУ хардверу, али то је проблем гарантован за неке, без обзира на који прави програмски језик бих изабрао.

Наравно, могао сам да узмем приступ Доналда Кнутх-а и измислим свој сопствени (имагинарни) хардвер и инструкцију. . .

Питање 6

Испитајте следећи шематски дијаграм и програмски попис (написан у "псеудоцоде" а не формални програмски језик) како бисте утврдили који тип основне логичке функције се имплементира у овој јединици микроконтролера:

Објави Пин0 као излаз

Објасните Пин1 и Пин2 као улазе

ЛООП

Ако је Пин1 ЛОВ, поставите Пин0 ЛОВ

ЕЛСЕИФ Пин2 је ЛОВ, поставите Пин0 ЛОВ

ЕЛСЕ поставити Пин0 ХИГХ

ЕНДИФ

ЕНДЛООП

Открити одговор Сакриј одговор

Овај микроконтролер имплементира логичку АНД функцију.

Напомене:

Иако се ова логичка функција могла имплементирати лакше и јефтиније у логичкој логичкој логици, сврха је да ученици помисле на обављање логичких операција помоћу секвенцираног скупа инструкција унутар програмабилног уређаја (МЦУ). Ово је концептуални прескок, основни, али врло важан.

У случају да се питате зашто пишем псеудокоде, ево неколико разлога:

Без претходног искуства са програмирањем потребним за разумевање псеудокода
Никада не излази из стила
Независно од хардвера
Нема синтаксних грешака

Да сам одлучио да покажем код који би заправо био у микроконтролеру, поставио бих питање застарелости. Овим путем, могу да комуницирам дух програма, а да не будем везан за стварни програмски стандард. Једини недостатак је што ће студенти морати да преведу моју псеудокоду у стварни код који ће заправо радити на њиховом специфичном МЦУ хардверу, али то је проблем гарантован за неке, без обзира на који прави програмски језик бих изабрао.

Наравно, могао сам да узмем приступ Доналда Кнутх-а и измислим свој сопствени (имагинарни) хардвер и инструкцију. . .

Питање 7

Испитајте следећи шематски дијаграм и програмски попис (написан у "псеудоцоде" а не формални програмски језик) како бисте утврдили који тип основне логичке функције се имплементира у овој јединици микроконтролера:

Објави Пин0 као излаз

Објасните Пин1 и Пин2 као улазе

ЛООП

Ако је Пин1 ЛОВ, поставите Пин0 ХИГХ

ЕЛСЕИФ Пин2 је ЛОВ, поставите Пин0 ХИГХ

ЕЛСЕ поставити Пин0 ЛОВ

ЕНДИФ

ЕНДЛООП

Открити одговор Сакриј одговор

Овај микроконтролер имплементира логичку НАНД функцију.

Напомене:

Иако се ова логичка функција могла имплементирати лакше и јефтиније у логичкој логичкој логици, сврха је да ученици помисле на обављање логичких операција помоћу секвенцираног скупа инструкција унутар програмабилног уређаја (МЦУ). Ово је концептуални прескок, основни, али врло важан.

У случају да се питате зашто пишем псеудокоде, ево неколико разлога:

Без претходног искуства са програмирањем потребним за разумевање псеудокода
Никада не излази из стила
Независно од хардвера
Нема синтаксних грешака

Да сам одлучио да покажем код који би заправо био у микроконтролеру, поставио бих питање застарелости. Овим путем, могу да комуницирам дух програма, а да не будем везан за стварни програмски стандард. Једини недостатак је што ће студенти морати да преведу моју псеудокоду у стварни код који ће заправо радити на њиховом специфичном МЦУ хардверу, али то је проблем гарантован за неке, без обзира на који прави програмски језик бих изабрао.

Наравно, могао сам да узмем приступ Доналда Кнутх-а и измислим свој сопствени (имагинарни) хардвер и инструкцију. . .

Питање 8

Испитајте следећи шематски дијаграм и програмски попис (написан у "псеудоцоде" а не формални програмски језик) како бисте утврдили који тип основне логичке функције се имплементира у овој јединици микроконтролера:

Објави Пин0 као излаз

Објасните Пин1 и Пин2 као улазе

ЛООП

Ако је Пин1 висок, поставите Пин0 ЛОВ

ЕЛСЕИФ Пин2 је ВИСОК, поставите Пин0 ЛОВ

ЕЛСЕ поставити Пин0 ХИГХ

ЕНДИФ

ЕНДЛООП

Открити одговор Сакриј одговор

Овај микроконтролер имплементира логичку НОР функцију.

Напомене:

Иако се ова логичка функција могла имплементирати лакше и јефтиније у логичкој логичкој логици, сврха је да ученици помисле на обављање логичких операција помоћу секвенцираног скупа инструкција унутар програмабилног уређаја (МЦУ). Ово је концептуални прескок, основни, али врло важан.

У случају да се питате зашто пишем псеудокоде, ево неколико разлога:

Без претходног искуства са програмирањем потребним за разумевање псеудокода
Никада не излази из стила
Независно од хардвера
Нема синтаксних грешака

Да сам одлучио да покажем код који би заправо био у микроконтролеру, поставио бих питање застарелости. Овим путем, могу да комуницирам дух програма, а да не будем везан за стварни програмски стандард. Једини недостатак је што ће студенти морати да преведу моју псеудокоду у стварни код који ће заправо радити на њиховом специфичном МЦУ хардверу, али то је проблем гарантован за неке, без обзира на који прави програмски језик бих изабрао.

Наравно, могао сам да узмем приступ Доналда Кнутх-а и измислим свој сопствени (имагинарни) хардвер и инструкцију. . .

Питање 9

Испитајте следећи шематски дијаграм и програмски попис (написан у "псеудоцоде" а не формални програмски језик) како бисте утврдили који тип основне логичке функције се имплементира у овој јединици микроконтролера:

Објави Пин0 као излаз

Објасните Пин1 и Пин2 као улазе

ЛООП

Ако је Пин1 исти као Пин2, подесите Пин0 ЛОВ

ЕЛСЕ поставити Пин0 ХИГХ

ЕНДИФ

ЕНДЛООП

Открити одговор Сакриј одговор

Овај микроконтролер имплементира логичку функцију Екцлусиве-ОР.

Напомене:

Иако се ова логичка функција могла имплементирати лакше и јефтиније у логичкој логичкој логици, сврха је да ученици помисле на обављање логичких операција помоћу секвенцираног скупа инструкција унутар програмабилног уређаја (МЦУ). Ово је концептуални прескок, основни, али врло важан.

У случају да се питате зашто пишем псеудокоде, ево неколико разлога:

Без претходног искуства са програмирањем потребним за разумевање псеудокода
Никада не излази из стила
Независно од хардвера
Нема синтаксних грешака

Да сам одлучио да покажем код који би заправо био у микроконтролеру, поставио бих питање застарелости. Овим путем, могу да комуницирам дух програма, а да не будем везан за стварни програмски стандард. Једини недостатак је што ће студенти морати да преведу моју псеудокоду у стварни код који ће заправо радити на њиховом специфичном МЦУ хардверу, али то је проблем гарантован за неке, без обзира на који прави програмски језик бих изабрао.

Наравно, могао сам да узмем приступ Доналда Кнутх-а и измислим свој сопствени (имагинарни) хардвер и инструкцију. . .

Питање 10

Микроконтролер је специјализовани тип дигиталног рачунара који се користи за обезбеђивање аутоматског секвенцирања или контроле система. Микроконтролери се разликују од обичних дигиталних рачунара јер су веома мали (обично један чип интегрисаних склопова), са неколико наменских игала за улаз и / или излаз дигиталних сигнала и ограниченом меморијом. Упутства која су програмирана у меморији микроконтролера говоре како реаговати на услове уноса и које врсте сигнала треба послати на излазе.

Најједноставнији тип сигнала "разумљен" од стране микроконтролера је дискретни напонски ниво: или "висок" (приближно + В) или "ниско" (приближно приземни потенцијал) мерен на одређеном пин на чипу. Транзистори који су унутар микроконтролера производе ове "високе" и "ниске" сигнале на излазним пиновима, а њихове акције су моделиране СПДТ прекидачима ради једноставности:

Не захтева пуно маште да визуализује како се микроконтролери могу користити у практичним системима: укључивање и искључивање спољашњих уређаја у складу са улазним пином и / или временским условима. Примјери укључују контролу уређаја (регулатори температуре пећнице, регулатори температуре), контролу аутоматског мотора (убризгавање горива, вријеме паљења, самодијагностички системи) и роботика (серво активирање, сензорска обрада, навигациона логика). У ствари, ако живите у индустријализованој нацији, вероватно имате неколико десетина микроконтролера (уграђених у разне уређаје) и чак ни не схватате!

Међутим, једно од практичних ограничења микроконтролера је њихова гранична струја ниског излаза: обично мање од 50 мА. Минијатуризација унутрашњег кола микроконтролера забрањује укључивање излазних транзистора са било којим значајним рејтингом снаге и зато морамо повезати транзисторе са излазним затварачима како би возили било које значајно оптерећење.

Претпоставимо да желимо да микроконтролер покреће електромагнетни вентил активиран ДЦ, који захтијева 2 ампера струје на 24 волта. Једноставно решење би било коришћење НПН транзистора као "интерпосинг" уређаја између микроконтролера и соленоидног вентила овако:

Нажалост, само један БЈТ не обезбеђује довољно струје да активира соленоид. Са 20 мА излазне струје од пинова микроконтролера и β од само 25 (типично за транзистор снаге), ово само обезбеђује око 500 мА за соленоидну намотај.

Решење овог проблема укључује два биполарна транзистора у аранжману Дарлингтон пар :

Међутим, постоји још једно решење - замените јединствени БЈТ са једним МОСФЕТ-ом, који уопште не захтева струју погона. Покажите како се ово може учинити:

Открити одговор Сакриј одговор

Напомене:

Сврха овог дугогодишњег питања није само да ученици схвате како замијенити БЈТ са МОСФЕТ-ом, већ их упознати са концептом микроконтролера који је уређај све већег значаја у савременим електронским системима.

Неки ученици могу се распитати о сврси диоде у овом кругу. Објасните им да је ово комутирајућа диода, понекад звана диода слободног котла, која је неопходна како би се спречило преоптерећење транзистора високонапонским транзијентима произведеним од стране соленоидног завојница када је био напуњен ("индуктивни повратни удар").

Питање 11

Микроконтролер се користи за обезбеђивање аутоматске корекције фактора снаге за АЦ оптерећење:

Испитајте овај шематски дијаграм, а затим одговорите на следећа питања:

Како микроконтролер може осетити фактор снаге АЦ оптерећења "# 11"> Открити одговор Сакриј одговор

Допустићу вам и вашим колегама да разговарају о томе како МЦУ може открити фактор снаге. За то је више валидних решења!

Оба кондензатора од 20 μФ и 80 μФ би били ангажовани: МЦУ излаз ДЦБА би био 0101 (обратите пажњу на то да се излази морају спустити да би активирали своје релеје!). Са овим резултатом, кориговани фактор снаге би био 0, 99939 умјесто оригиналног 0, 77.

Напомене:

Ово питање поставља неке занимљиве концепте за преглед, као и синтетизовање старих и нових концепата у електроници које ваши студенти могу размотрити. Обавезно оставите довољно времена за дискусију о овом питању, као и било каквом потребном времену прегледа за израчунавање фактора снаге!

Питање 12

Овај микроконтролер је програмиран да варира осетљивост светла ЛЕД помоћу импулзне ширине модулације (ПВМ) контроле излаза пин 0:

Објави Пин0 као излаз

Декларишите Кс као целовиту варијаблу

ЛООП

Поставите Пин0 ЛОВ

Паузирај за 100 - Кс микросекунди

Поставите Пин0 ХИГХ

Паузирај за Кс микросекунде

ЕНДЛООП

Утврдите која вредност Кс мора да постави осветљеност ЛЕД-а на 80%, као и која је фреквенција ПВМ сигнала.

Открити одговор Сакриј одговор

На ово питање је најбоље одговорити цртањем временског дијаграма излаза Пин 0, узимајући у обзир вријеме од 100 - Кс μс и Кс μс.

Следеће питање: шта је резолуција ове ПВМ контроле, с обзиром да је Кс интегрална варијабла "белешке скривене"> Напомене:

Модулација ширине импулса (ПВМ) је врло чест и користан начин генерисања аналогног излаза из микроконтролера (или другог дигиталног електронског кола) који може да емитује само "висок" и "низак" напон. Са ПВМ-ом, време (или специфичнији радни циклус ) је аналогни домен, док је амплитуда дигитални домен. Ово нам омогућава да "снекнемо" аналогни сигнал путем дигиталног (он-офф) канала преноса података.

У случају да се питате зашто пишем псеудокоде, ево неколико разлога:

Без претходног искуства са програмирањем потребним за разумевање псеудокода
Никада не излази из стила
Независно од хардвера
Нема синтаксних грешака

Да сам одлучио да покажем код који би заправо био у микроконтролеру, поставио бих питање застарелости. Овим путем, могу да комуницирам дух програма, а да не будем везан за стварни програмски стандард. Једини недостатак је што ће студенти морати да преведу моју псеудокоду у стварни код који ће заправо радити на њиховом специфичном МЦУ хардверу, али то је проблем гарантован за неке, без обзира на који прави програмски језик бих изабрао.

Наравно, могао сам да узмем приступ Доналда Кнутх-а и измислим свој сопствени (имагинарни) хардвер и инструкцију. . .

Питање 13

Многи микроконтролери су опремљени уграђеном ПВМ функцијом, тако да не морате сами кодирати прилагођени ПВМ алгоритам. Ова чињеница указује на популарност модулације импулзне ширине као контролне шеме. Објасните зашто је ПВМ тако популаран и дао неколико практичних примјера како се може користити.

Открити одговор Сакриј одговор

Допустићу вам да урадите своја истраживања за ово питање! Одговор / и није тешко наћи.

Напомене:

Модулација ширине импулса (ПВМ) је врло чест и користан начин генерисања аналогног излаза из микроконтролера (или другог дигиталног електронског кола) који може да емитује само "висок" и "низак" напон. Са ПВМ-ом, време (или специфичнији радни циклус ) је аналогни домен, док је амплитуда дигитални домен. Ово нам омогућава да "снекнемо" аналогни сигнал путем дигиталног (он-офф) канала преноса података.

Питање 14

Модулација ширине импулса (ПВМ) није корисна само за генерисање аналогног излаза са микроконтролером, али је корисна и за пријем аналогног улаза кроз пин који рукује само он-офф (високим) дигиталним напонским нивоима. Следеће коло узима аналогни напонски сигнал у компаратор, генерише ПВМ, затим шаље тај ПВМ сигнал на улаз микроконтролера:

Објави Пин0 као улаз

Објави Ласт_Пин0 као боолеан варијаблу

Декларишите Тиме_Хигх као целовиту варијаблу

Објави Тиме_Лов као цјеловиту варијаблу

Декларисати Дути_Цицле као варијаблу са плутајућом тачком

Поставите Тиме_Хигх и Тиме_Лов како на нулу

ЛООП

Постави Ласт_Пин0 једнако Пин0

Ако је Пин0 ХИГХ, инкремент Тиме_Хигх за један

Ако је Пин0 ЛОВ, прираштај Тиме_Лов по један

Ако Ласт_Пин0 није једнак Пин0, идите на СУБРОУТИНЕ

ЕНДЛООП

СУБРОУТИНЕ

Сет Дути_Цицле једнако (Тиме_Хигх / (Тиме_Хигх + Тиме_Лов))

Поставите Тиме_Хигх и Тиме_Лов како на нулу

Вратите се у позивну петљу

ЕНДСУБРОУТИНЕ

Објасните како овај програм ради. Савет: Боолеан променљива Ласт_Пин0 се користи да би се открило када се стање Пин0 променило са 0 на 1 или од 1 до 0.

Открити одговор Сакриј одговор

Најситнији део овог програма је откривање функције Ласт_Пин0 варијабле и како то одређује када извршити подпрограм. Ја препоручујем да извршите "мисични експеримент" са спорим улазним сигналом квадратних таласа микроконтролеру, испитивањем како се варијабле Тиме_Хигх и Тиме_Лов повећавају са квадратним таласовим стањем.

Напомене:

Модулација ширине импулса (ПВМ) је врло чест и користан начин генерисања аналогног излаза из микроконтролера (или другог дигиталног електронског кола) који може да емитује само "висок" и "низак" напон. Овде видимо да се користи као облик модулације улазног сигнала. Са ПВМ-ом, време (или специфичнији радни циклус ) је аналогни домен, док је амплитуда дигитални домен. Ово нам омогућава да "снекнемо" аналогни сигнал путем дигиталног (он-офф) канала преноса података.

У случају да се питате зашто пишем псеудокоде, ево неколико разлога:

Без претходног искуства са програмирањем потребним за разумевање псеудокода
Никада не излази из стила
Независно од хардвера
Нема синтаксних грешака

Да сам одлучио да покажем код који би заправо био у микроконтролеру, поставио бих питање застарелости. Овим путем, могу да комуницирам дух програма, а да не будем везан за стварни програмски стандард. Једини недостатак је што ће студенти морати да преведу моју псеудокоду у стварни код који ће заправо радити на њиховом специфичном МЦУ хардверу, али то је проблем гарантован за неке, без обзира на који прави програмски језик бих изабрао.

Наравно, могао сам да узмем приступ Доналда Кнутх-а и измислим свој сопствени (имагинарни) хардвер и инструкцију. . .

Питање 15

Дигитални рачунари комуницирају са спољним уређајима преко портова : скупови терминала који се обично налазе у групама од 4, 8, 16 или више (4 бита = 1 ниббле, 8 бита = 1 бајт, 16 бита = 2 бајта). Ови терминали могу бити подешени на висока или ниска логичка стања писањем програма за рачунар који шаље нумеричку вриједност порту. На примјер, овдје је илустрација микроконтролера који је упућен да шаље хексадецимални број Ф3 порту А и 2Ц на порт Б:

Претпоставимо да смо жељели да користимо горња четири бита порта А (игле 7, 6, 5 и 4) да бисте покренули калемове корачног мотора у овом осамостепеном низу:

Корак 1:
0001
Корак 2:
0011
Корак 3:
0010
Корак 4:
0110
Корак 5:
0100
Корак 6:
1100
Корак 7:
1000
Корак 8:
1001

Пошто сваки пиштољ иде високо, он управља погоном МОСФЕТ-а, који шаље струју кроз одговарајућу завојницу корачног мотора. Пратећи "схифт" секвенцу као што је приказано, мотор ће ротирати малу количину за сваки циклус.

Напишите потребан низ бројева који ће бити послати на порт А да бисте генерирали овај специфичан редослед битних смјена, у хексадецималном. Оставите ниже четири бита порта А у стању ниског логичког стања.

Открити одговор Сакриј одговор

Корак 1:
10 16
Корак 2:
30 16
Корак 3:
20 16
Корак 4:
60 16
Корак 5:
40 16
Корак 6:
Ц0 16
Корак 7:
80 16
Корак 8:
90 16

Следеће питање: написати исту секвенцу у децималном, а не хексадецималном:

Корак 1:
Корак 2:
Корак 3:
Корак 4:
Корак 5:
Корак 6:
Корак 7:
Корак 8:

Напомене:

Иако корен овог питања није ништа друго него конверзија бинарно-хексадецималном, он такође упознаје студенте са концептом контроле битних стања у микрорачунарским портовима пишући хек вредности. Као такво, ово питање је врло практично!

У случају да студенти питају, нека знају да се префикс за знак долара понекад користи за означавање хексадецималног броја. У другим временима користи се префикс 0к (нпр., $ Ф3 и 0кФ3 значе исту ствар).

Питање 16

Испитајте следећи шематски дијаграм и програмски попис (написан у "псеудоцоде" а не формални програмски језик) како бисте утврдили који тип основне логичке функције се имплементира у овој јединици микроконтролера:

Објави Пин0 као излаз

Објасните Пин1 и Пин2 као улазе

ЛООП

Ако је Пин1 исти као Пин2, подесите Пин0 ХИГХ

ЕЛСЕ поставити Пин0 ЛОВ

ЕНДИФ

ЕНДЛООП

Открити одговор Сакриј одговор

Овај микроконтролер имплементира логичку функцију Екцлусиве-НОР.

Напомене:

Иако се ова логичка функција могла имплементирати лакше и јефтиније у логичкој логичкој логици, сврха је да ученици помисле на обављање логичких операција помоћу секвенцираног скупа инструкција унутар програмабилног уређаја (МЦУ). Ово је концептуални прескок, основни, али врло важан.

У случају да се питате зашто пишем псеудокоде, ево неколико разлога:

Без претходног искуства са програмирањем потребним за разумевање псеудокода
Никада не излази из стила
Независно од хардвера
Нема синтаксних грешака

Да сам одлучио да покажем код који би заправо био у микроконтролеру, поставио бих питање застарелости. Овим путем, могу да комуницирам дух програма, а да не будем везан за стварни програмски стандард. Једини недостатак је што ће студенти морати да преведу моју псеудокоду у стварни код који ће заправо радити на њиховом специфичном МЦУ хардверу, али то је проблем гарантован за неке, без обзира на који прави програмски језик бих изабрао.

Наравно, могао сам да узмем приступ Доналда Кнутх-а и измислим свој сопствени (имагинарни) хардвер и инструкцију. . .

Питање 17

Дигитални рачунари комуницирају са спољним уређајима преко портова : скупови терминала који се обично налазе у групама од 4, 8, 16 или више. Ови терминали могу бити подешени на висока или ниска логичка стања писањем програма за рачунар који шаље нумеричку вриједност порту. На пример, овде је илустрација микроконтролера на који се поручује да шаље хексадецимални број 2Б на порт А и А9 до порта Б:

Претпоставимо да смо желели да користимо првих седам бита сваког порта (пинова од 0 до 6) да бисмо водили два 7-сегментна, заједничка катодна дисплеја, умјесто да користимо БЦД-то-7-сегментне ИЦ декодере:

Напишите потребне хексадецималне вриједности које ће се излазити на портовима А и Б како бисте генерирали приказ "42" на двије 7-сегментне јединице за приказ.

Открити одговор Сакриј одговор

Лука А = 5Б 16 Лука Б = 66 16

Имајте на уму да су и следећи одговори валидни:

Лука А = ДБ 16 Лука Б = Е6 16

Следеће питање: написати ове исте нумеричке вредности у децималном, а не хексадецималном.

Напомене:

Корен овог питања је мало више од бинарне-хексадецималне конверзије, али такође упознаје студенте са концептом контроле битних стања у микрорачунарским портовима пишући хек вредности. Као такво, ово питање је врло практично! Иако је мало вероватно да ће неко изоставити БЦД-то-7-сегментне декодере приликом изградње двоцифреног децималног дисплеја (јер то на тај начин користи толико много драгоцјенијих И / О пинова микроконтролера), то је свакако могуће! Постоји много апликација, осим овога, гдје вам је потребан микроконтролер да изађете из одређене комбинације високих и ниских стања, а најбржи начин за програмирање је излазне вредности хекса на портове.

У случају да студенти питају, нека знају да се префикс за знак долара понекад користи за означавање хексадецималног броја. У другим временима користи се префикс 0к (нпр., $ Ф3 и 0кФ3 значе исту ствар).

Питање 18

Један од начина вожње пиксела на екрану заснованом на мрежи је да се пиксели упоређују у редове и колоне, а затим одаберите поједине пикселе за осветљавање пресечем одређене линије редова и одређене линије колона. У овом примеру контролишемо 8 × 8 мрежу ЛЕД-ова са два 8-битна (1-бајт) порта микроконтролера:

Имајте на уму да је потребан висок ниво стања на једном од затварача порта Б за активирање реда, а низак ниво стања је потребан на једном од пинова порта А за активирање колоне, јер се ЛЕД аноде повезују на порт А и ЛЕД катоде се повезују на порт Б.

Одредите хексадецималне кодове које бисмо требали излазити на портовима А и Б како би енергију ЛЕД-а у далеко доњем левом углу 8 × 8 мреже.

Лука А =

Лука Б =

Открити одговор Сакриј одговор

Порт А = $ ФЕ

Лука Б = 80 долара

Напомене:

Питање 19

Испитајте следећи шематски дијаграм и програмски попис (написан у "псеудоцоде" а не формални програмски језик) како бисте утврдили који тип основне логичке функције се имплементира у овој јединици микроконтролера:

Објави Пин0 као излаз

Објасните Пин1, Пин2 и Пин3 као улазе

ЛООП

Ако је Пин1 висок, поставите Пин0 ХИГХ

ЕЛСЕИФ Пин2 је висок, поставите Пин0 ХИГХ

ЕЛСЕИФ Пин3 је ВИСОК, поставите Пин0 ХИГХ

ЕЛСЕ поставити Пин0 ЛОВ

ЕНДИФ

ЕНДЛООП

Открити одговор Сакриј одговор

Овај микроконтролер имплементира логичну ИЛИ функцију са 3 улаза.

Напомене:

Иако се ова логичка функција могла имплементирати лакше и јефтиније у логичкој логичкој логици, сврха је да ученици помисле на обављање логичких операција помоћу секвенцираног скупа инструкција унутар програмабилног уређаја (МЦУ). Ово је концептуални прескок, основни, али врло важан.

У случају да се питате зашто пишем псеудокоде, ево неколико разлога:

Без претходног искуства са програмирањем потребним за разумевање псеудокода
Никада не излази из стила
Независно од хардвера
Нема синтаксних грешака

Да сам одлучио да покажем код који би заправо био у микроконтролеру, поставио бих питање застарелости. Овим путем, могу да комуницирам дух програма, а да не будем везан за стварни програмски стандард. Једини недостатак је што ће студенти морати да преведу моју псеудокоду у стварни код који ће заправо радити на њиховом специфичном МЦУ хардверу, али то је проблем гарантован за неке, без обзира на који прави програмски језик бих изабрао.

Наравно, могао сам да узмем приступ Доналда Кнутх-а и измислим свој сопствени (имагинарни) хардвер и инструкцију. . .

Питање 20

Ученик гради круг микроконтролера да укључи ЛЕД једном за сваких пет активација улазног прекидача. Коло је једноставно, а микроконтролер користи условну петљу да повећава променљиву сваки пут када се прекидач притисне:

Објави Пин0 као излаз

Објави Пин1 као улаз

Декларишите Кс као целовиту варијаблу

ЛООП

Док је Пин1 висок

Додај 1 до Кс (Кс = Кс + 1)

ЕНДВХИЛЕ

Ако је Кс једнак 5, поставите Пин0 ХИГХ и подесите Кс на 0

ЕЛСЕ поставити Пин0 ЛОВ

ЕНДИФ

ЕНДЛООП

Нажалост, програм се не извршава према плану. Уместо да се ЛЕД диода понавља сваких пет прекидача, чини се да се случајно појављује када је прекидач ослободјен. Понекад се ЛЕД лампица укључује након првог активирања прекидача, док је у другим тренуцима потребно више од пет потисака прекидача како би се укључио.

Након неке пажљиве анализе, студенту се јавља да је проблем лежи у петљи ВХИЛЕ. Будући да је микроконтролер много бржи од људске руке, та петља се извршава много пута док се прекидач притиска, а не само једном, што значи да променљива Кс броји од 0 до 5 много пута за свако активирање прекидача. Тада је случајно, да ће Кс бити једнак пету након што иза петље ВХИЛЕ.

Оно што студенту треба да пређе на повећање за 1 само за прекид транзита искључивања: на позитивној ивици импулса. Проблем је како то радити помоћу програмирања.

Други студент, када се суочио са истим проблемом, одлучио је да то реши овако и радио је у реду:

Објави Пин0 као излаз

Објави Пин1 као улаз

Декларирајте Свитцх као Боолеан (0 или 1) варијаблу

Декларишите Ласт_Свитцх као Боолеан (0 или 1) варијаблу

Декларишите Кс као целовиту варијаблу

ЛООП

Постави Ласт_Свитцх једнако на Свитцх

Поставите прекидач једнако Пин1

ИФ Свитцх = 1 и Ласт_Свитцх = 0 ТХЕН адд 1 то Кс (Кс = Кс + 1)

ЕЛСЕ не чини ништа Кс

ЕНДИФ

Ако је Кс једнак 5, поставите Пин0 ХИГХ и подесите Кс на 0

ЕЛСЕ поставити Пин0 ЛОВ

ЕНДИФ

ЕНДЛООП

Објасните како овај програм успешно увећава Кс само на сваком прелазу прекидача тастера док је други програм брзо увећава Кс током трајања притиска дугмета.

Открити одговор Сакриј одговор

Кључ за разумевање начина на који овај алгоритам ради је да реализује варијаблу Ласт_Свитцх увијек ће бити једна скенирање (извршење петље) иза варијабле Свитцх.

Питање изазова: да ли је важно где у програму следеће две речи иду "белешке скривене"> Напомене:

Овај алгоритам детекције импулса се врло често користи у програмима који се баве стварним уључним улазним улазима. Она обавља у софтверу оно што мрежа за откривање пулсева ради унутар флип-флопова који покрећу ивице, за исти ефекат: да покрене неку врсту радње само на ивици импулсног сигнала.

  • ← Претходни радни лист

  • Индек листова

  • Следећи радни лист →