- Mitä sulakkeet ovat AVR: ssä - yksityiskohtainen selitys
- Sulakepalat Arduinossa
- Komponentit, joita tarvitaan sulakkeiden testaamiseen AVR: ssä
- Kaavio AVR: n sulakebittien testaamiseksi
- Sulakkeiden testaus AVR: ssä
Tässä opetusohjelmassa puhumme sulakkeista. Takaisin, kun olin yliopistossa ja oppinut elektroniikan hienoista asioista, kuulin termin sulake AVR: ssä ensimmäistä kertaa, ensimmäinen ajatukseni aiheesta oli, oh! AVR: n sisällä on jotain, joka räjähtää, jos tein jotain väärin. Silloin Internetissä ei ollut paljon käytettävissä olevia resursseja. Etsin melko vähän saadakseni selville, että nämä sulakkeet viittasivat joihinkin erityisiin bitteihin AVR-mikrokontrollerin sisällä. Nämä bitit ovat kuin pieniä kytkimiä AVR: n sisällä, ja kytkemällä ne päälle / pois päältä voimme kytkeä päälle / pois joitain AVR: n erityispiirteitä. Virran kytkeminen päälle ja pois päältä tarkoittaa asettamista ja palauttamista.
Käytämme tätä tilaisuutta keskustellaksemme kaikesta AVR: n sulakebiteistä. Otamme yksinkertaisuuden vuoksi esimerkin Arduino-kortista, jossa on suosittu ATmega328P-mikrokontrolleri. Täällä opit asettamaan nämä sulakkeet joidenkin näiden ominaisuuksien kytkemiseksi päälle ja pois päältä, mikä on todella hyödyllistä tosielämän sovelluksissa. Joten, mennään suoraan siihen.
Aikaisemmissa viesteissämme olemme rakentaneet paljon AVR-mikrokontrolleriprojekteja, kuten Interfacing GSM -moduuli AVR-mikrokontrollerilla ja Interfacing HC-05 AVR-mikrokontrollerilla. Voit tarkistaa ne, jos haluat oppia lisää näistä projekteista.
Mitä sulakkeet ovat AVR: ssä - yksityiskohtainen selitys
Kuten aiemmin keskustelimme, mikro-ohjaimen sulakkeet ovat kuin pieniä kytkimiä, jotka voidaan kytkeä päälle ja pois päältä, jotta AVR-mikrokontrollerin eri toiminnot voidaan ottaa käyttöön ja poistaa käytöstä. Tämä on osa, josta seuraava kysymyksemme herää, joten miten asetamme tai palautamme nämä sulakkeet? Vastaus tähän kysymykseen on yksinkertainen: Teemme sen sulakerekistereiden avulla.
ATmega328P IC: ssä on yhteensä 19 sulakebittiä ja ne on jaettu kolmeen sulaketavuun. Ne määritellään "laajennetuiksi sulaketavuiksi", "korkean sulaketavun" ja "matalan sulaketavun".
Jos tarkastelet ATmega328 / P-tietolomakkeen Rev: 7810D – AVR – 01/15 taulukkoa 27, saat selville kaikki pienet yksityiskohdat sulakebiteistä. Mutta alla oleva kuva antaa sinulle paremman kuvan taulukon sulakebittien osasta.
Nyt kun olet oppinut hieman sulakebiteistä, käydään läpi taulukkolaskenta ja selvitetään kaikki tarvittavat tiedot tästä IC: stä.
Laajennetut sulakebitit:
Kun napsautat Sulakebitit-välilehteä ja vierität hieman alaspäin, löydät taulukon 27-5: joka näyttää taulukon laajennetulle sulaketavulle, joka tunnetaan yleisesti nimellä " EFUSE". Alla oleva kuva osoittaa täsmälleen sen.
Tässä taulukossa on vain kolme käyttökelpoista bittiä, ja muut kolme on varattu. Nämä kolme bittiä käsittelevät Brownout Detection -tasoa. Kuten huomautuksesta näet, jos tarkastelemme taulukkoa 28-5, voimme löytää siitä lisätietoja.
Kuten yllä olevasta taulukosta näet, meillä on taulukko Brownout Detectionille. Pudotuksen tunnistus on ominaisuus, joka nollaa mikrokontrollerin, kun syöttöjännite putoaa tietyn jännitetason alapuolelle. ATmega328P IC: ssä voimme poistaa kokonaan käytöstä pimenemisen havaitsemisen tai asettaa sen tasoille, jotka on esitetty yllä olevassa taulukossa.
Suuri sulake tavua:
Kuten alla olevasta kuvasta näet, taulukon taulukot 27-6: esittävät ATmega328P IC: n korkeammat sulake-bitit.
Korkea Sulake käsitellä erilaisia tehtäviä sisällä ATmega328 mikro. Tässä osiossa puhutaan ylemmän tason sulakebiteistä ja niiden toiminnasta. Aloitetaan BOOTRST-, BOOTSZ0- ja BOOTSZ1-biteillä. Nämä kolme bittiä vastaavat kengän koon asettamisesta; käynnistyskoko viittaa käynnistyslataimen asentamiseen varatun muistin määrään .
Bootloader on erityinen ohjelmisto, joka toimii mikro-ohjaimen päällä ja hallitsee erilaisia tehtäviä. Mutta Arduinon tapauksessa käynnistyslatainta käytetään lataamaan Arduino-luonnos mikro-ohjaimen sisälle. Yhdessä edellisistä artikkeleistamme olemme osoittaneet, kuinka käynnistyslatausohjelma poltetaan ATmega328P: ssä Arduinon avulla. Voit tarkistaa sen, jos olet kiinnostunut aiheesta. Palataksemme aiheeseemme, muiden korkean tavun muiden bittien tarkoitukset tehdään kohtuullisen selviksi, EESAVE-bitti on säilyttää EEPROM-muisti sirun tyhjennysjakson aikana. WDTON-bitin on otettava käyttöön tai pois käytöstä Watchdog Timer.
Vartija-ajastin on ATmega328P IC: n erityinen ajastin, jolla on erillinen kello ja joka toimii itsenäisesti. Jos vahtikoiran ajastin on käytössä, sinun on tyhjennettävä se tietyllä ajanjaksolla, muuten vahdin ajastin nollaa mikro-ohjaimen. Tämä on hyödyllinen ominaisuus, joka tulee moniin mikro-ohjaimiin, jos prosessori jumittuu; vahtikoira nollaa sen estääkseen loppusovelluksen vahingoittumisen.
DWEN-bitti on olemassa virheenkorjausjohdon ottamiseksi käyttöön; tämä on valmisteluprotokolla, joka on sisäänrakennettu heidän laitteistoihinsa, jota käytetään suorittimien ohjelmointiin ja virheenkorjaukseen. Kun tämä ominaisuus on käytössä, voit salata ja virittää prosessoria yhdellä johdolla. Mutta sen käyttämiseen tarvitaan erityinen laitteisto, joka on valmisteleva Atmelille.
Loput kaksi bittiä ovat niitä, joita sinun on vältettävä, ellet tiedä tarkalleen mitä olet tekemässä. Nämä ovat RSTDISBL-bitti 7 ja SPIEN bitti 5. RSTDISBL (External Reset Disable), kuten nimestä käy ilmi, poistaa ulkoisen laitteiston palautustapin käytöstä, ja SPIEN-bittiä käytetään SPI-ohjelmointirajapinnan poistamiseen käytöstä. Jommankumman näistä kahdesta bitistä poistaminen käytöstä voi täysin AVR: n; joten heidän jättäminen yksin on hyvä idea.
Matala sulake tavua:
Kuten alla olevasta kuvasta näet, taulukon taulukot 27-7: esittävät ATmega328P IC: n alemman sulakkeen bitit.
Tämä sulaketavu on vastuussa kellolähteen ja joidenkin muiden kellon parametrien asettamisesta AVR: n sisällä. Tässä osassa opimme kaikesta.
Seitsemäs bitti tai CKDIV8-lippu voidaan asettaa jakamaan kellolähde kahdeksalla, tämä on erittäin kätevää, jonka saatat jo tietää, jos olet yrittänyt ohjelmoida AVR: n itse. Seuraava bitti on CKOUT-bitti ja se on kuudes bitti matalan sulakkeen tavussa. Sen ohjelmointi antaisi sisäisen kellosignaalin mikro-ohjaimen PORTB0: lle.
Bitit-5 ja bitti-4 SUT1 ja SUT0 ohjaavat mikro-ohjaimen käynnistymisaikaa. Tämä estää kaikki käynnistystoimet, joita voi tapahtua tai ei, ennen kuin syöttöjännite saavuttaa hyväksyttävän minimikynnysjännitetason. Ja neljää viimeistä CKSEL0 - 4 bittiä käytetään mikro-ohjaimen kellolähteen valitsemiseen. Alla oleva taulukko antaa sinulle paremman käsityksen näistä neljästä bitistä, jotka ovat vastuussa kellolähteen määrittämisestä. Löydät tämän taulukon taulukon Kellolähde-osiosta.
Nyt, ennen kuin pääsemme eteenpäin, on vielä yksi asia, jonka minun pitäisi käydä läpi, on taulukko oskillaattorin käynnistysviiveestä. Käynnistysviiveellä tarkoitamme sulakkeen alatavun bittiä 4 ja 5. Viiveet on asetettava riippuen olosuhteista, joissa piiri toimii, ja käyttämäsi oskillaattorin tyypistä. Oletusarvot asetetaan hitaasti nousevalle teholle 6 kellosyklillä, kun käynnistys- tai sammutusjakso suoritetaan. Seuraavaksi on uusi 14 kellosyklin viive 65 Ms viiveellä käynnistyksen jälkeen.
Huh huh! Se oli paljon tietoa sulatettavaksi. Mutta ennen kuin jatkat, lopetetaan tämä osio nopeasti.
merkintä:
Jos olet katsonut tietolomaketta huolellisesti, sinun on pitänyt huomata, että sulakebitin ohjelmointi tarkoittaa sen asettamista matalaksi, ts. 0 (nolla), mikä on päinvastaista mitä teemme yleensä tehdäksesi portista korkean tai matalan. Sinun on pidettävä tämä mielessä sulakkeita määritettäessä.
Sulakepalat Arduinossa
Olemme puhuneet paljon sulakkeista edellisessä osassa, mutta tässä osassa puhutaan kuinka konfiguroida ne ja kuinka kirjoittaa ne mikro-ohjaimeen. Tätä varten tarvitsemme työkalun nimeltä Avrdude. Se on työkalu, jota voidaan käyttää AVR-mikrokontrollerien muistin lukemiseen, kirjoittamiseen ja muokkaamiseen. Se toimii SPI: n kanssa ja sillä on pitkä luettelo tuesta erityyppisille ohjelmoijille. voit ladata työkalun alla olevasta linkistä. Lisäksi käytämme suosikki mikro-ohjainta Arduinoa.
- Lataa Avrdude-versio 6.3 Windows-ming32
Nyt kun sinulla on Avrdude, sinun on purettava se ja avattava komentoikkuna kyseisessä kansiossa. Lisäksi, jos aiot käyttää sitä myöhemmin, voit lisätä kansion polun Windows-ympäristömuuttujaosioon. Mutta laitan sen työpöydällesi ja avaan komentoikkunan siellä. Kun olemme tehneet sen, yhdistämme USBasp-ohjelmoijan tietokoneeseemme ja varmistamme, että meillä on oikea ohjain USBasp-ohjelmoijalle. Kun olemme tehneet sen, meillä on hyvä mennä ja luemme ensin sulakkeen oletusarvon. Tätä varten sinun on suoritettava seuraava komento.
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
Jos kaikki on oikein, tämä komento lukee sulaketavut ja laittaa ne kolmeen erilliseen tekstitiedostoon. Alla oleva kuva antaa sinulle paremman kuvan prosessista.
Kuten näette, Avrdude luki Arduino nanon sulakebitit ja tallensi ne kolmeen erilliseen tekstitiedostoon. Nyt avasimme ne ja saimme kolme arvoa; for EFUSE: 0xFD, sillä HFUSE: 0XDA, sillä LFUSE: 0xFF. Tämä oli oletusarvoinen sulakearvo, jonka saimme Arduino-nanolle. Muunna nyt nämä bitit binaariksi ja verrataan niitä oletusarvoonsa taulukosta. Seuraava taulukko osoittaa täsmälleen sen.
Mukavuuden vuoksi sulakebitit kirjoitetaan heksadesimaaliarvoina, mutta jos muunnamme ne binaariarvoiksi ja verrataan niitä taulukkoon, tiedämme mitä tapahtuu. Aloitetaan alemmalla sulaketavulla. Kuten yllä olevasta merkkijonosta näet, se on asetettu arvoon 0XFF ja binääriarvo olisi 0B11111111.
Alemman sulaketavun vertailu Arduinoon:
Matala sulaketavu |
Bitti nro |
Oletusarvo AVR: ssä |
Arduinon oletusarvo |
CKDIV8 |
7 |
0 (ohjelmoitu) |
1 (ohjelmoimaton) |
CKOUT |
6 |
1 (ohjelmoimaton) |
1 (ohjelmoimaton) |
SUT1 |
5 |
1 (ohjelmoimaton) |
1 (ohjelmoimaton) |
SUT0 |
4 |
0 (ohjelmoitu) |
1 (ohjelmoimaton) |
CKSEL3 |
3 |
0 (ohjelmoitu) |
1 (ohjelmoimaton) |
CKSEL2 |
2 |
0 (ohjelmoitu) |
1 (ohjelmoimaton) |
CKSEL1 |
1 |
1 (ohjelmoimaton) |
1 (ohjelmoimaton) |
CKSEL0 |
0 |
0 (ohjelmoitu) |
1 (ohjelmoimaton) |
Korkeamman sulaketavan tavaksi on asetettu 0XDA binaarissa, joka on 0B11011010.
Suurempi sulaketavu binäärimuodossa:
Suuri sulake tavu |
Bitti nro |
Oletusarvo AVR: ssä |
Arduinon oletusarvo |
RSTDISBL |
7 |
1 (ohjelmoimaton) |
1 (ohjelmoimaton) |
DWEN |
6 |
1 (ohjelmoimaton) |
1 (ohjelmoimaton) |
SPIEN |
5 |
0 (ohjelmoitu) |
0 (ohjelmoitu) |
WDTON |
4 |
1 (ohjelmoimaton) |
1 (ohjelmoimaton) |
EESAVE |
3 |
1 (ohjelmoimaton) |
1 (ohjelmoimaton) |
BOOTSZ1 |
2 |
0 (ohjelmoitu) |
0 (ohjelmoitu) |
BOOTSZ0 |
1 |
0 (ohjelmoitu) |
1 (ohjelmoimaton) |
BOOTRST |
0 |
1 (ohjelmoimaton) |
0 (ohjelmoitu)) |
Laajennetun sulaketavun asetus on 0XFD, binäärisesti se on 0B11111101.
Laajennettu sulaketavu binäärimuodossa:
Laajennettu sulaketavu |
Bitti nro |
Oletusarvo AVR: ssä |
Arduinon oletusarvo |
- |
7 |
1 |
1 |
- |
6 |
1 |
1 |
- |
5 |
1 |
1 |
- |
4 |
1 |
1 |
- |
3 |
1 |
1 |
BODLEVEL2 |
2 |
1 (ohjelmoimaton) |
1 (ohjelmoimaton) |
BODLEVEL1 |
1 |
1 (ohjelmoimaton) |
0 (ohjelmoitu) |
BODLEVEL0 |
0 |
1 (ohjelmoimaton) |
1 (ohjelmoimaton) |
Nyt tämä merkitsee tämän osan loppua. Tähän mennessä olemme oppineet paljon AVR-mikrokontrollerista ja sen sulakebiteistä. Joten, tiivistetään tämä artikkeli kokeilemalla teoriamme muuttamalla ja kokeilemalla joitain Arduino nanon sulakebittejä.
Komponentit, joita tarvitaan sulakkeiden testaamiseen AVR: ssä
Olemme puhuneet paljon sulakkeista yllä olevassa osassa. Mutta jatkaaksesi artikkelissa tarvitsemme joitain laitteistokomponentteja ja joitain ohjelmistotyökaluja. Tässä osiossa puhumme niistä. Alla on luettelo vaadituista komponenteista ja kuvista.
- Leipälauta - 1
- Arduino Nano - 1
- USBasp AVR-ohjelmoija - 1
- USB-kaapeli - 1
- AVR 10-nastainen 6-nastainen muunnin - 1
- Avrdude (ohjelmistotyökalu AVR: n ohjelmointiin)
- LED - 1
- 330R-vastus - 1
- Käynnistyskaapelit
Kaavio AVR: n sulakebittien testaamiseksi
Laitteistotestausasetus näkyy alla tässä asennuksessa. Olemme liittäneet Arduino Nanon tietokoneeseen USB-kaapelilla ja myös USBasp-ohjelmoijan tietokoneeseen. Tämän artikkelin tarkoituksena on ohjelmoida sulakebitit AVR: ään. Tästä syystä olemme liittäneet USBasp-ohjelmoijan Arduinoon. Alla oleva kuva antaa sinulle paremman kuvan asennuksesta.
Sulakkeiden testaus AVR: ssä
Testausasetukset on esitetty alla. Kuten näette, olemme liittäneet Arduinon ja USBasp-ohjelmoijan molemmat kannettavan tietokoneeni USB: hen.
Avaa nyt Arduino IDE ja lataa vilkkuva peruspiirros. Vilkkuvan peruspiirroksen sisältö on itsestään selvä, joten en laatinut siitä mitään yksityiskohtia.
Näet videosta, että tapin nro 13 led vilkkuu niin kuin pitäisi. Säädetään nyt sulakeasetuksia ja asetetaan sen oletusarvoihin. Ja kuten olemme aiemmin nähneet lomakkeesta; EFUSE on 0xff; HFUSE on D9; LFUSE on: 62. Määritetään nyt se Avrdudella, salama se ja katsotaan mitä tapahtuu. Käytettävä koodi on-
avrdude -c usbasp -p m328P -U lfuse: w: 0x62: m -U hfuse: w: 0xd9: m -U efuse: w: 0xff: m
Kun teen tämän, näet, että LED vilkkuu erittäin hitaasti, koska olemme laskeneet ja ohjelmoineet 16 MHz: n kellon arvon ja nyt sulakkeiden polttamisen jälkeen se on vain 1 MHz: n sisäinen RC-oskillaattori. Siksi LED vilkkuu niin hitaasti. Yritetään nyt lähettää luonnos vielä kerran. Näemme, että Arduino antaa virheen ja koodia ei ladata. Koska sulakkeita muuttamalla olemme sekoittaneet myös käynnistyslataimen asetukset. Voit nähdä sen alla olevasta kuvasta.
Tämän korjaamiseksi ja Arduinon asettamiseksi takaisin entiseen tapaan meidän on vain poltettava käynnistyslatain uudelleen Arduinolle. Voit tehdä sen siirtymällä Työkalut -> Ohjelmoija - USBasp , ja kun olemme tehneet sen, voimme jälleen siirtyä työkaluihin ja napsauttaa polta käynnistyslataimen vaihtoehtoa. Tämä polttaa jälleen Arduinon varastokäynnistimen ja kaikki palaa entiseen tapaan.
Kun käynnistyslatain oli palautettu takaisin Arduinoon, se palasi alkuperäiseen tilaansa ja viimeinen kuva näyttää vilkkuvan LED-valon, kun käynnistyslatain on palanut uudelleen.
Ja tämä merkitsee tämän artikkelin loppua. Toivottavasti pidit artikkelista ja opit jotain uutta. Jos sinulla on kysyttävää artikkelista, älä epäröi kirjoittaa kommenttia alla.