Kazalo:

Konfiguracija nastavkov varovalk mikrokontrolerja AVR. Ustvarjanje in nalaganje v bliskovni pomnilnik mikrokontrolerja LED utripajočega programa .: 5 korakov
Konfiguracija nastavkov varovalk mikrokontrolerja AVR. Ustvarjanje in nalaganje v bliskovni pomnilnik mikrokontrolerja LED utripajočega programa .: 5 korakov

Video: Konfiguracija nastavkov varovalk mikrokontrolerja AVR. Ustvarjanje in nalaganje v bliskovni pomnilnik mikrokontrolerja LED utripajočega programa .: 5 korakov

Video: Konfiguracija nastavkov varovalk mikrokontrolerja AVR. Ustvarjanje in nalaganje v bliskovni pomnilnik mikrokontrolerja LED utripajočega programa .: 5 korakov
Video: Лучше, чем FlexiClick? | Metabo Quick-System - быстрая замена и 130 Нм для гибкой работы 2024, Junij
Anonim
Image
Image

V tem primeru bomo ustvarili preprost program v kodi C in ga zapisali v pomnilnik mikrokrmilnika. Napisali bomo lasten program in zbrali šestnajstiško datoteko z uporabo Atmel Studio kot integrirane razvojne platforme. Z lastnim programerjem in programsko opremo AVRDUDE bomo konfigurirali bite varovalk in naložili šestnajstiško datoteko v pomnilnik mikrokrmilnika AVR ATMega328P.

AVRDUDE - je program za prenos in nalaganje pomnilnikov na čipu Atmelovih mikrokrmilnikov AVR. Lahko programira Flash in EEPROM, kjer to podpira protokol serijskega programiranja, pa lahko programira varovalke in ključe.

1. korak: S programom Atmel Studio napišite program in sestavite šestnajstiško datoteko

Pisanje programa in sestavljanje šestnajstiške datoteke z uporabo Atmel Studio
Pisanje programa in sestavljanje šestnajstiške datoteke z uporabo Atmel Studio
Pisanje programa in sestavljanje šestnajstiške datoteke z uporabo Atmel Studio
Pisanje programa in sestavljanje šestnajstiške datoteke z uporabo Atmel Studio

Če nimate programa Atmel Studio, ga prenesite in namestite:

Ta projekt bo uporabljal C, zato izberite možnost GCC C izvedljiv projekt s seznama predlog, da ustvarite izvedljiv projekt golih kosti.

Nato je treba določiti, za katero napravo bo projekt razvit. Ta projekt bo razvit za mikrokrmilnik AVR ATMega328P.

Vnesite kodo programa v urejevalnik glavnega vira v studiu Atmel. Urejevalnik glavnega vira - to okno je glavni urejevalnik izvornih datotek v trenutnem projektu. Urejevalnik ima funkcije preverjanja črkovanja in samodejnega dokončanja.

1. Prevajalniku moramo povedati, s kakšno hitrostjo teče naš čip, da lahko pravilno izračuna zamude.

#ifndef F_CPU

#define F_CPU 16000000UL // povedana frekvenca kristala krmilnika (16 MHz AVR ATMega328P) #endif

2. Vključujemo preambulo, kamor vnesemo informacije o vključitvi iz drugih datotek, ki opredeljujejo globalne spremenljivke in funkcije.

#include // glava za omogočanje nadzora pretoka podatkov nad zatiči. Določa zatiče, vrata itd.

#include // glava za omogočanje funkcije zamika v programu

3. Po preambuli pride funkcija main ().

int main (void) {

Funkcija main () je edinstvena in ločena od vseh drugih funkcij. Vsak program C mora imeti natanko eno funkcijo main (). Main () je mesto, kjer AVR začne izvajati vašo kodo, ko se prvič vklopi, zato je to vstopna točka programa.

4. Nastavite pin 0 na PORTB kot izhod.

DDRB = 0b00000001; // Nastavi PORTB1 kot izhod

To naredimo tako, da v register podatkovne smeri B. zapišemo binarno številko. Register smeri podatkov B nam omogoča vnos ali izhod bitov registra B. Če napišete 1, jih naredite izhodne, 0 pa jih vnese. Ker priklopimo LED, ki deluje kot izhod, zapišemo binarno število, tako da je pin 0 na PORT B kot izhod.

5. Zanka.

medtem ko (1) {

Ta stavek je zanka, ki se pogosto imenuje glavna zanka ali zanka dogodka. Ta koda je vedno resnična; zato se vedno znova izvaja v neskončni zanki. Nikoli ne preneha. Zato bo LED utripala v neskončnosti, razen če je mikrokrmilnik izklopljen ali koda izbrisana iz programskega pomnilnika.

6. Vklopite LED, priključeno na vrata PB0

PORTB = 0b00000001; // vklopi LED, priključeno na vrata PB0

Ta vrstica daje 1 PB0 PortB. PORTB je register strojne opreme na čipu AVR, ki vsebuje 8 zatičev, PB7-PB0, od leve proti desni. Če na koncu postavite 1, dobite 1 za PB0; to nastavi PB0 visoko, kar ga vklopi. Zato se bo LED, pritrjena na pin PB0, prižgala in zasvetila.

7. Zamuda

_dey_ms (1000); // ustvari 1-sekundno zamudo

Ta izjava ustvari 1-sekundno zamudo, tako da LED sveti in ostane vklopljena točno 1 sekundo.

8. Izklopite vse zatiče B, vključno s PB0

PORTB = 0b00000000; // Izklopi vse zatiče B, vključno s PB0

Ta linija izklopi vseh 8 zatičev vrat B, tako da je celo PB0 izklopljen, zato LED ugasne.

9. Še ena zamuda

_dey_ms (1000); // ustvari še 1-sekundno zamudo

Izklopi se natančno za 1 sekundo, preden znova zažene zanko in naleti na črto, ki jo znova vklopi in postopek ponovi. To se zgodi neskončno, tako da LED neprestano utripa in ugasne.

10. Izjava o vračilu

}

return (0); // ta vrstica nikoli ni dosežena}

Zadnja vrstica naše kode je stavek return (0). Čeprav se ta koda nikoli ne izvede, ker obstaja neskončna zanka, ki se nikoli ne konča, je za naše programe, ki se izvajajo na namiznih računalnikih, pomembno, da operacijski sistem ve, ali so delovali pravilno ali ne. Zato GCC, naš prevajalnik, želi, da se vsak main () konča z vrnilno kodo. Povratne kode niso potrebne za kodo AVR, ki deluje samostojno v katerem koli podpornem operacijskem sistemu; kljub temu bo prevajalnik sprožil opozorilo, če glavnega ne končate z return ().

Zadnji korak je izgradnja projekta. To pomeni sestavljanje in končno povezovanje vseh predmetnih datotek za ustvarjanje datoteke izvršljive datoteke (.hex). Ta šestnajstiška datoteka je ustvarjena v mapi Debug, ki je v mapi Project. Ta šestnajstiška datoteka je pripravljena za nalaganje v čip mikrokrmilnika.

2. korak: Spremenite privzeto konfiguracijo varovalk bitov mikro krmilnika

Spreminjanje privzete konfiguracije bitov varovalk mikro krmilnika
Spreminjanje privzete konfiguracije bitov varovalk mikro krmilnika
Spreminjanje privzete konfiguracije bitov varovalk mikro krmilnika
Spreminjanje privzete konfiguracije bitov varovalk mikro krmilnika
Spreminjanje privzete konfiguracije bitov varovalk mikro krmilnika
Spreminjanje privzete konfiguracije bitov varovalk mikro krmilnika

Pomembno si je zapomniti, da se nekateri deli varovalk lahko uporabijo za zaklepanje nekaterih vidikov čipa in ga lahko potencialno opečejo (postane neuporaben)

V ATmega328P se uporablja skupaj 19 varovalk, ki so ločene v tri različne bajte varovalk. Trije bitovi varovalk so v "podaljšanem bajtu varovalk", osem v "visokem bajtu varovalk", še osem pa v "nizkem bajtu varovalk". Obstaja tudi četrti bajt, ki se uporablja za programiranje zaklepnih bitov.

Vsak bajt je 8 bitov in vsak bit je ločena nastavitev ali zastavica. Ko govorimo o nastavitvi, ne nastavitvi, programiranih in ne programiranih varovalkah, dejansko uporabljamo binarne. 1 pomeni ni nastavljeno, ni programirano in nič pomeni nastavljeno, programirano. Pri programiranju varovalk lahko uporabite binarni zapis ali pogosteje šestnajstiški zapis.

Čipi ATmega 328P imajo vgrajen RC oscilator, ki ima frekvenco 8 MHz. S tem kompletom kot virom ure in varovalko CKDIV8 so poslani novi čipi, kar ima za posledico sistemsko uro 1 MHz. Čas zagona je nastavljen na največjo možno vrednost, čas zakasnitve pa omogočen.

Novi čipi ATMega 328P imajo na splošno naslednje nastavitve varovalk:

Nizka varovalka = 0x62 (0b01100010)

Visoka varovalka = 0xD9 (0b11011001)

Podaljšana varovalka = 0xFF (0b11111111)

Uporabljali bomo čip ATmega 328 z zunanjim 16MHz kristalom. Zato moramo ustrezno programirati bite "Fuse Low Byte".

1. Biti 3-0 nadzirajo izbiro oscilatorja, privzeta nastavitev 0010 pa je uporaba kalibriranega notranjega RC oscilatorja, česar ne želimo. Želimo delovanje kristalnega oscilatorja z nizko močjo od 8,0 do 16,0 MHz, zato je treba bit 3-1 (CKSEL [3: 1]) nastaviti na 111.

2. Bita 5 in 4 nadzorujeta čas zagona, privzeta nastavitev 10 pa je za zakasnitev zagona šest ciklov ure od izklopa in varčevanja z energijo ter dodatna zamuda pri zagonu 14 ciklov ur in 65 milisekund od ponastavitve.

Da bi bili varni pri kristalnem oscilatorju z nizko močjo, želimo največjo možno zakasnitev 16 000 taktov takta od izklopa in varčevanja z energijo, zato je treba SUT [1] nastaviti na 1 in dodatno zamudo pri zagonu 14 ciklov ure plus 65 milisekund od ponastavitve, zato je treba SUT [0] nastaviti na 1. Poleg tega je treba CKSEL [0] nastaviti na 1.

3. Bit 6 nadzoruje izhod ure na PORTB0, kar nas ne zanima. Tako lahko bit 6 nastavimo na 1.

4. Bit 7 nadzoruje deljenje z 8 in privzeta nastavitev 0 ima omogočeno funkcijo, česar ne želimo. Zato je treba bit 7 spremeniti iz 0 v 1.

Zato bi moral biti novi nizki bajt varovalk 11111111, ki je v šestnajstiškem zapisu 0xFF

Za programiranje bitov "Fuse Low Byte" lahko uporabimo naš programer (https://www.instructables.com/id/ISP-Programmer-fo…) in programsko opremo AVRDUDE. AVRDUDE je pripomoček ukazne vrstice, ki se uporablja za prenos in nalaganje v mikrokrmilnike Atmel.

Prenesite AVRDUDE:

Najprej moramo v opisno datoteko programa AVRDUDE dodati opis našega programerja. V sistemu Windows je konfiguracijska datoteka običajno na istem mestu kot izvršljiva datoteka programa AVRDUDE.

Prelepite besedilo v konfiguracijski datoteki avrdude.conf:

# ISPProgv1

programer id = "ISPProgv1"; desc = "udarjanje v serijska vrata, ponastavitev = dtr sck = rts mosi = txd miso = cts"; type = "serbb"; vrsta povezave = serijska; ponastavitev = 4; sck = 7; mosi = 3; miso = 8;;

Pred zagonom programa AVRDUDE moramo mikrokontroler povezati s programerjem v skladu s shemo

Odprite okno poziva DOS.

1. Za ogled seznama programerja, ki ga podpira avrdude, vnesite ukaz avrdude -c c. Če je vse v redu, mora biti na seznamu programerja "ISPProgv1"

2. Če si želite ogledati seznam naprav Atmel, ki jih podpira avrdude, vnesite ukaz avrdude -c ISPProgv1. Na seznamu mora biti naprava m328p za Atmel ATMega 328P.

Nato vnesite avrdude -c ISPProgv1 -p m328p, ukaz avrdude pove, kateri programer se uporablja in kateri mikrokontroler Atmel je priključen. Predstavlja podpis ATmega328P v šestnajstiškem zapisu: 0x1e950f. Predstavlja programiranje bitov varovalk, ki je trenutno v ATmega328P, tudi v šestnajstiškem zapisu; v tem primeru so bajti varovalk programirani na tovarniško privzeto vrednost.

Nato vnesite avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m. To je ukaz, ki avrdude pove, kateri programer se uporablja in kateri Atmel mikrokrmilnik je priključen, ter spremenite spodnji bajt varovalke na 0xFF.

Zdaj bi signal ure moral prihajati iz kristalnega oscilatorja majhne moči.

3. korak: zapisovanje programa v pomnilnik mikrokontrolerja ATMega328P

Zapis programa v pomnilnik mikrokontrolerja ATMega328P
Zapis programa v pomnilnik mikrokontrolerja ATMega328P
Zapis programa v pomnilnik mikrokontrolerja ATMega328P
Zapis programa v pomnilnik mikrokontrolerja ATMega328P

Najprej v imenik AVRDUDE kopirajte šestnajstiško datoteko programa, ki smo ga naredili na začetku navodila.

Nato v okno poziva DOS vnesite ukaz avrdude –c ISPProgv1 –p m328p –u –U flash: w: [ime vaše šestnajstiške datoteke]

Ukaz zapiše šestnajstiško datoteko v pomnilnik mikrokrmilnika. Zdaj mikrokrmilnik deluje v skladu z navodili našega programa. Preverimo!

4. korak: Preverite delovanje mikrokrmilnika v skladu z navodili našega programa

Preverite delovanje mikrokrmilnika v skladu z navodili našega programa
Preverite delovanje mikrokrmilnika v skladu z navodili našega programa
Preverite delovanje mikrokrmilnika v skladu z navodili našega programa
Preverite delovanje mikrokrmilnika v skladu z navodili našega programa
Preverite delovanje mikrokrmilnika v skladu z navodili našega programa
Preverite delovanje mikrokrmilnika v skladu z navodili našega programa

Komponente povežite v skladu s shematskim diagramom utripajočega LED vezja AVR

Najprej potrebujemo moč, tako kot vsa vezja AVR. Za delovanje čipa AVR zadostuje približno 5 voltov moči. To lahko dobite iz baterij ali enosmernega napajanja. Na pin 7 priključimo +5V napajanja in pin 8 priključimo na maso na plošči. Med obe nožici postavimo 0,1μF keramični kondenzator, da izravnamo moč napajalnika, tako da čip AVR dobi gladko napajalno linijo.

10KΩ upor se uporablja za napajanje naprave ob ponovnem vklopu (POR). Ko je napajanje vklopljeno, bo napetost na kondenzatorju enaka nič, zato se naprava ponastavi (ker je ponastavitev aktivna nizko), se kondenzator napolni na VCC in ponastavitev bo onemogočena.

Priključimo anodo naše LED na pin AVR PB0. To je pin 14 ATMega328P. Ker gre za LED, želimo omejiti tok, ki teče na LED, da ne izgori. Zato z LED diodo zaporedno namestimo 330Ω upor. Katoda LED se poveže z maso.

16 MHz kristal se uporablja za zagotavljanje ure za mikrokrmilnik Atmega328, kondenzatorji 22pF pa za stabilizacijo delovanja kristala.

To so vse povezave, potrebne za prižig LED. Napajanje.

V redu. LED utripa z eno sekundno zamudo. Delo mikrokrmilnika ustreza našim nalogam

5. korak: Zaključek

Resda je bil to dolg postopek za samo utripanje LED, vendar je resnica, da ste uspešno odpravili velike ovire: ustvarjanje strojne platforme za programiranje mikrokrmilnika AVR, uporaba Atmel Studio kot integrirane razvojne platforme, uporaba AVRDUDE kot programske opreme za konfiguriranje in programiranje mikrokrmilnika AVR

Če želite biti na tekočem z mojimi projekti osnovnih krmilnikov, se naročite na moj YouTube! Gledanje in izmenjava mojih videoposnetkov je podpora za to, kar počnem

Naročite se na kanal YouTube FOG

Priporočena: