Lai ienāktu
Visi datoru noslēpumi iesācējiem un profesionāļiem
  • Labākais spēlētājs World of Tanks
  • Modifikācijas no Nikitos WoT
  • Lejupielādēt testa serveri Kā lejupielādēt testa serveri 0
  • Vienkāršs regulējams stabilizēts barošanas avots
  • Ko darīt, ja radiators ir noņemts no procesora Kā noņemt dzesētāju no procesora
  • RGB gaismas diodes: kā tās darbojas, iekšējā struktūra, kā savienot, RGB-led un Arduino kontrolieris LED lentes ieslēgšanai
  • Programma Assembly valodā Algorithm Builder programmatūras vidē. Pēc tam izstrādātās ierīces veiktspēja tika pārbaudīta programmatūras proteus vidē. AVR algoritmu veidotājs, darba sākšana Grafiskais montētājs AVR taimeru programmēšana n

    Programma Assembly valodā Algorithm Builder programmatūras vidē.  Pēc tam izstrādātās ierīces veiktspēja tika pārbaudīta programmatūras proteus vidē.  AVR algoritmu veidotājs, darba sākšana Grafiskais montētājs AVR taimeru programmēšana n

    Es domāju, ka mūsu laikos nav neviena radioamatiera, kurš nekad nebūtu saskāries ar mikrokontrolleriem. Agrāk vai vēlāk, bet tas notiek. Kad es pirmo reizi ieraudzīju ķēdi ar mikrokontrolleri, es nekavējoties aizvēru pārlūkprogrammas lapu ar domu: "Ak, es joprojām nevaru to samontēt." Bet pagāja laiks, parādījās arvien vairāk ķēžu, kurās izmantoja mikrokontrollerus, un es beidzot nolēmu sākt. Patiesībā viss izrādījās nemaz tik grūti, kā es domāju.

    Vispirms izdomāsim: kas vispār ir mikrokontrolleris (MCU)? Būtībā tas ir miniatūrs dators, kas paredzēts vienkāršu uzdevumu veikšanai. Viss nepieciešamais mikrokontrollera darbībai atrodas vienā korpusā. Mikrokontrolleram ir dažādas perifērijas ierīces – ievades/izvades porti, taimeri, sakaru saskarnes u.c. Mikrokontrolleram ir trīs veidu atmiņa: RAM (brīvpiekļuves atmiņa), FlashROM (programmas atmiņa), EEPROM (nepastāvīgā atmiņa).

    Galvenā atšķirība starp mikrokontrolleru un parasto mikroshēmu ir tāda, ka mikrokontrolleris nedarbojas pēc rūpnīcā uzstādītas stingras loģikas, bet ir ieprogrammēts. Programma klasiski tiek rakstīta īpašā vidē datorā vienā no programmēšanas valodām, pēc tam tā tiek tulkota mašīnvalodā (kompilēta) un ierakstīta kontrollera atmiņā. Šajā kursā viss būs nedaudz savādāk – programma netiks rakstīta, bet burtiski zīmēta blokshēmas veidā. Pateicoties šai pieejai, programma izskatās skaidrāka, un programmas izstrādes laiks tiek samazināts 3-5 reizes, salīdzinot ar klasiskajām programmēšanas metodēm.

    Algorithm Builder - programmēšanas vide

    Algorithm Builder veic pilnu izstrādes ciklu, sākot no algoritma ievadīšanas, ieskaitot atkļūdošanas procesu un beidzot ar programmas ierakstīšanu atmiņā.

    Sāksim ar īsu programmas saskarnes pārskatu

    Galvenā izvēlne

    • Fails. Kalpo projektu un atsevišķu algoritmu atvēršanai, saglabāšanai, aizvēršanai, kā arī iziešanai no programmas.
    • Rediģēt. Darbības, kas saistītas ar algoritma rediģēšanu: izgriešana, kopēšana, izcelšana utt.
    • Displejs. Pārslēgšanās algoritms/tabula ar mainīgajiem (par to vairāk zemāk) + operāciju un nosacījumu šabloni.
    • Meklēt.Šeit nav jāskaidro.
    • Elementi. Algoritms ir izveidots no īpašiem elementiem: Teksts, virsotne, lauks, etiķete, stāvoklis, lietots (beznosacījuma) pārejas vektors, pielāgotājs. Tos visus iepazīsim apmācību procesā. Izvēlnē ir vēl vairāki svarīgi vienumi: Deaktivizēt, Makro, pārtrauc. Deaktivizēt- šis komponents netiks apkopots. Makro- lai izveidotu makro. Pārtrauc- satur visu mikrokontrollera pārtraukumu nosaukumu sarakstu. Par šo funkciju jūs uzzināsit turpmākajās nodarbībās, bet tagad tikai teikšu, ka tā ir ārkārtīgi svarīga un darbam nepieciešama lieta.
    • Programma. Ar programmu saistītās darbības - kompilācija (tulkošana mašīnvalodā), programmas simulācija, nolasīšanas kontrollera atmiņa (Flash un EEPROM) utt.
    • Iespējas. Projekta un vides iestatījumi.
    • ?. Algoritm Builder informācija un palīdzība.

    Rīkjosla

    Paskaidrojums nav vajadzīgs. Virzot kursoru virs paneļa elementiem, tiek parādīti rīka padomi.

    Atvērts projekts

    Šeit ir kāda īpatnība. Jūs nevarat atvērt divus projektus vienlaikus. Lai atvērtu/izveidotu jaunu projektu, ir jāaizver vecais. Pēc projekta atvēršanas varat atvērt/izveidot tikai atsevišķu algoritma failu. Projekta failam ir paplašinājums .alp, bet atsevišķa algoritma faila paplašinājums ir .alg

    Darbs ar mainīgajiem un konstantēm

    Tas ir sakārtots īpašas tabulas veidā (to var pārslēgt, izmantojot taustiņu F12, izmantojot izvēlni vai taustiņu rīkjoslā). Tādējādi pats algoritms tiek atbrīvots no nevajadzīgiem ierakstiem.

    Milzīgs skaits etiķešu, pateicoties kurām ir iespējamas pārejas no vienas programmas daļas uz citu, ievērojami pārblīvē kodu, un tiek zaudēta programmas skaidrība. Programmā Algorithm Builder pārejas ir daudz vienkāršākas — ar bultiņu (vektoru). Taču ir iespējamas arī pārejas pa nosauktajām etiķetēm.

    Programmas darbības simulācija

    Simulators parāda visas izmaiņas, kas notiek virtuālajā mikrokontrollerī. Lai pārbaudītu programmas darbību, jums pat nav jāiegādājas mikrokontrolleris! Simulāciju var veikt soli pa solim (ar vai bez funkciju ievadīšanas), līdz iestatītam pārtraukuma punktam vai izvēlētam apgabalam.

    Atkļūdošana

    Algorithm Builder ir mikroshēmas atkļūdošanas sistēma (On Chip debug), kas ļauj novērot reāla mikrokontrollera atmiņas saturu noteiktos punktos. Šajā gadījumā saziņai ar datoru tiek izmantota tikai viena mikrokontrollera kāja un pēc lietotāja izvēles. Monitora atkļūdošanu var izmantot gandrīz jebkuram mikrokontrolleram. Šī ir debugWIRE protokola programmatūras versija.

    Tātad, kāpēc Algorithm Builder ir maz pazīstams radioamatieru vidū? Pirmkārt, līdz 2010. gadam programma tika apmaksāta. Mūsdienās programmatūra tiek izplatīta pilnīgi brīvi. Otrkārt, oficiālā atbalsta trūkums programmai. Jūs neatradīsiet neviena ražotāja apnot, kas izmanto Builder. Šai programmai veltītos interneta resursus var saskaitīt uz vienas rokas rokas.

    Par to ir vērts mazliet parunāt nepieciešamie materiāli un instrumenti

    Pirmā lieta, kas jums nepieciešama, ir lodāmurs. Radioamatieru galvenais instruments. Lodāmura jaudai jābūt diapazonā no 30 līdz 60 W. Kāpēc nevar būt vairāk? Jaudīgs lodāmurs vairāk uzkarst un sabojā dēļa pēdas un nolietotās detaļas. Un tas nav tik ērti lodēšanai - šāds lodāmurs ir daudz lielāks un smagāks.

    Lai ielādētu programmu nepieciešamajā mikrokontrollerī programmētājs- vienkāršākajā versijā tas sastāv tikai no dažiem rezistoriem un diodēm (uz LPT un COM portu). Ja datorā nav COM vai LPT porta, USB programmētāju var pasūtīt DealExtreame vai (Meklēšanas vaicājums "AVR programmētājs"; maksā apmēram 4-6 USD). Par programmētāja izvēli un komplektēšanu rakstīšu nākamajā nodarbībā.

    Specifiskas īpatnības:

    • Atbalstītās operētājsistēmas: Windows 95/98/2000/NT/ME/XP
    • Licence: bezmaksas programmatūra
    • Interfeisa valoda: angļu, krievu
    • Programmēšanas valodas: grafiskais montētājs
    • Galvenās funkcijas:
      • grafiskā programmas koda redaktors
      • kompilators
      • simulators ieviestā algoritma atkļūdošanai
      • programmēšana caur COM portu, izmantojot vienkāršu adapteri (7 rezistori, 3 diodes; diagrammu skatiet dokumentācijā)
      • algoritma atkļūdošana mikroshēmā, izmantojot vēl vienkāršāku adapteri (1 vai 2 diodes, 2 vai 4 rezistori; skatiet diagrammas dokumentāciju)
    • Interneta atbalsta adrese: http://algrom.net/russian.html

    Apraksts:

    Algorithm Builder ir bezmaksas vide (bezmaksas programmatūras izplatīšanas noteikumi) AVR MK, kas nodrošina pilnu programmaparatūras izstrādes ciklu, t.sk. posmi, piemēram, algoritma ievade, atkļūdošana un programmēšana ķēdē. Programmas izstrādi var veikt gan montētāja līmenī, gan makro līmenī, kurā ir iespējams strādāt ar mainīgiem patvaļīga garuma daudzumiem. Tas tuvina programmēšanas iespējas augsta līmeņa valodai.

    Algorithm Builder atšķirīgā iezīme ir iespēja ievadīt programmu grafiski, algoritma veidā ar koka struktūru. Rezultātā visa programmas loģiskā struktūra kļūst pilnīgi skaidra. Šī programmēšanas metode ir pēc iespējas tuvāka cilvēka uztveres dabai, un tāpēc to ir daudz vieglāk apgūt, salīdzinot ar klasisko montētāju. Paredzamais programmaparatūras izveides laika samazinājums salīdzinājumā ar klasisko montētāju ir 3-5 reizes.

    Vide ir paredzēta darbam operētājsistēmā Windows 95/98/2000/NT/ME/XP. Normālai redaktora darbībai ir nepieciešams fonts "Courier".

    Faili lejupielādei:

    • AT90 sērija
      • AT90CAN128, AT90PWM3, AT90S1200, AT90S2313, AT90S2323, AT90S2333, AT90S2343, AT90S4414, AT90S4433, AT90SAT90S4433, AT90S490US5,590AT40 B64, AT90USB82, AT 90USB128, AT90USB162
    • ATmega sērija
      • ATmega8, ATmega16, ATmega32, ATmega48, ATmega64, ATmega88, ATmega103, ATmega128, ATmega161, ATmega162, ATmega163, ATmega164P, ATmega164Pga,3,2ATmegame16 ATmega325, ATmega328P, ATme ga603, ATmega640, ATmega644, ATmega644P, ATmega645, ATmega1280, ATmega1281 , ATmega1284P, ATmega2560, ATmega2561, ATmega3250, ATmega6450, ATmega8515, ATmega8535
    • ATtiny
      • ATtiny10, ATtiny11, ATtiny12, ATtiny13, ATtiny15, ATtiny22, ATtiny24, ATtiny25, ATtiny26, ATtiny28, ATtiny44, ATtiny45, ATtiny84, ATtinyATtiny 26,1,6,6,6 mazs2313

    4.Tehniskās prasības.

    Šim mikroelektroniskajam relejam ir noteikti tehniskie dati.

    Šim mikroelektroniskajam relejam ir viens normāli aizvērts (aizmugurējais) un viens normāli atvērts (priekšējais) kontakts divu pulsējošu strāvas slodžu pārslēgšanai.

    Pielietojot ārējo maiņspriegumu ar frekvenci 25, 50 un 75 Hz, darbība tiek nodrošināta diapazonā no 0,8V līdz 10V.

    Darba spriegums maiņstrāvai ar frekvenci 25, 50 un 75 Hz ir (2,9-3,2) V, un izkrišanas spriegums ir (2,1-2,3) V.

    Piezīme: Iedarbināšana - aizmugurējā kontakta atvēršana un priekšējā kontakta aizvēršana. Dropout – priekšējā kontakta atvēršana un aizmugures kontakta aizvēršana.

    Indikators ar kopēju anodu tiek izmantots, lai parādītu informāciju par ieejas spriegumu.

    Kontakti pārslēdz spriegumu līdz 30V.

    Informācijas atjaunināšanas ātrums uz indikatora notiek ik pēc 12,8 ms.

    Viduspunkta taisngriezi izmanto, lai iztaisnotu ieejas spriegumu.

    5.Elektroniskā releja funkcionālā shēma.

    Impulsu mikroelektronisko releju var iedalīt vairākās funkcionālās vienībās. Šī releja funkcionālā shēma ir parādīta 5. attēlā. Pēc funkcionālā mērķa diagrammā var atšķirt:


    • Taisngriezis ir veidots saskaņā ar ķēdi ar kopīgu punktu.

    • Mikroprocesors (MP).

    • Indikators ir paredzēts informācijas parādīšanai.

    • Optocoupler pāris.
    Taisngriezis ir paredzēts analogā signāla izlabošanai, kas nonāk tā ieejā. Savukārt analogais signāls nāk no aizsargfiltra bloka vai cita analoga elementa un ir maiņspriegums ar frekvenci 25, 50 vai 75 Hz. No taisngrieža izejas mēs iegūstam rektificētu spriegumu, kas tiek piegādāts mikroprocesoram.

    Mikroprocesors veic programmā norādītās funkcijas. Nokļūstot līdz mikroprocesora ieejai no taisngrieža izejas, rektificēto spriegumu sāk analizēt, izmantojot mikroprocesorā iebūvēto ADC. Pēc tam mikroprocesors aprēķina izmērītā sprieguma vidējo vērtību un parāda to uz indikatora. Optocoupler pāri ir pievienoti arī vienai no izejām. Tie ir analogi

    5. att. Mikroelektroniskā automātiskās bloķēšanas releja funkcionālā shēma

    Releja kontakti. Atkarībā no reakcijas sliekšņa signāls parādās vienā no optrona pāriem.

    Indikators ļauj uzraudzīt spriegumu, kas nāk uz mikroelektronisko releju. Tas ļauj apkopes personālam izmērīt un novērot mikroelektroniskā releja darbību.

    Tranzistoru optopārvadi, kas sastāv no izstarojošas diodes, kuru pamatā ir arsēna-gallija-alumīnija savienojums, un kompozītmateriāla silīcija fototranzistora. Paredzēts lietošanai kā slēdzis radioelektronisko iekārtu galvaniski izolētās elektriskās ķēdēs. Pieejams metāla korpusā. Ierīces svars ir ne vairāk kā 1,5 g.

    6.Darba algoritms.

    Lai izveidotu mikroelektronisko releju, ir jānosaka galvenais uzdevums. Vispirms jums ir jākonfigurē mikroprocesors, jākonfigurē visi ievades-izejas porti, jāiestata taimeris un ADC. Pēc tam sākas galvenais uzdevums, kas ir informācijas apkopošana, izmantojot ADC, pēc tam mēs analizējam saņemtos datus un parādām tos. Displejā, savukārt, vajadzētu parādīt ieejas sprieguma decimālvērtību. Detalizētāks darbības algoritms ir parādīts 6. attēlā.

    Programmas algoritms sastāv no piecām apakšprogrammām:


    • Mikroprocesora iestatīšana

    • ADC apakšprogramma

    • Taimera rutīna

    • Displeja apakšprogramma

    • Sadalīšanas apakšprogramma
    Apskatīsim, kā darbojas mikroprocesora iestatījumi. Pirmkārt, mēs iestatām kaudzes sākotnējo vērtību. Pēc tam mēs konfigurējam ADC. Šeit mēs uzstādām SK/128 prescaler un iestatām nepārtrauktas pārveidošanas režīmu, kad reklāmguvumi tiek palaisti nepārtraukti noteiktos laika intervālos. Pēc tam iestatām taimeri. Mēs iestatījām STS darbības režīmu (atiestatīt nejaušības gadījumā). Šajā režīmā pēc salīdzināšanas reģistrā ierakstītās vērtības sasniegšanas skaitīšana turpinās no vērtības “$00”. Tajā pašā ciklā, kad vērtības tiek atiestatītas, notiek taimera pārtraukums. Pēc tam mēs uzstādām pārtraukumu, ko iedarbina pārplūde. Pēc tam tiek konfigurēti ievades/izvades porti. Tālāk mēs iestatām visas karoga vērtības, norādes vietu, summas vērtību, dalītāju un koeficienta nulles vērtību. Un mēs iespējojam globālo pārtraukumu, kuram mēs iestatām i karogu uz vienu. Pēc mikroprocesora iestatīšanas sākas mūsu programma. Lai to izdarītu, mēs uzstādām nosacījumu t=1. Kamēr t vērtība nav vienāda ar vienu, notiek cikls, tiklīdz tas kļūst par vērtību viens, programma iet pa labi, kur tā dodas uz indikācijas apakšprogrammu un pēc tās izpildes karogu t uzstāda uz nulli un vēlreiz ciklā atkal aizveras. Visas nākamās apakšprogrammas iziet pārtraukumā un atgriezīsies šajā cilpā, pārbaudot t karogu.

    Tagad apskatīsim ADC apakšprogrammu. Tā kā mēs iepriekš konfigurējām ADC un teicām, ka pāreja uz ADC apakšprogrammu tiek veikta, pārtraucot noteiktu pulksteņa impulsu vērtību. Tā kā pēc mikroprocesora iestatīšanas mūsu programma griezās cilpā, kurā tika pārbaudīta t karoga vērtība, un kopā ar to tika skaitītas mikroprocesora ģeneratora pulksteņa ciklu vērtības. Pēc noteiktas pulksteņa impulsu vērtības sasniegšanas notiek pārtraukums un programma pāriet uz ADC apakšprogrammu. Tiklīdz mēs uz to pārgājām, mēs izmērījām ieejas sprieguma vērtību. Lai saglabātu šo vērtību, mēs izmantojam divus reģistrus Yl (zems), lai saglabātu zemos baitus un Yh (augstos), lai saglabātu augstus baitus. Pēc tam mēs pārbaudām t karoga vērtību, ja tā ir vienāda ar nulli, tad ir nepieciešams parādīt vērtību, un, ja t karogs ir viens, tad tas nozīmē, ka ir iespējams konvertēt ADC vērtību decimāldaļās formā. Pēc tam mēs salīdzinām izmērītā sprieguma sliekšņa vērtību; ja šī vērtība pārsniedz 0,8 V slieksni, mēs ierakstām šo vērtību reģistrā un pievienojam to ar nākamajiem mērījumiem. Katru reizi, kad pievienojam ADC vērtības, mēs palielinām dalītāja vērtību par vienu. Pēc tam pārbaudām dalītāja vērtību un ja tā vērtība ir 255, tad ir nepieciešams atiestatīt summas dalītāja vērtību, bet, ja dalītājs nav sasniedzis vērtību 255, tad ADC apakšprogramma iziet.

    Bet, ja pēc salīdzināšanas ADC vērtība ir zem 0,8 V sliekšņa, tad programma iet pa labi un tad mēs izslēdzam ADC. Tas ir nepieciešams, lai indikatorā varētu parādīt sprieguma vērtību. Tad mēs analizējam dalītāja vērtību un, ja tā nav vienāda ar nulli, tad pievienojam ADC vērtības un palielinām dalītāju par vienu. Tad mēs pārejam uz sadalīšanas apakšprogrammu. Tas ir nepieciešams, lai aprēķinātu vidējo sprieguma vērtību. Bet, ja dalītāja vērtība ir nulle, tad programma lec uzreiz pēc dalīšanas apakšprogrammas. Pēc tam mēs salīdzinām ADC reakcijas sliekšņa vērtību un, ja tā ir lielāka par slieksni, tad ievades-izejas portā izvadām vienu vērtību, kas atbilst priekšējā kontakta darbībai un aizvēršanai, un, ja vērtība ir mazāka par reakcijas slieksni, tad uz portu tiek izvadīta nulles vērtība, kas atbilst aizmugures kontakta slēgšanai. Tad mēs iestatām dalītāja vērtību un t karogu uz nulli. Mēs arī atiestatām ADC vērtību un ieslēdzam to un izejam no ADC apakšprogrammas.

    Tālāk apsveriet sadalīšanas apakšprogrammu, pāreja uz kuru atrodas ADC apakšprogrammā. Sadalīšanas rutīna ir nepieciešama, lai aprēķinātu izmērītā sprieguma vidējo vērtību. Dalīšanas programma ir dalītāja vērtības secīga atņemšana no visu ADC vērtību summas. Šīs atņemšanas reižu skaits būs vidējā vērtība, tas ir, koeficients. Apskatīsim pašu šīs darbības algoritmu. Pēc pāriešanas uz apakšprogrammu atiestatām koeficienta vērtību, pēc tam atzīmējam karogu C. Ja tā vērtība nav vienāda ar vienu, tad koeficienta vērtību palielinām par vienu un no visu summas atņemam dalītāja vērtību. ADC vērtības. Vērtība 1 tiek ierakstīta karogā C tikai pēc tam, kad summas vērtība kļūst mazāka par dalītāja vērtību. Tiklīdz vienība tiek ierakstīta karogā C, programma iziet no cilpas. Mēs ievadām iegūtā koeficienta vērtību X reģistrā un atiestatām summas vērtību. Tas pabeidz dalīšanas programmu un iziet no tās.

    Tāpat kā ADC apakšprogramma, pāreja uz taimera apakšprogrammu notiek, izmantojot noteiktu pulksteņa impulsu vērtību. Protams, pāreja uz taimera apakšprogrammu ar pārtraukumu notiek dažādos laikos ar pārtraukumu uz ADC apakšprogrammu. Attiecīgi tie netraucē viens otram. Taimera apakšprogrammā mēs pakāpeniski parādām informāciju uz indikatora. Tā kā mums ir četri cipari, mums ir jāparāda ciparu vērtības secīgi viens pēc otra. Lai to izdarītu, ir n, kurā mēs ierakstām vērtību no 0 līdz 3, kas atbilst katram ciparam. Pēc pārtraukuma pārejas programma sākas. Vispirms mēs pārbaudām n vērtību un, ja šī vērtība ir nulle, tad mēs virzāmies tālāk, kur mēs pieliekam nulli, lai izslēgtu ceturto iepazīšanos. Mēs izvadām numuru uz portu B. Pc tam ms piegdjam vienbu, lai apgaismotu pirmo iepazans. Rezultātā indikatorā iedegas pirmais cipars. Tad pāreja notiek gar etiķeti. Tālāk mēs palielinām n vērtību par vienu un izejam no apakšprogrammas. Pēc noteikta laika notiek vēl viens taimera pārtraukums un programma pāriet uz taimera apakšprogrammu, kur atkal salīdzinām vērtību n. Tā kā mēs to palielinājām par vienu, pāreja attiecīgi notiek, kad n ir vienāds ar vienu. Pēc tam tiek izslēgta pirmā iepazīšanās, otrā skaitļa vērtība tiek izvadīta uz portu B un tiek ieslēgta otrā iepazīšanās. Tad atkal notiek pāreja gar etiķeti, un n vērtība palielinās par vienu. Trešā un ceturtā cipara vērtība tiek parādīta tādā pašā veidā, bet, izvadot ceturto ciparu, mēs iestatām n vērtību uz nulli, lai turpmāk pirmā cipara izvade sāktu no jauna. Arī šeit mēs ierakstām vienu vērtību karogā t. Pēc tam, kad indikatorā tiek parādīts ceturtais cipars, programma iziet un sāk t karoga vērtības pārbaudes ciklu.

    Tā kā karodziņš t ir iestatīts uz vienu, notiek pāreja no karoga pārbaudes cikla, pēc kuras notiek pāreja uz indikācijas apakšprogrammu. Šajā apakšprogrammā mēs nosakām tūkstošu, simtu, desmitu un vieninieku vērtību, kā arī nosakām iegūtā cipara vērtību, lai to izvadītu uz portu B. Pēc pārejas uz displeja apakšprogrammu mēs iestatām globālā pārtraukuma aizliegumu. Pēc tam mēs atiestatām pagaidu reģistra vērtību. Tad salīdzinām vidējo ADC vērtību, kas atrodas Z reģistrā.Ja tā ir lielāka par tūkstoti, tad no Z reģistra atņemam 1000. Pēc atņemšanas temp reģistrā ievadām vienu. Vienību pievieno katru reizi, kad no Z tiek atņemts 1000. Temp reģistra saturs atbilst tūkstošu vērtībai. Tiklīdz reģistrs Z kļūst mazāks par 1000, programma turpinās. Pēc pārejas mēs pārrakstām temp reģistra vērtību r0 reģistrā un atiestatām uz nulli. Tad atkal salīdzinām Z reģistra vērtību un, ja tā ir lielāka par 100, tad no tā atkal atņemam 100. Ar katru atņemšanu temp reģistrā ievadām vienu. Tiklīdz Z reģistra vērtība kļūst mazāka par 100, programma virzās tālāk. Pēc tam mēs pārrakstām simtu vērtību reģistrā r1. Pēc tam mēs atiestatām pagaidu reģistra vērtību. Tad salīdzinām Z reģistra vērtību un ja tā ir lielāka par 10, tad no Z reģistra atņemam 10. Ar katru atņemšanu temp reģistrā ierakstām vienu. Tiklīdz reģistra Z vērtība kļūst mazāka par 10, programma virzās tālāk. Pēc tam atcerieties desmitnieku vērtību reģistrā r2. Atlikusī vērtība Z reģistrā ir vērtība, kas nosaka vienu vērtību. Šī vērtība tiek ierakstīta r3 reģistrā. Tagad tūkstošu, simtu, desmitu un vieninieku vērtības ir attiecīgi reģistros r0, r1, r2 un r3. Pēc tam Z reģistrā ievadām kodu tabulas adresi, kurā ir attēlojamo skaitļu nozīme. Ja mērījuma laikā tūkstošu vērtība ir nulle, tad nulles vērtība ir jānospiež nozīmīgākajā ciparā. Pēc tam ievadām pirmā cipara vērtību reģistrā r0, tad otrā cipara vērtību r1, tad trešā cipara vērtību r2 un pēdējā cipara vērtību reģistrā r3. Pēc tam mēs iespējojam globālo pārtraukumu. Tas pabeidz programmu un iziet no displeja apakšprogrammas. Pēc tam mēs iestatām t karogu uz 0 un viss sāk atkārtot. Šeit beidzas mikroprocesora programmas algoritms.

    7. Programmatūra.

    Pirms programmas rakstīšanas ir jāizvēlas mikroprocesors un jāapsver funkcijas, kuras tas veic. Veicot šo uzdevumu, ieteicams izmantot ATmega48 mikroprocesoru. Tās atšķirīgās iezīmes ir:


    • Augstas kvalitātes mazjaudas 8 bitu AVR mikrokontrolleris

    • Uzlabota RISC arhitektūra
    - 130 instrukcijas, no kurām lielākā daļa tiek izpildīta vienā pulksteņa ciklā

    32 8 bitu vispārējas nozīmes darba reģistri

    Pilnīgi statiska arhitektūra

    Veiktspēja līdz 16 MIPS pie 16 MHz

    Iebūvēts divu ciklu reizinātājs


    • Nepārtraukta programmu un datu atmiņa
    - 4 KB sistēmā programmējama Flash programmu atmiņa, kas spēj izturēt 10 000 rakstīšanas/dzēšanas ciklu

    Papildu sāknēšanas programmas sadaļa ar neatkarīgu aizsardzības bitu


    • Sistēmas programmēšana ar iebūvētu sāknēšanas programmu

    • reāla lasīšanas funkcija programmēšanas laikā
    - 256 baitu EEPROM, kas spēj izturēt 100 000 rakstīšanas/dzēšanas ciklu

    512 baitu iebūvētā SRAM atmiņa (statiskā RAM)

    Programmējama lasīšanas aizsardzība


    • Perifērās īpašības
    - Divi 8 bitu taimeri/skaitītāji ar atsevišķu priekšskalotāju un salīdzināšanas režīmu

    Viens 16 bitu taimeris/skaitītājs ar atsevišķu priekšskalu un salīdzināšanas un tveršanas režīmiem

    Reālā laika skaitītājs ar atsevišķu ģeneratoru

    Pieci PWM kanāli

    6 10 bitu kanāli

    2 8 bitu kanāli

    6 kanālu ADC ierīcēm PDIP pakotnē

    4 10 bitu kanāli

    2 8 bitu kanāli

    Programmējamās sērijas USART

    Master/slave SPI interfeiss

    Uz baitiem orientēts seriālais 2 vadu interfeiss

    Programmējams sargsuņa taimeris ar iebūvētu oscilatoru

    Iebūvēts analogais komparators

    Pārtrauciet un pamodieties, kad mainās tapas stāvoklis


    • Mikrokontrollera īpašās funkcijas
    - Ieslēgšanas atiestatīšana un īslaicīga strāvas zuduma detektors

    Iebūvēts kalibrēts oscilators - ārējie un iekšējie pārtraukumu avoti

    Pieci zema patēriņa režīmi: dīkstāve, ADC trokšņu samazināšana, enerģijas taupīšana, izslēgšana un gaidstāve


    • I/O porti un korpusa dizains
    - 23 programmējamas I/O portu līnijas

    32 kontaktu TQFP un MFL paketes


    • Barošanas sprieguma diapazons
    - no 1,8 līdz 5,5 V ATMega48V

    No 2,7 līdz 5,5 V ATMega48L

    No 4,5 līdz 5,5 V ATMega48


    • Dažādi darbības pulksteņa ātruma diapazoni
    - no 0 līdz 1 MHz ATMega48V

    No 0 līdz 8 MHz ATMega48L

    No 0 līdz 16 MHz ATMega48


    • Īpaši zems patēriņš
    - Aktīvais režīms:

    300 µA pie 1 MHz un 1,8 V barošanas sprieguma

    20 µA pie 32 kHz un 1,8 V barošanas sprieguma

    Zema patēriņa režīms

    0,5 µA pie 1,8 V barošanas sprieguma

    ATMega48 ir mazjaudas 8 bitu CMOS mikrokontrolleris ar AVR RISC arhitektūru. Izpildot instrukcijas vienā ciklā, ATMega48 sasniedz 1 MIPS veiktspēju ar 1 MHz takts frekvenci, ļaujot dizainerim optimizēt jaudas un veiktspējas attiecību.

    AVR kodols integrē bagātīgu instrukciju kopu un 32 vispārējas nozīmes darba reģistrus. Visi 32 reģistri ir tieši savienoti ar aritmētiskās loģikas vienību (ALU), kas ļauj piekļūt diviem neatkarīgiem reģistriem, izpildot vienu instrukciju. Rezultātā šī arhitektūra nodrošina desmitiem reižu lielāku veiktspēju nekā standarta CISC arhitektūra.

    ATMega48 ir šādas īpašības: 4 KB sistēmā programmējama Flash programmu atmiņa, 256 baitu EEPROM datu atmiņa, 512 baitu SRAM (statiskā RAM), 23 vispārējas nozīmes I/O līnijas, 32 vispārēja lietojuma darba reģistri, trīs elastīgi taimeri. /skaitītāji ar salīdzināšanas shēmu, iekšējie un ārējie pārtraukumu avoti, seriāli programmējams USART, uz baitiem orientēts seriālais 2 vadu interfeiss, 6 kanālu ADC, no kuriem 4 kanāliem ir 10 bitu izšķirtspēja un 2 - 8 bitu izšķirtspēja, programmējams sargsuņa taimeris ar iebūvētu oscilatoru, SPI portu un pieciem programmatūras inicializētiem zema patēriņa režīmiem. Gaidīšanas režīmā kodols apstājas, bet SRAM, taimeri/skaitītāji, SPI ports un pārtraukumu sistēma turpina darboties. Izslēgšanas režīmā reģistru saturs tiek saglabāts, bet galvenais oscilators tiek apturēts un visas mikroprocesora iekšējās funkcijas tiek atspējotas, līdz notiek pārtraukums vai aparatūras atiestatīšana. Enerģijas taupīšanas režīmā asinhronie taimeri turpina darboties, ļaujot skaitīt laika intervālus, kamēr mikroprocesors ir miega režīmā. ADC trokšņu samazināšanas režīms aptur skaitļošanas kodolu un visus I/O moduļus, izņemot asinhrono taimeri un pašu ADC, kas samazina troksni analogās-digitālās pārveides laikā. Gaidstāves režīmā galvenais oscilators darbojas, kamēr pārējā ierīce ir dīkstāvē. Tas ļauj ātri saglabāt iespēju ātri iedarbināt ierīces, vienlaikus samazinot patēriņu.

    Ierīce ir ražota, izmantojot augsta blīvuma nemainīgās atmiņas tehnoloģiju no Atmel. Iebūvētā ISP Flash ļauj pārprogrammēt programmas atmiņu sistēmā, izmantojot seriālo SPI interfeisu, izmantojot bootloader programmu, kas darbojas AVR kodolā, vai parasto nemainīgās atmiņas programmētāju. Bootloader programma spēj ielādēt datus, izmantojot jebkuru saskarni, kas pieejama mikrokontrollerī. Programma sāknēšanas sektorā turpina darboties pat tad, kad ir ielādēts lietojumprogrammas atmiņas apgabals, nodrošinot patiesu lasīšanas-rakstīšanas darbību. Apvienojot 8 bitu RISK kodolu ar iekšēji programmējamu zibatmiņu, Atmel ir padarījis ATMega48 ierīces par jaudīgiem mikrokontrolleriem, kas nodrošina lielāku elastību un izmaksu efektivitāti plašam vadības ierīču klāstam.

    ATMega48 atbalsta dažādas programmatūras un integrēti izstrādes rīki, piemēram, C kompilatori, makro montieri, programmatūras atkļūdotāji/simulatori, ķēdes emulatori un novērtēšanas komplekti.

    7.1. ATMega48 tapas izkārtojums:

    7.1.att. ATmega48 mikroprocesora līgumu atrašanās vieta

    Attēlā 7.1. Mikroprocesora tapu mērķis ir dots, bet mēs izmantosim tikai daļu no tiem. Tātad mēs konfigurējam visu portu B izvadei un pievienojam tam indikāciju, lai parādītu skaitļu nozīmi. Ports D0-D3 ir arī konfigurēts izvadei, un mēs pievienojam tam indikatoru, lai apgaismotu četrus indikatora paziņas. Porta D4-D5 tapas ir konfigurētas kā izeja, un tai ir pievienotas gaismas diodes, lai parādītu priekšpuses aizvēršanos un aizmugurējo kontaktu atvēršanu un otrādi, lai atvērtu priekšējos un aizvērtu aizmugurējos kontaktus. Porta C0 izvade tiek izmantota ADC. Ārējais atsauces sprieguma avots ir pievienots AREF tapai, un filtra kondensators ir pievienots AVCC tapai, lai uzlabotu trokšņu noturību.

    Kad esat izlēmuši par mikroprocesora izvēli un darbības algoritma dizainu, jums ir jāuzraksta programma, izmantojot šo algoritmu.

    Lai uzrakstītu programmu, es izmantošu programmatūru Algorithm Builder. Bet pirms programmas rakstīšanas apskatīsim šo programmatūru.

    7.2. Algorithm Builder izstrādes vide

    Programmatūru Algorithm Builder uzrakstīja krievu programmētājs Genādijs Gromovs. Šī vide nodrošina pilnu izstrādes ciklu, sākot no algoritma ievades, ieskaitot atkļūdošanu, un beidzot ar kristāla programmēšanu ķēdē. Jums būs iespēja izstrādāt programmas gan montētāja līmenī, gan makro līmenī, kurās iespējams strādāt ar mainīgiem patvaļīga garuma daudzumiem. Tas tuvina programmēšanas iespējas augsta līmeņa valodai. Algorithm Builder jaunāko versiju varat lejupielādēt no autora vietnes http://algrom.net/russian.html.

    Atšķirībā no klasiskā montētāja, programma tiek ievadīta algoritma veidā ar kokam līdzīgu atzarojumu un tiek attēlota plaknē, divās dimensijās. Nosacīto un beznosacījumu pāreju tīkls tiek parādīts grafiski ērtā vektora formā. Tas arī atbrīvo programmu no neskaitāmiem etiķešu nosaukumiem, kas klasiskajā montētājā ir neizbēgams balasts. Kļūst skaidra visa programmas loģiskā struktūra.

    Grafiskās tehnoloģijas programmu veidošanai paver programmētājiem jaunas iespējas. Tie ļauj ievadīt programmas plaknē algoritma veidā ar koka struktūru. Rezultātā visa programmas loģiskā struktūra kļūst pilnīgi skaidra. Šādu tehnoloģiju galvenais mērķis ir tuvināt izstrādes saskarni pēc iespējas tuvāk cilvēka uztveres dabai. Apgūt šādu vidi ir daudz vienkāršāk nekā apgūt klasisko montētāju. Lietotājam draudzīgāks interfeiss paver jaunas attīstības iespējas. Pēc lietotāju domām, programmatūras izveides laiks tiek samazināts 3 līdz 5 reizes, salīdzinot ar klasisko

    Rīsi. 7.2.1. Algorithm Builder programmatūras logs.

    Montētājs.

    Vide ir paredzēta darbam operētājsistēmā Windows 95/98/2000/NT/ME/XP.

    Normālai redaktora darbībai ir nepieciešams fonts “Courier”.

    Attēlā 7.2.1. parāda, kā izskatās programmas "Algoritmu veidotājs" galvenais panelis.

    Algoritmu dizains

    Jebkuru programmatūru var sadalīt atsevišķos, loģiski pabeigtos gabalos. Parasti šo fragmentu galīgais paziņojums ir tādi apgalvojumi kā beznosacījuma lēciens vai atgriešanās no apakšprogrammas, t.i. paziņojumi, pēc kuriem programmas lineārā izpilde noteikti apstājas. Programmatūras izstrāde Algorithm Builder vidē ir saistīta ar šādu bloku veidošanu, novietošanu plaknē un vektoru savienojumu izveidošanu starp tiem no nosacītām un beznosacījumu pārejām.

    Algoritma elementi

    Lai izveidotu algoritmu, Algorithm Builder nodrošina septiņus elementus:

    LAUKS – lauks;

    LABEL – etiķete;

    VERTEX – bloka augšdaļa;

    CONDITION – nosacīta pāreja;

    JMP Vector – relatīvais beznosacījumu lēciens;

    SETTER – perifērijas ierīču iestatīšana;

    TEKSTS — vietējā teksta redaktora virkne.

    Elements "FIELD" - lauks

    Apzīmē uz bloku centrētu līniju. Objekts ir paredzēts, lai ierakstītu lielāko daļu mikrokontrolleru operatoru. Lai pievienotu lauku, atlasiet izvēlnes vienumu “Elementi\lauks” vai noklikšķiniet uz pogas rīkjoslā, vai taustiņu “Alt+F” vai taustiņu “Enter” (ja kursors atrodas ārpus vietējā teksta redaktora). .

    Tālāk sniegtajā algoritma piemērā elementi “Lauka” ir apvilkti ar ovāliem.

    Elements “LABEL” - etiķete

    Tas ir vertikāls gājiens, kas atrodas paziņojumu blokā, un izvēles nosaukums, kas atrodas pa kreisi vai pa labi no svītras. Marķējums ir paredzēts, lai norādītu vietas algoritmā, kur iespējamas nosacījuma un beznosacījuma pārejas. Lai blokam pievienotu etiķeti, atlasiet izvēlnes vienumu “Elements\Label”, nospiediet taustiņus “Alt+L” vai pogu rīkjoslā. Ja nepieciešams, varat piešķirt konkrētu programmas adresi. Lai to izdarītu, pirms nosaukuma (ja tāds pastāv) ir jāieraksta konstante vai algebriskā izteiksme, kas definē šo adresi.

    Lai mainītu etiķetes nosaukuma atrašanās vietu, nospiediet taustiņu “Tab”.

    Tālāk esošajā piemērā elements “Etiķete” ir iezīmēts ovālā veidā.

    Parasti vienam no pārejas vektoriem (ar bultiņu galā) jāatrodas blakus etiķetei. Tajā

    Lietas nosaukums etiķetei nav jāpiešķir. Bet Algorithm Builder nodrošina klasisku pāreju adresēšanu, izmantojot etiķešu nosaukumus. Šajā gadījumā etiķetei ir jāpiešķir nosaukums. Piemēram:

    Turklāt algoritma priekšrakstos etiķetes nosaukumu var izmantot kā konstanti, kas satur attiecīgās vietas adresi programmas atmiņā.

    Elements "VERTEX" - bloka augšdaļa

    Pēc displeja un mērķa tas ir pilnīgi identisks etiķetei, taču atšķirībā no tā tas norāda

    Bloka atrašanās vieta apstrādes plaknē vienmēr ir tā sākums. Lai pievienotu jaunu virsotni, atlasiet izvēlnes vienumu “Elementi\Vertex” vai nospiediet taustiņus “Alt+V”, vai noklikšķiniet uz pogas rīkjoslā vai ar peles kreiso pogu, noklikšķinot uz tās vajadzīgajā vietā darba lauks kopā ar “taustiņiem” Alt+Ctl+Shift.

    Tālāk esošajā piemērā “Vertex” elementi ir apzīmēti ar ovāliem:

    Parasti virsotne tiek nosaukta tikai tad, ja tā ir apakšprogrammas vai makro sākums.

    Elements “CONDITION” - nosacīta pāreja

    Šis elements ir strukturāli vissarežģītākais un paredzēts nosacītu pāreju īstenošanai. Tā ir ovāla kontūra, kuras iekšpusē ir ierakstīts pārejas nosacījums un iespējamais vektors lauztas līnijas veidā ar bultiņu beigās, kurai blakus ir neobligāts vektora nosaukums.

    Vektora beigām ir jābeidzas uz kādas etiķetes vai virsotnes, vai uz cita vektora segmenta, vai arī jābūt adresētās etiķetes nosaukumam.

    Lai pārvietotu vektoru uz vēlamo vietu, nospiediet peles kreiso pogu, vienlaikus turot nospiestu taustiņu "Alt". Lai rediģētu vektoru, izmantojiet virzienu taustiņus kopā ar taustiņu “Alt”. Lai pārietu no nosacījuma rediģēšanas uz vektora nosaukuma rediģēšanu, nospiediet taustiņu “Tab”. Sekojoši nospiežot taustiņu “Tab”, tiks mainīta vektora nosaukuma pozīcija. Lai ievadītu jaunu objektu, atlasiet izvēlnes vienumu “Elements\Condition” vai nospiediet taustiņus “Alt+C” vai pogu rīkjoslā.

    Tālāk esošajā piemērā “Stāvokļa” elementi ir ieskicēti ovāli:

    Elements "JMP Vector" - beznosacījuma lēciens

    Šis elements ir paredzēts īsu beznosacījumu lēcienu īstenošanai (pamata montētājā tas ir “RJMP” operators). Tā ir polilīnija, kas izplūst no bloka vidus ar bultiņu galā, kas ir līdzīga objekta “Stāvoklis” vektoram. Lai pievienotu jaunu beznosacījumu lēcienu, atlasiet izvēlnes vienumu “Elements\JMP Vector” vai nospiediet taustiņus “Alt+J” vai pogu rīkjoslā.

    Tālāk esošajā piemērā elements “JMP Vector” ir iezīmēts ar līniju.

    Elements "SETTER" - pielāgotājs

    Šis objekts ir pelēks taisnstūris, kura iekšpusē ir ierakstīts pielāgojamas mikrokontrollera perifērijas komponenta nosaukums, piemēram, taimeris, ADC, pārtraukumu maskas reģistrs utt. Pielāgotājs ir paredzēts, lai izveidotu mikrokontrollera darbību secību, kas nodrošina mikrokontrollera ielādi. nepieciešamās konstantes attiecīgajos I/O vadības reģistros atbilstoši izvēlētajām īpašībām.

    Pirms šī elementa izmantošanas ir jānosaka mikrokontrollera tips (izvēlnes vienums “Opcijas\Projekta opcijas”, cilne “Chip”)

    Lai algoritmam pievienotu pielāgotāju, atlasiet izvēlnes vienumu “Elementi\Setter” vai nospiediet taustiņus “Alt+S” vai pogu rīkjoslā. Lai rediģētu jau ievadītu pielāgotāju, aktivizējiet redaktoru, veicot dubultklikšķi vai izmantojot taustiņus "Shift+Enter".

    Objekts “Setter” ir makro operators. Pēc kompilācijas tas tiek pārveidots par mikrokontrollera komandu secību, kas nodrošinās nepieciešamo konstantu ielādi atbilstošajos vadības reģistros. Jāpatur prātā, ka šajās operācijās tiks izmantots starpreģistrs r16.

    Dažiem komponentiem, piemēram, ADC, pielāgotājs var darboties vairākos vadības reģistros. Šādā gadījumā, ja nepieciešams, var bloķēt ietekmi uz katru konkrēto reģistru.

    Tālāk esošajā piemērā elementi “Setter” ir iezīmēti ar ovālu līniju.

    Elements “TEXT” ir vietējā teksta redaktora virkne

    Šis elements ir teksta virkne, kas sākas no algoritma lauka kreisās malas. Vairāku šādu rindiņu kolekcija veido lokālo teksta redaktoru, kas robežojas ar punktētām līnijām. Noteikumi darbam tajā ir līdzīgi citiem teksta redaktoriem.

    Rindas ir paredzētas vairāku kompilatoru direktīvu ierakstīšanai, kā arī komentāriem. Lai pievienotu jaunu vietējo teksta redaktoru, atlasiet izvēlnes vienumu “Elementi\Teksts” vai nospiediet taustiņus “Alt+T” vai pogu rīkjoslā.

    Komentāri jāsākas ar divām slīpsvītrām: “//”.

    Tālāk esošajā piemērā “Teksta” elementi ir apzīmēti ar ovālu līniju.

    Kad būsim iepazinušies ar Algorithm Builder programmatūras pamatelementiem, mēs sāksim programmas izveidi. Lai izveidotu jaunu projektu, atlasiet izvēlnes vienumu “Fails\Jauns”. Tādā gadījumā parādīsies pirmā cilne un darba laukā ar tukšu operatoru (7.2.2. att.) pievienots elements “TEXT”, “VERTEX” un viens elements “FIELD” (7.2.2. att.) “NOP”:

    Rīsi. 7.2.2. Jauns projekta logs.

    Tad mēs iestatām mikroprocesora veidu, mūsu gadījumā tas ir ATmega48. Lai iestatītu mikroprocesora veidu, atlasiet izvēlnes vienumu “Opcijas\Projekta opcijas...” (7.2.3. attēls):

    Rīsi. 7.2.3. Projekta opciju logs.

    Šeit mēs izvēlamies mūsu mikroprocesoru un noklikšķiniet uz pogas Lietot.

    Pēc tam, pamatojoties uz darbības algoritmu, mēs apkopojam programmu. Sakarā ar to, ka programma šeit ir parādīta algoritma veidā, tā daudz neatšķirsies no jau iepriekš sastādītā un aprakstītā algoritma.

    Apskatīsim programmas uzbūvi. Vispirms ir jāiestata steka adreses skaitītājs uz pēdējo SRAM šūnu. To ir viegli izdarīt; lai to izdarītu, atlasiet elementu SETTER, pēc kura mēs atlasām Stack Point

    Kas parādās vadības reģistra iestatīšanas logā (7.2.4. att.), kurā mēs iestatām

    Rīsi. 7.2.4 Steka iestatījumu logs.

    Atzīmējiet izvēles rūtiņu un nospiediet pogu Labi. Darba laukā parādās pelēks taisnstūris SP. Pēc tam konfigurējam ADC vērtības, kurām izvēlamies elementu SETTER, kur izvēlamies Analog to Digits Converter (ADC), pēc kura parādās Control Register Setting logs (7.2.4. att.), kurā tiek konfigurēts ADC. Šeit mēs iestatām priekšskalotāju CK/128. Mēs izvēlamies mikroprocesora tapu, kurai mēs piegādāsim ADC vērtību. Šeit mēs izvēlamies mikroprocesora darbības režīmu, kam

    Rīsi. 7.2.4. ADC iestatīšanas logs.

    Uzstādiet AVCC ar ārējo kondensatoru pie AREF tapas. Tas pabeidz ADC iestatīšanu.

    Tagad mēs iestatām taimeri / skaitītāju. Lai konfigurētu, atkal dodieties uz elementu SETTER, kur izvēlamies Timer/Counter 0, pēc kura parādās logs ar taimera/skaitītāja iestatījumiem (7.2.5. att.). Šeit mēs nosakām CK/1024 priekšskalera vērtību un izvēlamies vienu no tā darbības režīmiem. Šajā gadījumā mēs izvēlamies CTC režīmu, tas ir, atiestatīt, ja ir atbilstība. Šajā režīmā skaitīšanas reģistrs darbojas arī kā regulārs saskaitīšanas skaitītājs, kas tiek palielināts ar katru pulksteņa signāla impulsu clk T 0 . Taču maksimālo iespējamo skaitītāja reģistra vērtību un līdz ar to arī skaitītāja izšķirtspēju nosaka salīdzināšanas reģistrs OCRO. Pēc salīdzināšanas reģistrā ierakstītās vērtības sasniegšanas skaitīšana turpinās no vērtības “$00”. Tajā pašā signāla pulkstenī

    Rīsi. 7.2.5. Logs ar taimera/skaitītāja iestatījumiem.

    Clk T 0, kurā tiek atiestatīts skaitīšanas reģistrs, ir iestatīts TIFR reģistra pārtraukuma karodziņš TOV0. Mēs ierakstām vērtību 100 OCRO reģistrā, kuru sasniedzot, notiks pārtraukums un programma pāries uz Timer_0_Compare_Match_A etiķeti.

    .

    7.2.6. attēls. Pārtraukšanas iestatījumu logs.

    Pēc tam mēs konfigurējam pārtraukumu un atlasām pārplūdes pārtraukumu. Lai to izdarītu, vēlreiz atlasiet elementu SETTING, kur mēs izvēlamies Timer/Counter interrupt Mask (TIMSK). Parādītajā logā laukā Timer/Counter atzīmējiet izvēles rūtiņu Output salīdzināt A atbilstība (7.2.6. att.). Tas pabeidz pārtraukuma konfigurāciju. Tagad mēs konfigurējam ievades-izejas portus, jo mums ir jākonfigurē viss ports B izvadei, pierakstiet vērtību 255 un iestatiet to uz vienu. Mēs arī konfigurējam portu D, bet šeit mēs izmantojam tikai pirmos 6 kontaktus D0 - D5, šim mēs tajā ierakstām vērtību 127. Pēc tam uz šī kontakta iestatām loģiskā 0 vērtību. Mēs konfigurējam portu C kā ievadi, kuram mēs tajā ierakstām 0. Šeit beidzas porta iestatījumi ievade-izeja. Tagad mēs iestatām t karogu uz 0. Pēc tam iestatām indikatora pirmo zīmi, n ierakstām 0. Pēc tam atiestatām summas vērtību šim summā un ierakstām 0. Mēs arī iestatām dalītāja vērtību, rakstot 0 in m. Mēs atiestatām privātās tērzēšanas vērtību, ierakstot tajā 0. Pēc Lai to izdarītu, mēs iespējojam globālo pārtraukumu, iestatot karogu i uz 1. Tas ļauj pārtraukt programmu pēc noteiktas pulksteņa impulsu vērtības un dodieties uz ADC vai taimera/skaitītāja apakšprogrammu.

    Pēc tam, izmantojot elementu LABEL, mēs iestatām etiķeti un piešķiram tai nosaukuma sākumu. Pēc tam, noklikšķinot uz CONDITION elementa (nosacījuma lēciens) un ievadot nosacījumu pārejai iekšpusē, šis nosacījums iestatīs t karogu uz 1. Ja t karodziņš nav vienāds ar 1, programma iet uz leju un pēc tam cauri. JMP Vector elements (beznosacījuma lēciens) mēs ejam uz sākuma etiķeti. Tādējādi mēs izveidojam ciklu, kurā programma griežas, līdz t karodziņš ir iestatīts uz 1. Tiklīdz t karodziņš ir vienāds ar 1, programma aiziet bultiņas virzienā. Zemāk ir ieeja apakšprogrammā bināra skaitļa pārvēršanai decimālskaitlī, kas atbilst uzrakstam Z_to_Digits. Pēc apakšprogrammas izpildes bināra skaitļa pārveidošanai par decimālo skaitli, ko aplūkosim tālāk, programma atgriežas pēc uzraksta Z_to_Digits, kur t karodziņā atkal tiek ievadīts 0. Tad atkal atlasām elementu JMP Vector un pārejam uz sākuma etiķete.

    Tagad apskatīsim ADC pārtraukuma rutīnu. Pāreja uz ADC apakšprogrammu tiek veikta pēc noteikta laika. Tiklīdz ADC veica mērījumus, tas ierakstīja datus uz adcl un adch. Dati no šiem diviem reģistriem ir jāieraksta citā reģistrā tālākai konvertēšanai. Šie reģistri būs zl un zh. Tautas skaitīšanai izmantosim attiecīgi rindu adcl → zl, nākamā rinda būs adch→ zh. Tad mēs izmantojam CONDITION elementu (nosacījuma pāreju) ar nosacījumu t=1. Šis nosacījums ir nepieciešams, lai aizliegtu mainīt numuru, līdz skaitlis tiek pārveidots decimāldaļā. Ja t=0, tad programma iet zemāk, kur ir rakstīta rinda x → z, tas nozīmē, ka z reģistrā saglabātais skaitlis mainīsies tikai pēc skaitļa parādīšanas. Tad izmantojot CONDITION elementu (nosacījuma pāreju) izveidojam nosacījumu y
    Pēc tam apsveriet nosacījumu y adc_max un, ja nosacījums ir patiess, programma seko bultiņai. Tad mēs izvadām informāciju uz portiem D.5 un D.4. Tas ir uzrakstīts kā 1 → D.5. Šis uzraksts parāda, ka loģiskā vērtība tiek parādīta pie porta D.5 tapas. Nākamajā rindā 0 → D.4 mēs izvadām loģiskās nulles vērtību uz portu D.4. Tad programma iet pa bultiņu. Nosacījuma x adc_max pārbaude. Tad viena pēc otras tiek ierakstītas trīs rindas 0 → m, 0 → t, 0 → y. Tajos mēs atiestatām dividendes (m), karoga t vērtības un y reģistra saturu, kurā tiek saglabāta izmērītā ADC vērtība. Pēc tam atkal palaižam ADC, pēc tam izejam no ADC apakšprogrammas. Tas noslēdz ieejas sprieguma mērīšanas apakšprogrammu.

    Sadalīšanas apakšprogrammas ievade atrodas ADC apakšprogrammā. Pēc tam, kad programma ir pārgājusi uz dalīšanas apakšprogrammu ar div32_8, tiek aprēķināta visu izmērīto ADC vērtību vidējā vērtība. Pirmkārt, mēs atiestatām privātā satura vērtību. Lai to izdarītu, ierakstiet 0 → chat. Tad mēs ieviešam nosacījumu, kurā karogs C = 1. Vienība tiks ievadīta karogā C tikai pēc tam, kad summas saturs ir mazāks par dalītāju. Bet, tā kā karodziņā C joprojām ir 0, programma iet zemāk. Zemāk ir rinda chast++, kurā mēs palielinām koeficienta vērtību par vienu. Tad mēs atņemam dalītāja vērtību no reģistra, kurā ir ADC vērtību summa. Pēc tam, izmantojot JMP Vector elementu (beznosacījuma lēciens), mēs izveidojam cilpu, kas ir pirms nosacījuma, kurā tiek pārbaudīts karogs C. Un, tiklīdz summas vērtība ir mazāka par dalītāju karogā C, tiks uzrakstīts viens un programma sekos bultiņai. Tad mēs pārrakstām koeficienta vērtību x reģistrā. Tas atbilst rindai chast → x. Zemāk ir rinda, kurā mēs atiestatām summas vērtību 0 → summa. Šeit beidzas dalīšanas apakšprogramma un programma iziet no tās, nonākot ADC apakšprogrammā pēc rindiņas div32_8.

    Apskatīsim taimera pārtraukuma apakšprogrammu, kurā tiek noteikts četru indikatoru punktu apgaismojums. Pēc tam, kad ir noticis taimera pārtraukums un programma ir pārgājusi uz Timer_0_Compare_Match_A etiķeti, tā sāk pārbaudīt indikatora atpazīšanas vērtības nosacījumus. Lai to izdarītu, izmantojot CONDITION elementu (nosacījuma lēciens), pārbaudām nosacījumu n=0 un ja tas ir patiess, tad programma virzās pa bultiņu. Pēc tam mēs ierakstām vērtību 0 portā D.3 ar komandu 0 → portd.3. Pēc tam visā ierakstā parādām skaitli, kas ietverts ciparā_0. Lai to izdarītu, ierakstiet cipars_0→ portb. Un mēs ierakstām vienu portā D.0, lai iedegtos pirmā norādes zīme; programmā tas izskatīsies šādi: 1 → portd.0. Pēc tam, izmantojot JMP Vector elementu (beznosacījuma lēciens), mēs pārejam uz etiķeti m0. Iezīme m0 nāk pēc visiem satura nosacījumiem n. Tad mēs palielinām n vērtību tā, lai rādītāja otrajā vietā tiktu parādīts nākamais skaitlis. Pēc tam mēs izejam no taimera apakšprogrammas. Nākamajā reizē, kad notiks taimera pārtraukums, programma atgriezīsies pie tā, bet darbosies nedaudz savādāk, jo ir jāparāda informācija par indikatora otro zīmi. Tas notiks pēc nosacījuma pārbaudes, kad reģistrā n jāiekļauj vienība, kas tika ierakstīta pēc pirmā cipara izvadīšanas, un n vērtība ir palielināta par vienu. Tā kā n satur vienu, programma turpinās saskaņā ar nosacījumu n=1. Pēc šī nosacījuma izturēšanas ir jāizslēdz pirmā iepazīšanās un, lai to izdarītu, portā D.0 ierakstām nulles vērtību. Programmā tas atbilst rindai 0 → portd.0. Tad arī izvadām ciparu_1 ietverto numuru uz visu portu.Lai to izdarītu, ierakstiet cipars_1→ portb. Un ierakstiet vienu portā D.1, lai iedegtos pirmais indikācijas simbols; programmā tas izskatīsies šādi: 1 → portd.1. Pēc tam mēs ejam uz m0 etiķeti un palielinām n vērtību par vienu, kā aprakstīts iepriekš. Indikatora trešā un ceturtā cipara izvade ir līdzīga pirmo divu izvadei, bet pēc ceturtā cipara izvadīšanas mēs atiestatām reģistra n satura vērtību. Lai to izdarītu, ierakstiet 0→n. Un mēs iestatām t karoga vērtību uz vienu, kas norāda uz skaitļa displeja beigas. Lai to izdarītu, ierakstiet 1→t. Tas pabeidz visu indikatora skaitļa parādīšanas ciklu.

    Atliek aplūkot tikai indikācijas apakšprogrammu, uz kuru pāreju veic tikai pēc karoga t=1 stāvokļa pārbaudes galvenajā programmā. Tā kā t karodziņā ir viens pēc tam, kad indikatorā tiek parādīts pēdējais cipars. Aptaujājot nosacījumu, programma pārvietojas pa bultiņu un pēc tam nokļūst Z_to_Digits, tas ir nosacījums pārejai uz indikācijas apakšprogrammu. Programma seko etiķetei un nonāk apakšprogrammā Z_to_Digits. Pēc pārejas pirmā lieta, ko mēs darām, ir atspējot globālo pārtraukumu; lai to izdarītu, karogā i ievadiet vērtību 0. Tas tiek rakstīts kā 0 → i. Zemāk mēs ievadām nulli temp darba reģistrā. programmā izskatās 0→temp. Tagad, izmantojot CONDITION elementu, mēs izveidojam nosacījumu, kurā reģistrs Z tiek salīdzināts ar 1000 un, tiklīdz reģistra Z vērtība ir mazāka par 1000, programma sekos bultiņai. Pa to laiku Z reģistrs vairs neatbilst nosacījumiem, un programma iet zemāk. Šeit mēs no Z reģistra atņemam tūkstoti un ierakstām kā Z – 1000. Tad mēs palielinām temp reģistra vērtību par vienu. Izmantojot JMP Vector elementu, mēs izveidojam cilpu, kas nāk pirms Z reģistra salīdzināšanas nosacījuma. Tiklīdz nosacījums ir izpildīts un Z reģistrs ir mazāks par tūkstoti, programma atstāj bultiņu. Tagad mēs pārrakstām pagaidu reģistra saturu r0 reģistrā, un tas tagad saglabā skaitļa tūkstošu vērtību. Ieraksts izskatās kā temp→r0. Pēc tam mēs atiestatām temp reģistra vērtību, ierakstot tajā 0. Tagad programma atkārtojas kā tūkstošos, bet tagad ir jāaprēķina simtu vērtība. Atkal mēs uzstādījām nosacījumu Z
    Pēc programmas uzrakstīšanas varat to pārbaudīt simulatorā, ko nodrošina programmatūras vide Algorithm Builder. Lai izpildītu algoritmu simulatorā, nospiediet taustiņu “F9” vai pogu rīkjoslā.

    Šajā gadījumā kompilācija notiks sākumā, un, ja kļūdu nav, simulators sāks darboties. Nepieciešamo mikrokontrollera komponentu logu atvēršana tiek veikta, izmantojot izvēlnes vienumu “Skatīt...”. Lai novērotu procesus ieviestajā algoritmā, pietiek atvērt logus “Procesors”, “PortD”, “Darba reģistri”, “ADC”, “Timer/Counter 0” un “Process time #0” (7.2. att.). .7).

    7.2.7. att. Algorithm Builder simulatora Vio.

    Atzīme blakus operatoram norāda programmu skaitītāja pašreizējo pozīciju. Etiķete tiek novietota pirms paziņojuma, kas jāizpilda nākamajā darbībā. Tūlīt pēc palaišanas tas atrodas programmas pirmajā paziņojumā, kas atrodas adresē $ 0000. Kad simulators tiek startēts, darba reģistru un SRAM saturs vienmēr tiek aizpildīts ar nejaušām vērtībām, jo ​​reālā mikrokontrollerī to saturs pēc strāvas padeves ir neparedzams. Soli pa solim algoritma izpilde ar ievadīšanu apakšprogrammās tiek veikta, izmantojot pogu “F7” vai pogu rīkjoslā. Soli pa solim izpilde, neievadot apakšprogrammas - izmantojot taustiņu “F8” vai pogu

    7.2.8. att. Kristāla programmēšanas logs.

    Šai programmatūrai ir iespēja programmēt mikroprocesoru. Algorithm Builder satur iebūvētu in-ķēdes programmētāju, kas nodrošina mikroshēmu secīgu programmēšanu. Izvēloties izvēlnes vienumu “Program\Run with Chip” vai nospiežot taustiņus “Ctrl+Shift+F9” vai noklikšķinot uz pogas rīkjoslā, tiek sākta algoritma kompilācija, un, ja kļūdu nav, tiek atvērts programmēšanas logs (7.2. attēls). .8).

    Mikroprocesors tiek ieprogrammēts, izmantojot COM portu.

    Grafiskā programmēšanas vide lietojumprogrammu izstrādei mikrokontrolleriem ar AVR arhitektūru.

    Algorithm Builder ir spēcīgs rīks, kas ļauj veikt pilnu programmas koda izveides un pārbaudes ciklu. Vidē ietilpst: grafiskais redaktors, mikroshēmas simulators algoritma atkļūdošanai, kompilators un ķēdes programmētājs koda ielādei mikroshēmā. Programma ir vietējais Assembler analogs un ir piemērota gan pieredzējušiem izstrādātājiem, gan tiem, kuri tikai sāk apgūt ierīces programmaparatūru.

    Algoritmu izveide var notikt montāžas līmenī vai makro līmenī, pamatojoties uz darbību ar daudzbaitu vērtībām, ņemot vērā zīmi. Turklāt makro operatori ietver visizplatītākās komandu kopas.

    Visas izstrādātās programmas tiek parādītas zarojošu koku blokshēmu veidā, pāreju tīkli tiek attēloti grafiski vektoru formā. Ja saskaņā ar nosacījumu ir jāiet uz kādu vietu programmas kodā, tad pietiek ar vektoru uzzīmēt tur. Tādā veidā programmatūra tiek atbrīvota no vairākiem etiķešu nosaukumiem. Ja filiāle ir pārāk gara, vienmēr ir iespēja adresēt filiāli uz etiķetes nosaukuma. Šādas loģiskās struktūras skaidrība, pēc izstrādātāju domām, ievērojami samazina koda rakstīšanas laiku un samazina kļūdu skaitu.

    Galvenais logs ļauj novietot nepieciešamos objektus un mainīt tos, ievietot, pārvietot utt., Kā jebkurā grafiskajā redaktorā. Atsevišķā ekrāna daļā tiek izveidots logs ar visu konstantu un mainīgo sarakstu tabulas veidā, tādējādi atbrīvojot algoritmu no papildu ierakstiem. Lai konfigurētu perifērijas ierīču parametrus (UART, SPI, ADC, taimeri), tiek nodrošināts īpašs elements ar nolaižamā loga saskarni. Kompilators neatkarīgi ģenerē instrukciju kopu, kas nodrošina atlasītos ierīces darbības parametrus. Turklāt tiek atbalstīta Windows ANSI kodu automātiska konvertēšana krievu valodas burtciparu LCD kodos. Programma atbalsta plašu mikrokontrolleru ģimeņu klāstu: ATtiny, ATmega, AT90.

    Simulators parāda visas izmaiņas, kas notiek dažādos reģistros, atmiņas šūnās un taimeros. Simulāciju var veikt soli pa solim (ar vai bez funkciju ievadīšanas), līdz pārtraukuma punktam vai izvēlētai zonai.
    Lai darbinātu ķēdē iebūvēto programmētāju, jums neatkarīgi jāsamontē vienkāršs adapteris, caur kuru mikrokontrolleris ir savienots ar datora COM portu. Turklāt ir iespējams pieslēgt caur USB savienotāju. Programmētājs saskaita galveno pārprogrammēšanas skaitu un saglabā skaitītāju pašā mikroshēmā.

    Monitora atkļūdošanas režīms kodolā, izmantojot citu adapteri (visas diagrammas ir pieejamas programmatūras dokumentācijā), ļauj uzraudzīt reāla kristāla iekšējo stāvokli jebkurā pārtraukuma punktā. Komunikācijai starp kontrolieri un datoru pēc lietotāja ieskatiem tiek piešķirta tikai viena izeja. On Chip atkļūdošana attiecas uz jebkura veida mikroshēmām, kurām ir SRAM atmiņa.

    Neskatoties uz acīmredzamajām priekšrocībām, Algorithm Builder ir maz pazīstams radioamatieru sabiedrībā. Daļēji tas ir saistīts ar to, ka līdz 2010. gadam vizuālā programmēšanas vide bija maksas, bezmaksas demo versija ierobežoja kodu līdz diviem kilobaitiem. Mūsdienās programmatūra tiek izplatīta pilnīgi brīvi. Mapi ar instalēto programmu var pārkopēt uz citu datu nesēju un strādāt pārnēsājamā veidā. Programmatūrai ir pievienota lietotāja rokasgrāmata. Rakstā apskatīti vairāki vienkārši darbi un sniegtas USB un COM portu programmētāju diagrammas.

    Programmas Algorithm Builder autori ir pašmāju programmētāju grupa tautas amatnieka Genādija Leonidoviča Gromova no Ņižņijnovgorodas vadībā. Programma turpina attīstīties līdz šai dienai, tiek pievienotas jaunas funkcijas, un autora vietnē ir parādījusies neliela bibliotēku izlase.

    Algorithm Builder programmas saskarne un lietotāja rokasgrāmata ir parādīta krievu un angļu valodā.

    Programmatūra ir saderīga ar Microsoft Windows 95, 98, 2000, NT, ME, XP, Vista un 7 operētājsistēmām.

    Programmas izplatīšana: bezmaksas

    Raksta materiāli sagatavoti Maskavas Valsts rūpniecības universitātes (GOU MGIU) Automatizācijas, informātikas un vadības sistēmu (AIiSU) katedrā.
    (Kopš 2011. gada MGIU sauc par federālo valsts budžeta augstākās profesionālās izglītības iestādi "MGIU").
    Autori: Kryukov A.I., Shubnikova I.S., Troikov S.M.

    AI&CS katedra jau vairāk nekā 35 gadus apmāca profesionāļus elektronisko, mikroprocesoru, datoru, robotu, mehatronisko un informācijas vadības sistēmu izstrādes un darbības jomā automobiļu un kosmosa tehnoloģijām, mašīnbūvei un uzņēmējdarbībai. Departamenta darbinieku pētnieciskais darbs tiek veikts jomās, kas saistītas ar uz mākslīgā intelekta tehnoloģijām balstītu lēmumu atbalsta sistēmu izstrādi, sarežģītu sistēmu pārvaldības procesu analīzi un sintēzi, iekārtu atteices monitoringu un inteliģentu atklāšanu. Nozīmīga nodaļas zinātniskās darbības joma ir pētījumu veikšana transportlīdzekļu automātisko un elektronisko sistēmu jomā.
    Atmel MK vadības programmu rakstīšanai ir daudz dažādu lietojumprogrammu - tās ir izstrādes un atkļūdošanas vides zema līmeņa valodās (piemēram, bezmaksas AVR Studio pakotne programmu izstrādei AVR Assembler valodā), izstrādes vides. augsta līmeņa valodās (piemēram, WinAVR vide programmu izstrādei C veida valodā), un ir pat grafiskā programmatūras izstrādes un atkļūdošanas vide ar nosaukumu "Algoritm Builder".

    Algorithm Builder atšķiras no citām vidēm, un tas ir tas, uz ko mēs koncentrēsimies. Šīs lietojumprogrammas izcēlums nav pat tas, ka tā ir bezmaksas, bet gan tas, ka tajā esošais kods nav pat rakstīts, bet ir uzzīmēts algoritmu blokshēmu veidā, kas ievērojami samazina lietojumprogrammas izstrādes laiku. Šī vide nodrošina pilnu izstrādes ciklu, sākot no algoritma ievades, ieskaitot atkļūdošanu, un beidzot ar kristāla programmēšanu ķēdē. Rezultātā visa programmas loģiskā struktūra kļūst pilnīgi skaidra.

    Programmatūras izstrāde Algorithm Builder vidē ir saistīta ar šādu uzdevumu bloku izveidošanu, to novietošanu plaknē un savienojumu izveidošanu starp tiem no nosacītām un beznosacījumu pārejām.

    Lai nepārrakstītu visu rokasgrāmatu darbam ar Algorithm Builder vidi, iesaku to izlasīt pašiem, jo ​​īpaši tāpēc, ka lietojumprogramma ir ražota vietēji un satur detalizēts apraksts krievu valodā, pamatojoties uz piemēriem par darbu ar viņu. Pamatojoties uz personīgo pieredzi, mēs varam ar pārliecību teikt, ka šī rokasgrāmata (starp citu, tā ir tālu no apjomīgas - tikai 20-30 minūtes ilgas studijas) ir pilnīgi pietiekama, lai pilnībā izprastu un izprastu šo programmatūras produktu.

    Algorithm Builder varat lejupielādēt vietnē http://algrom.net/russian.html. Un kontroles programmas izstrādes procesu var apskatīt saite. Tādējādi mēs tagad prezentēsim gatavo programmu aprakstītajā izstrādes vidē ar detalizētiem komentāriem par to.

    Pirmkārt, izvēlnē Options/Project Options ir jāizvēlas kristāla tips (mūsu gadījumā Atmega8) un tur jāiestata pulksteņa frekvence uz 8 000 000 Hz (8 MHz). Pēc tam mēs atiestatām kristālu startēšanas laikā (elementi / pārtraukumi / atiestatīšana). Pēc tam inicializējam steku, izvēloties Elements/Customer…/Stack Pointer (SP), tiks atvērts logs, kuram tikai jāpiekrīt, nospiežot “OK” (2. att.).

    Rīsi. 2. Stack Customizer

    Nākamais solis ir inicializēt USART raiduztvērēju (nebrīnieties par burta "S" parādīšanos saīsinājumā - šī ir modernāka UART versija, kas no tās atšķiras ar spēju pārraidīt/saņemt datus nevis tikai asinhronajā režīmā, bet arī sinhronajā režīmā), atlasot izvēlni Elements / Customizer... /USART. Atvērtajā logā (3. att.) sadaļā Receiver atzīmējiet izvēles rūtiņas blakus Iespējot (ieslēdziet datu uztvērēju) un Complete interrupt enable (iespējot pārtraukumus, kad dati tiek saņemti), pēc tam atzīmējiet izvēles rūtiņu blakus Double Speed. , iestatiet rakstzīmju lielumu Character Size: 8 – biti un iestatiet datu pārraides ātrumu uz Baud Rate = 9615 bps (noklikšķinot uz datu pārraides ātruma izvēles izvēlnē, jāizvēlas 9600 bps, 9615 bps tiek iegūts, pateicoties pulksteņa frekvences pārrēķins līdz 8 MHz).


    Rīsi. 3. USART konfigurators

    Programmas galveno daļu veidos kontroles kodu pārbaužu secība (saraksts Nr. 1). Ideja ir tāda, ka dators nosūtīs darbības kodu, izmantojot UART, un MK to saņems un ģenerēs atbilstošas ​​​​kontroles darbības ventilatora lāpstiņas piedziņai un servo piedziņai. Kopumā būs trīs šādi kodi (jūs varat izdomāt pilnīgi jebkurus kodus):

  • 31 ASV dolārs - ieslēdziet ventilatora lāpstiņas piedziņu;
  • 20 USD - izslēdziet ventilatora lāpstiņas piedziņu;
  • $A1 - piekļuve servo piedziņai.

  • Ja ar pirmajiem diviem kodiem viss ir skaidrs, tad ar trešo nav tik vienkārši - $A1 ir tikai komanda, lai piekļūtu servo piedziņai, tad jāiegūst rotācijas leņķa kods. Eksperimentāli tika konstatēts, ka tas svārstās no USD 05 AF līdz USD 154 F. Turklāt mēs nosūtīsim no datora un attiecīgi saņemsim no MK, sākot no zemā baita. Mēs arī atspējosim datu saņemšanas pārtraukumus, izmantojot USART, uz komandas izpildes laiku - pretējā gadījumā tas var izrādīties datu “bardaks”.

    Saraksts #1

    Saraksts Nr. 2 parāda aizkaves apakšprogrammas (Delay) kodu. Laika aizkave ir nepieciešama precīzai un pilnīgai komandas apstrādei un tiek veidota, programmu cilpot N cikliem (mēģinot un kļūdoties, mēs aprēķinājām, ka mūsu gadījumā veiksmīgākais ciklu skaits ir 84FF heksadecimālajā skaitļu sistēmā).

    Saraksts #2

    Datu saņemšanas, izmantojot UART, beigas izraisa USART_Receive_Complete pārtraukumu (ja tas pašlaik nav atspējots programmas galvenajā daļā), ko var iestatīt kodā, izmantojot izvēlni Elements/Interrupts/USART_Receive_Complete. Apdarinātāja korpusā visus tajā izmantotos reģistrus vajadzētu saglabāt stekā un apdarinātāja beigās tos atjaunot no steka. Arī šajā apdarinātājā var iegūt statusa baitu (UCSRA reģistrs), lai pārbaudītu kļūdas datos un, protams, pašus datus no UDR reģistra (Saraksts Nr. 3).

    Saraksts #3

    Servo piedziņas griešanās leņķis ir atkarīgs no tai piegādātā impulsa platuma, saglabājot periodu nemainīgu (periods ir 20 ms, un vadības impulsa ilgums ir no 0,8 līdz 2,2 ms, lai gan dažādām servo ierīcēm šīs vērtības ir var nedaudz atšķirties) šim nolūkam mums ir nepieciešama apakšprogramma. servo piedziņas griešanās leņķis (saraksts Nr. 4). Kontroles impulsa laiks un pauzes laiks tiks iestatīti līdzīgi kā aizkaves apakšprogramma. Kā jau rakstījām iepriekš, eksperimentāli kristāla frekvencei 8 MHz mēs noteicām, ka impulsa laiku nosaka kods diapazonā no $05AF līdz $154F. Tādējādi, zinot visa perioda laiku - $9E3C (arī noteikts eksperimentāli), pauzes laiku varam aprēķināt kā perioda ilguma un pulsa ilguma starpību. Atliek tikai secīgi izstrādāt impulsa laiku un pauzes laiku, līdzīgi kā aizkaves apakšprogrammā, un pēc tam atkārtot šādu signālu vairākas reizes (mūsu gadījumā mēs atkārtojām signālu $10 reizes, t.i., 16 reizes decimālzīmju sistēmā )

    Saraksts #4

    Pēc vadības programmas koda uzrakstīšanas (algoritma zīmēšanas) nepieciešams to apkopot un zibspuldzi mikrokontrollerī. Programmu var kompilēt, nospiežot Ctrl+F9 vai izmantojot izvēlni Programma/Compile. Ja kompilācija ir veiksmīga, parādīsies informācijas logs, kurā tiks norādīts MK aizņemtās atmiņas apjoms.

    Pēc tam jums ir jāievieto kontrolierī kompilācijas rezultāts (fails ar paplašinājumu *.hex bez prefiksa “EE_” sākumā, kas atrodas tajā pašā mapē, kur programmas avots). To var izdarīt, izmantojot bezmaksas AvrProg utilītu, kas iekļauta arī bezmaksas AVR Studio pakotnē. Varat to lejupielādēt no vietnes mymcu.ru vai no atmel.com (vietne angļu valodā).

    Papildus utilītai MK programmaparatūras mirgošanai jums būs nepieciešams arī programmētājs. Jūs varat to iegādāties (vienkāršas versijas ir salīdzinoši lētas), vai arī pielodēt pats.

    Rīsi. 4. LPT programmētāja shēma
    Visvienkāršākais, ko zinu, ir LPT programmētājs, bet tāpēc datorā būs nepieciešams LPT ports, kas šobrīd kļūst par retumu. Programmētāja ideja ir vienkārša un sastāv no LPT porta tiešas savienošanas ar ISP interfeisu un kontroliera Reset līniju (4. attēls).

    Vēl viena programmētāja iespēja pašmontāžai ir USB programmētājs (shēma parādīta 5. att.), tas, protams, ir sarežģītāks, bet nākotnē tas var izrādīties daudz ērtāk. Tomēr ir viens "bet" - lai to saliktu, jums joprojām būs nepieciešams LPT programmētājs, lai gan tikai vienu reizi. Lai mirgotu FUSE biti, būs nepieciešams mirgot paša programmētāja vadības kontrolleri. Ir nepieciešams, lai SPIEN, CKOPT un SUT0 biti būtu ieprogrammēti (iestatīti uz “0”). Parasti MK nāk no rūpnīcas, t.i. jaunajiem jau ir ieprogrammēts SPIEN bits. Ir arī vēlams (bet nav nepieciešams) ieprogrammēt (iestatīt uz “0”) BODEN bitu. Atlikušajiem bitiem jābūt neprogrammētiem (iestatīts uz “1”). Tam var būt nepieciešama lietojumprogramma Codevision AVR V2.03.4. Detalizētu USB programmētāja montāžas aprakstu var izlasīt šeit.