- Kas ir AVR drošinātāji - detalizēts paskaidrojums
- Drošinātāju biti Arduino
- Komponenti, kas nepieciešami drošinātāju pārbaudei AVR
- Shēma drošinātāju bitu pārbaudei AVR
- Drošinātāju pārbaude AVR
Šajā apmācībā mēs runāsim par drošinātājiem. Toreiz, kad es mācījos koledžā un uzzināju par visām foršajām lietām elektronikā, es pirmo reizi dzirdēju terminu fuse AVR, mana sākotnējā doma par tēmu bija, ak! AVR iekšpusē ir kaut kas tāds, kas pūtīs, ja es izdarīju kaut ko nepareizi. Toreiz internetā nebija daudz resursu, lai tos varētu iziet. Es diezgan daudz meklēju, lai uzzinātu, ka šie drošinātāji atsaucās uz dažiem īpašiem bitiem AVR mikrokontrollera iekšpusē. Šie biti ir kā mazi slēdži AVR iekšpusē, un, tos ieslēdzot / izslēdzot, mēs varam ieslēgt / izslēgt dažas īpašas AVR funkcijas. Ieslēgšana un izslēgšana nozīmē iestatīšanu un atiestatīšanu.
Mēs izmantosim šo iespēju, lai apspriestu visu, kas tur ir, par AVR drošinātāju bitiem. Vienkāršības labad mēs izmantosim Arduino dēļa piemēru, kurā atrodas populārais mikrokontrolleris ATmega328P. Šeit jūs uzzināsiet, kā iestatīt šos drošinātājus, lai ieslēgtu un izslēgtu dažas no šīm funkcijām, kas patiešām noder reālās dzīves lietojumprogrammās. Tātad, iedziļināsimies tajā.
Iepriekšējos ierakstos mēs esam izveidojuši daudz AVR mikrokontrolleru projektu, piemēram, Interfacing GSM moduli ar AVR mikrokontrolleru un Interfacing HC-05 ar AVR mikrokontrolleru. Jūs varat tos pārbaudīt, ja vēlaties uzzināt vairāk par šiem projektiem.
Kas ir AVR drošinātāji - detalizēts paskaidrojums
Kā mēs iepriekš apspriedām, mikrokontrollera drošinātāji ir kā mazi slēdži, kurus var ieslēgt un izslēgt, lai iespējotu un atspējotu dažādas AVR mikrokontrollera funkcijas. Šī ir tā daļa, kurā rodas mūsu nākamais jautājums, tad kā mēs varam iestatīt vai atiestatīt šos drošinātājus? Atbilde uz šo jautājumu ir vienkārša: mēs to darām, izmantojot drošinātāju reģistrus.
ATmega328P IC kopumā ir 19 drošinātāju biti, un tie ir sadalīti trīs drošinātāju baitos. Tie ir definēti kā “Extended Fuse Bytes”, “High Fuse Byte” un “Low Fuse Byte”.
Aplūkojot ATmega328 / P datu lapas Rev: 7810D – AVR – 01/15 datu tabulu-27, varat uzzināt visu mazo informāciju par drošinātāju bitiem. Bet zemāk redzamais attēls sniegs jums labāku priekšstatu par datu lapas drošinātāju bitu sadaļu.
Tagad, kad esat mazliet uzzinājis par drošinātāju bitiem, apskatīsim datu lapu un uzzināsim visu nepieciešamo informāciju par šo IC.
Paplašinātie drošinātāju uzgaļi:
Noklikšķinot uz cilnes Fuse Bits un nedaudz ritinot uz leju, jūs atradīsit tabulu 27-5: kurā parādīta tabula “Extended Fuse Byte”, ko parasti sauc par “ EFUSE”. Zemāk redzamais attēls parāda tieši to.
Šajā tabulā ir tikai trīs izmantojamie biti, un pārējie trīs ir rezervēti. Šie trīs biti attiecas uz Brownout noteikšanas līmeni. Kā redzat piezīmē, ja aplūkojam 28-5. Tabulu, mēs varam atrast sīkāku informāciju par to.
Kā redzat iepriekšējā tabulā, mums ir tabula Brownout noteikšanai. Brownout noteikšana ir funkcija, kas atiestata mikrokontrolleru, kad barošanas spriegums nokrītas zem noteikta sprieguma līmeņa. ATmega328P IC sistēmā mēs varam pilnībā atspējot izgaismojuma noteikšanu vai arī iestatīt to uz līmeņiem, kas parādīti iepriekšējā tabulā.
Augsta drošinātāja baiti:
Kā redzat zemāk redzamajā attēlā, datu lapas 27-6. Tabulā parādīti ATmega328P IC augstākā drošinātāja biti.
High drošinātājs galā ar dažādiem uzdevumiem iekšpusē ATmega328 Microcontroller. Šajā sadaļā mēs runāsim par augstāko drošinātāju uzgaļiem un to darbību. Sāksim ar bitiem BOOTRST, BOOTSZ0 un BOOTSZ1. Šie trīs biti ir atbildīgi par boot izmēra iestatīšanu; sāknēšanas lielums attiecas uz atmiņas apjomu, kas rezervēts bootloader instalēšanai .
Bootloader ir īpaša programmatūras daļa, kas darbojas virs mikrokontrollera un pārvalda dažādus uzdevumus. Bet Arduino gadījumā bootloader tiek izmantots, lai augšupielādētu Arduino skici mikrokontrollera iekšpusē. Vienā no mūsu iepriekšējiem rakstiem mēs esam parādījuši, kā sadedzināt sāknēšanas ielādētāju vietnē ATmega328P, izmantojot Arduino. Ja jūs interesē tēma, varat to pārbaudīt. Atgriežoties pie mūsu tēmas, citu augstā baita bitu mērķi ir pietiekami skaidri norādīti, EESAVE bits ir saglabāt EEPROM atmiņu, kamēr tiek veikts mikroshēmas dzēšanas cikls. Bits WDTON ir iespējot vai atspējot Watchdog taimeri.
Sargsuņa taimeris ir īpašs taimeris ATmega328P IC, kuram ir atsevišķs pulkstenis un kurš darbojas neatkarīgi. Ja sargsuņa taimeris ir iespējots, jums tas ir jānotīra ar noteiktu periodu, pretējā gadījumā sardzes taimeris atiestatīs mikrokontrolleru. Šī ir noderīga funkcija, kas ietilpst daudzos mikrokontrolleros, ja procesors iestrēgst; sargsuns to atiestatīs, lai novērstu gala lietojumprogrammas bojājumus.
DWEN bits ir paredzēts, lai iespējotu atkļūdošanas vadu; tas ir sagatavošanas protokols, kas iekšēji ir iebūvēts viņu aparatūrā un tiek izmantots procesoru programmēšanai un atkļūdošanai. Ja šī funkcija ir iespējota, varat zibatmiņu un atkļūdot procesoru, pievienojot vienu vadu. Bet, lai to izmantotu, jums būs nepieciešama īpaša aparatūra, kas ir sagatavojoša Atmel.
Pārējie divi biti ir tie biti, no kuriem jums jāizvairās, ja vien jūs precīzi nezināt, ko darāt. Tie ir RSTDISBL bits-7 un SPIEN bits-5. RSTDISBL (External Reset Disable), kā norāda nosaukums, atspējo ārējās aparatūras atiestatīšanas tapu, un SPIEN bits tiek izmantots, lai atspējotu SPI programmēšanas saskarni. Atspējojot jebkuru no šiem diviem bitiem, AVR var pilnībā nomainīt; tāpēc atstāt viņus mierā ir laba ideja.
Zema drošinātāja baiti:
Kā redzat zemāk esošajā attēlā, datu lapas 27-7. Tabulā parādīti ATmega328P IC apakšējā drošinātāja biti.
Šis drošinātāju baits ir atbildīgs par pulksteņa avota un dažu citu pulksteņa parametru iestatīšanu AVR iekšpusē. Šajā sadaļā mēs uzzināsim par visu to.
Septīto bitu vai CKDIV8 karodziņu var iestatīt tā, lai pulksteņa avotu dalītu ar 8, un tas ir ļoti noderīgi, ko jūs, iespējams, jau zināt, ja pats esat mēģinājis programmēt AVR. Nākamais bits ir CKOUT bits, un tas ir 6. bits zemā drošinātāja baitā. To ieprogrammējot, mikrokontrollera PORTB0 izvadīs iekšējo pulksteņa signālu.
Biti-5 un bits-4 SUT1 un SUT0 kontrolē mikrokontrollera palaišanas laiku. Tas novērš jebkādas palaišanas darbības, kas var notikt vai var notikt, pirms barošanas spriegums var sasniegt pieņemamu minimālo sprieguma līmeni. Četri pēdējie CKSEL0 - 4 biti tiek izmantoti, lai izvēlētos mikrokontrollera pulksteņa avotu. Zemāk redzamā tabula ļauj labāk izprast šos četrus bitus, kas ir atbildīgi par pulksteņa avota iestatīšanu. Šo tabulu varat atrast datu lapas sadaļā Pulksteņa avots.
Tagad, pirms mēs esam nonākuši tālāk, ir vēl viena lieta, kas man jāiet cauri, ir tabula par oscilatoru palaišanas aizkavi. Pēc palaišanas aizkaves mēs atsaucamies uz drošinātāju apakšējā baita 4. un 5. bitu. Kavējumi jāiestata atkarībā no nosacījuma, kādā ķēde darbosies, un no izmantotā oscilatora veida. Noklusējuma vērtības ir iestatītas uz lēnu pieaugošu jaudu ar 6 pulksteņu cikliem, kad tiek veikta ieslēgšanas vai izslēgšanas secība. Pēc tam ir vēl viens 14 pulksteņu ciklu kavējums ar 65 Ms kavēšanos pēc palaišanas.
Phew! Tā bija daudz sagremojamas informācijas. Bet pirms turpināt darbu, beigsim šo sadaļu ar ātru piezīmi.
Piezīme:
Ja esat uzmanīgi apskatījis datu lapu, noteikti esat pamanījis, ka drošinātāju bitu programmēšana nozīmē to iestatīt zemu, ti, 0 (nulle), kas ir pretējs tam, ko mēs parasti darām, lai ports būtu augsts vai zems. Konfigurējot drošinātājus, tas jāpatur prātā.
Drošinātāju biti Arduino
Iepriekšminētajā sadaļā mēs esam daudz runājuši par drošinātājiem, bet šajā sadaļā parunāsim par to, kā tos konfigurēt un kā tos ierakstīt mikrokontrollerī. Tam mums būs nepieciešams rīks ar nosaukumu Avrdude. Tas ir rīks, kuru var izmantot, lai lasītu, rakstītu un modificētu atmiņu AVR mikrokontrolleros. Tas darbojas ar SPI, un tam ir garš atbalsta saraksts dažāda veida programmētājiem. jūs varat lejupielādēt rīku no tālāk norādītās saites. Mēs arī izmantosim savu iecienīto mikrokontrolleru Arduino.
- Lejupielādējiet Avrdude versiju 6.3 Windows-ming32
Tagad, kad jums ir Avrdude, jums tas ir jāizvelk un šajā mapē jāatver komandu logs. Turklāt, ja plānojat to izmantot vēlāk, mapes ceļu varat pievienot sadaļai Windows vides mainīgais. Bet es to ievietošu savā darbvirsmā un tur atvēršu komandu logu. Kad tas būs izdarīts, mēs savienosim USBasp programmētāju ar datoru un pārliecināsimies, vai mūsu USBasp programmētājam ir piemērots draiveris. Kad tas būs izdarīts, mums būs labi iet, un vispirms mēs nolasīsim drošinātāja noklusējuma vērtību. Lai to izdarītu, jums jāpalaiž šāda komanda.
avrdude.exe -c usbasp -p m328p -U lfuse: r: low_fuse_val.txt: h -U hfuse: r: high_fuse_val.txt: h -U efuse: r: ext_fuse_val.txt: h
Ja viss ir kārtībā, šī komanda nolasīs drošinātāju baitus un ievietos tos trīs atsevišķos teksta failos. Zemāk redzamais attēls sniegs jums labāku priekšstatu par procesu.
Kā redzat, Avrdude nolasīja Arduino nano drošinātāju bitus un saglabāja tos trīs atsevišķos teksta failos. Tagad mēs tos atvērām un ieguvām trīs vērtības; par EFUSE: 0xFD, lai HFUSE: 0XDA, lai LFUSE: 0xFF. Šī bija noklusējuma drošinātāja vērtība, ko saņēmām Arduino nano. Tagad pārveidosim šos bitus bināros un salīdzināsim tos ar noklusējuma vērtību no datu lapas. Zemāk esošajā tabulā tas ir precīzi parādīts.
Ērtības labad drošinātāju biti tiek ierakstīti heksadecimālajās vērtībās, taču, ja tos pārveidosim binārās vērtībās un salīdzināsim ar datu lapu, mēs zināsim, kas notiek. Sāksim ar zemāko drošinātāju baitu. Kā redzat no iepriekš minētās virknes, tā ir iestatīta uz 0XFF, un binārā vērtība būtu 0B11111111.
Salīdzinot krājuma apakšējo drošinātāju baitus ar Arduino:
Zema drošinātāja baits |
Bits Nr. |
Noklusējuma vērtība AVR |
Arduino noklusējuma vērtība |
CKDIV8 |
7 |
0 (ieprogrammēts) |
1 (neprogrammēts) |
CKOUT |
6 |
1 (neprogrammēts) |
1 (neprogrammēts) |
SUT1 |
5 |
1 (neprogrammēts) |
1 (neprogrammēts) |
SUT0 |
4 |
0 (ieprogrammēts) |
1 (neprogrammēts) |
CKSEL3 |
3 |
0 (ieprogrammēts) |
1 (neprogrammēts) |
CKSEL2 |
2 |
0 (ieprogrammēts) |
1 (neprogrammēts) |
CKSEL1 |
1 |
1 (neprogrammēts) |
1 (neprogrammēts) |
CKSEL0 |
0 |
0 (ieprogrammēts) |
1 (neprogrammēts) |
Augstākā drošinātāja baits ir iestatīts uz 0XDA binārā formā, kas ir 0B11011010.
Augstāks drošinātāju baits binārā režīmā:
Augsta drošinātāja baits |
Bits Nr. |
Noklusējuma vērtība AVR |
Arduino noklusējuma vērtība |
RSTDISBL |
7 |
1 (neprogrammēts) |
1 (neprogrammēts) |
DWEN |
6 |
1 (neprogrammēts) |
1 (neprogrammēts) |
SPIEN |
5 |
0 (ieprogrammēts) |
0 (ieprogrammēts) |
WDTON |
4 |
1 (neprogrammēts) |
1 (neprogrammēts) |
EESAVE |
3 |
1 (neprogrammēts) |
1 (neprogrammēts) |
BOOTSZ1 |
2 |
0 (ieprogrammēts) |
0 (ieprogrammēts) |
BOOTSZ0 |
1 |
0 (ieprogrammēts) |
1 (neprogrammēts) |
BOOTRST |
0 |
1 (neprogrammēts) |
0 (ieprogrammēts)) |
Paplašinātā drošinātāja baita iestatījums ir 0XFD, binārā tā ir 0B11111101.
Paplašināts drošinātāju baits binārā režīmā:
Paplašināts drošinātāju baits |
Bits Nr. |
Noklusējuma vērtība AVR |
Arduino noklusējuma vērtība |
- |
7 |
1 |
1 |
- |
6 |
1 |
1 |
- |
5 |
1 |
1 |
- |
4 |
1 |
1 |
- |
3 |
1 |
1 |
BODLEVEL2 |
2 |
1 (neprogrammēts) |
1 (neprogrammēts) |
BODLEVEL1 |
1 |
1 (neprogrammēts) |
0 (ieprogrammēts) |
BODLEVEL0 |
0 |
1 (neprogrammēts) |
1 (neprogrammēts) |
Tagad tas nozīmē šīs sadaļas beigas. No šī brīža mēs esam daudz iemācījušies par AVR mikrokontrolleru un tā drošinātāju bitiem. Tātad, apkoposim šo rakstu, pārbaudot mūsu teoriju, mainot un eksperimentējot ar dažiem Arduino Nano drošinātāju bitiem.
Komponenti, kas nepieciešami drošinātāju pārbaudei AVR
Iepriekšminētajā daļā mēs esam daudz runājuši par drošinātājiem. Bet, lai turpinātu darbu šajā rakstā, mums ir nepieciešami daži aparatūras komponenti un daži programmatūras rīki. Šajā sadaļā mēs runāsim par tiem. Nepieciešamo komponentu saraksts ar attēliem ir parādīts zemāk.
- Maizes dēlis - 1
- Arduino Nano - 1
- USBasp AVR programmētājs - 1
- USB kabelis - 1
- AVR 10 kontaktu līdz 6 kontaktu pārveidotājs - 1
- Avrdude (programmatūras rīks AVR programmēšanai)
- LED - 1
- 330R rezistors - 1
- Džemperu kabeļi
Shēma drošinātāju bitu pārbaudei AVR
Aparatūras testēšanas iestatījumi ir parādīti zemāk šajā iestatījumā. Ardu vadu esam pievienojuši datoram Arduino Nano, kā arī datoram pievienojuši USBasp programmētāju. Šī raksta mērķis ir ieprogrammēt AVR drošinātāju bitus. Šī iemesla dēļ mēs esam savienojuši USBasp programmētāju ar Arduino. Zemāk esošais attēls sniegs jums labāku priekšstatu par iestatīšanu.
Drošinātāju pārbaude AVR
Testēšanas iestatījumi ir parādīti zemāk. Kā redzat, mēs esam savienojuši gan Arduino, gan USBasp programmētāju ar mana klēpjdatora USB.
Tagad atvērsim Arduino IDE un augšupielādēsim vienkāršu mirkšķināšanas skici. Pamirkšķināšanas skices saturs ir pašsaprotams, tāpēc es par to neievietoju sīkāku informāciju.
Videoklipā redzēsiet, ka tapas Nr. 13 mirgojošais LED mirgo, kā vajadzētu. Tagad uzlabosim drošinātāju iestatījumus un iestatīsim to noklusējuma vērtības. Un kā jau iepriekš redzējām datu lapā; EFUSE ir 0xFF; HFUSE ir D9; LFUSE ir: 62. Tagad konfigurēsim to ar Avrdude, mirgosim un redzēsim, kas notiks. Kods, kuru izmantosim, ir
avrdude -c usbasp -p m328P -U lfuse: w: 0x62: m -U hfuse: w: 0xd9: m -U efuse: w: 0xff: m
Kad es to izdarīšu, jūs redzēsiet, ka gaismas diode mirgos ārkārtīgi lēni, jo mēs esam aprēķinājuši un ieprogrammējuši 16Mhz pulksteņa vērtību, un tagad pēc drošinātāju sadedzināšanas tas ir tikai 1Mhz iekšējais RC oscilators. Tāpēc gaismas diode mirgo tik lēni. Tagad mēģināsim vēlreiz augšupielādēt skici. Mēs redzēsim, ka Arduino izdod kļūdu un kods netiek augšupielādēts. Tā kā, mainot drošinātājus, mēs esam sajaukuši arī sāknēšanas ielādētāja iestatījumus. To var redzēt zemāk esošajā attēlā.
Lai to labotu un lai Arduino atkal ievietotu tā, kā tas bija iepriekš, mums vienkārši vēlreiz jāsadedzina bootloader Arduino. Lai to izdarītu, dodieties uz Rīki -> Programmētājs - USBasp , un, kad mēs to izdarīsim, mēs atkal varam pāriet uz rīkiem un mēs varam noklikšķināt uz ierakstīšanas sāknēšanas ielādētāja opcijas. Tas atkal sadedzinās jūsu Arduino krājumu sāknēšanas programmu un viss atgriezīsies tāpat kā iepriekš.
Pēc tam, kad sāknēšanas ielādētājs tika atgriezts atpakaļ uz Arduino, tas atgriezās sākotnējā stāvoklī, un pēdējais attēls parāda mirgojošu gaismas diode pēc tam, kad sāknēšanas ielādētājs atkal tika sadedzināts.
Un tas iezīmē šī raksta beigas. Es ceru, ka jums patika raksts un uzzinājāt kaut ko jaunu. Ja jums ir kādi jautājumi par rakstu, nevilcinieties zemāk ievietot komentāru.