Indholdsfortegnelse:
- Trin 1: Skriveprogram og kompilér hex -filen ved hjælp af Atmel Studio
- Trin 2: Ændring af standardkonfigurationen af mikrokontrollerens sikringsbits
- Trin 3: Brænding af programmet i hukommelsen til ATMega328P mikrokontroller
- Trin 4: Kontroller, at mikrokontroller fungerer i overensstemmelse med instruktionerne i vores program
- Trin 5: Konklusion
Video: Konfiguration af AVR -mikrokontroller -sikringsbits. Oprettelse og upload i Flash -hukommelsen af mikrokontroller LED -blinkende program .: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
I dette tilfælde vil vi oprette et enkelt program i C -kode og brænde det ind i hukommelsen til mikrokontrolleren. Vi vil skrive vores eget program og kompilere hex -filen ved hjælp af Atmel Studio som den integrerede udviklingsplatform. Vi konfigurerer sikringsbits og uploader hex -filer til hukommelsen til AVR ATMega328P mikrokontroller ved hjælp af vores egen programmør og software AVRDUDE.
AVRDUDE - er et program til at downloade og uploade hukommelseskort på Atmels AVR -mikrokontrollere. Det kan programmere Flash og EEPROM, og hvor det understøttes af den serielle programmeringsprotokol, kan det programmere sikring og låse bits.
Trin 1: Skriveprogram og kompilér hex -filen ved hjælp af Atmel Studio
Hvis du ikke har Atmel Studio, skal du downloade og installere det:
Dette projekt bruger C, så vælg indstillingen GCC C Executable Project fra skabelonlisten for at generere et eksekverbart projekt med bare ben.
Dernæst er det nødvendigt at angive, hvilken enhed projektet vil blive udviklet til. Dette projekt vil blive udviklet til AVR ATMega328P mikrokontroller.
Indtast programkoden i området Main Source Editor i Atmel Studio. Hovedkildeditor - Dette vindue er hovededitor for kildefilerne i det aktuelle projekt. Editoren har stavekontrol og automatiske komplette funktioner.
1. Vi skal fortælle kompilatoren med hvilken hastighed vores chip kører til, at den kan beregne forsinkelser korrekt.
#ifndef F_CPU
#define F_CPU 16000000UL // fortæller controller krystalfrekvens (16 MHz AVR ATMega328P) #endif
2. Vi inkluderer præamblen, som er, hvor vi sætter vores inklusive oplysninger fra andre filer, som definerer globale variabler og funktioner.
#include // header for at aktivere dataflowkontrol over pins. Definerer stifter, porte osv.
#include // header for at aktivere forsinkelsesfunktion i programmet
3. Efter præamblen kommer hovedfunktionen ().
int main (void) {
Hovedfunktionen () er unik og adskilt fra alle andre funktioner. Hvert C -program skal have nøjagtigt en hovedfunktion (). Main () er, hvor AVR begynder at eksekvere din kode, når strømmen først går på, så det er programmets indgangspunkt.
4. Indstil pin 0 på PORTB som output.
DDRB = 0b00000001; // Indstil PORTB1 som output
Vi gør dette ved at skrive et binært tal til dataretningsregistret B. Dataretningsregistret B giver os mulighed for at lave bitene af register B -input eller output. Hvis du skriver en 1, får de output, mens en 0 giver dem input. Da vi vedhæfter en LED til at fungere som output, skriver vi et binært tal, hvilket gør pin 0 til PORT B som output.
5. Sløjfe.
mens (1) {
Denne erklæring er en sløjfe, der ofte omtales som hovedsløjfen eller hændelsesløkken. Denne kode er altid sand; derfor udføres den igen og igen i en uendelig loop. Det stopper aldrig. Derfor vil LED'en blinke uendeligt, medmindre strømmen afbrydes fra mikrokontrolleren eller koden slettes fra programhukommelsen.
6. Tænd lysdioden, der er tilsluttet port PB0
PORTB = 0b00000001; // tænder LED tilsluttet port PB0
Denne linje giver 1 til PB0 for PortB. PORTB er et hardware-register på AVR-chippen, der indeholder 8 ben, PB7-PB0, der går fra venstre mod højre. At sætte en 1 for enden giver en 1 til PB0; dette sætter PB0 højt, hvilket tænder det. Derfor vil LED'en, der er fastgjort til pin PB0, tænde og lyse.
7. Forsinkelse
_forsinkelse_ms (1000); // skaber en forsinkelse på 1 sekund
Denne erklæring skaber en forsinkelse på 1 sekund, så LED'en tænder og forbliver tændt i præcis 1 sekund.
8. Sluk for alle B -ben, inklusive PB0
PORTB = 0b00000000; // Slukker alle B -ben, inklusive PB0
Denne linje slukker alle 8 Port B -ben, så selv PB0 er slukket, så LED'en slukker.
9. Endnu en forsinkelse
_forsinkelse_ms (1000); // skaber endnu en sekunds forsinkelse
Den slukker nøjagtigt i 1 sekund, inden loop starter igen forfra og støder på linjen, som tænder den igen, og gentager processen hele vejen igennem. Dette sker uendeligt, så LED'en konstant blinker til og fra.
10. Returopgørelse
}
retur (0); // denne linje er faktisk aldrig nået}
Den sidste linje i vores kode er en retur (0) erklæring. Selvom denne kode aldrig udføres, fordi der er en uendelig sløjfe, som aldrig ender, for vores programmer, der kører på stationære computere, er det vigtigt for operativsystemet at vide, om de kørte korrekt eller ej. Af den grund ønsker GCC, vores kompilator, at alle main () slutter med en returkode. Returkoder er unødvendige for AVR -kode, der kører fritstående for ethvert understøttende operativsystem; ikke desto mindre vil kompilatoren give en advarsel, hvis du ikke afslutter main med return ().
Det sidste trin er at bygge projektet. Det betyder at kompilere og endelig forbinde alle objektfiler for at generere den eksekverbare fil (.hex) -fil. Denne hex -fil genereres inde i mappen Debug, som er inde i Project -mappen. Denne hex -fil er klar til at blive indlæst i mikrokontrollerchippen.
Trin 2: Ændring af standardkonfigurationen af mikrokontrollerens sikringsbits
Det er vigtigt at huske, at nogle af sikringsbitene kan bruges til at låse visse aspekter af chippen og potentielt kan tegne den (gøre den ubrugelig)
Der er i alt 19 sikringsbits, der bruges i ATmega328P, og de er opdelt i tre forskellige sikringsbytes. Tre af sikringsbitene er indeholdt i "Extended Fuse Byte", otte er indeholdt i "Fuse High Byte", og otte flere er indeholdt i "Fuse Low Byte". Der er også en fjerde byte, der bruges til at programmere låsebitene.
Hver byte er 8 bit, og hver bit er en separat indstilling eller et flag. Når vi taler om indstilling, ikke indstilling, programmerede, ikke programmerede sikringer, bruger vi faktisk binær. 1 betyder ikke indstillet, ikke programmeret og et nul betyder, programmeret. Når du programmerer sikringerne, kan du bruge binær notation eller mere almindeligt hexadecimal notation.
ATmega 328P chips har en indbygget RC oscillator, der har en 8 MHz frekvens. Nye chips sendes med dette sæt som urkilde, og CKDIV8 -sikringen er aktiv, hvilket resulterer i et 1 MHz systemur. Opstartstiden er sat til maksimum og time-out-periode aktiveret.
Nye ATMega 328P -chips har generelt følgende sikringsindstillinger:
Lav sikring = 0x62 (0b01100010)
Høj sikring = 0xD9 (0b11011001)
Udvidet sikring = 0xFF (0b11111111)
Vi vil bruge ATmega 328 -chip med en ekstern 16MHz krystal. Derfor er vi nødt til at programmere bits af "Fuse Low Byte" i overensstemmelse hermed.
1. Bit 3-0 styrer oscillatorvalget, og standardindstillingen på 0010 er at bruge den kalibrerede interne RC-oscillator, som vi ikke ønsker. Vi vil have laveffekt-krystaloscillatoroperationen fra 8,0 til 16,0 MHz, så bit 3-1 (CKSEL [3: 1]) bør sættes til 111.
2. Bit 5 og 4 styrer opstartstiden, og standardindstillingen på 10 er for en opstartforsinkelse på seks urcyklusser fra nedlukning og strømbesparelse plus en ekstra opstartforsinkelse på 14 urcyklusser plus 65 millisekunder fra nulstilling.
For at være på den sikre side for en krystaloscillator med lav effekt, ønsker vi den maksimale forsinkelse på 16.000 urcyklusser fra nedlukning og strømbesparelse, så SUT [1] bør sættes til 1 plus en ekstra opstartforsinkelse på 14 urcykler plus 65 millisekunder fra nulstilling, så SUT [0] bør sættes til 1. Desuden skal CKSEL [0] sættes til 1.
3. Bit 6 styrer urets output til PORTB0, hvilket vi er ligeglade med. Så bit 6 kan efterlades til 1.
4. Bit 7 styrer divideret med 8-operationen, og standardindstillingen på 0 har funktionen aktiveret, hvilket vi ikke ønsker. Så bit 7 skal ændres fra 0 til 1.
Derfor skal den nye Fuse Low Byte være 11111111, som i hexadecimal notation er 0xFF
Til at programmere bits af "Fuse Low Byte" kan vi bruge vores programmør (https://www.instructables.com/id/ISP-Programmer-fo…) og software AVRDUDE. AVRDUDE er et kommandolinjeværktøj, der bruges til at downloade fra og uploade til Atmel-mikrokontrollere.
Download AVRDUDE:
Først skal vi tilføje beskrive vores programmør til konfigurationsfilen til AVRDUDE. I Windows er konfigurationsfilen normalt på samme sted som den eksekverbare fil for AVRDUDE.
Indsæt teksten i konfigurationsfilen avrdude.conf:
# ISPProgv1
programmør id = "ISPProgv1"; desc = "seriel port banging, reset = dtr sck = rts mosi = txd miso = cts"; type = "serb"; forbindelse_type = seriel; reset = 4; sck = 7; mosi = 3; miso = 8;;
Inden vi starter AVRDUDE, skal vi slutte mikrokontrolleren til programmereren i henhold til skemaet
Åbn DOS -promptvinduet.
1. For at se listen over programmerere, som avrdude understøttes, skal du skrive kommando avrdude -c c. Hvis alt er godt, skal listen have programmerings -id "ISPProgv1"
2. For at se listen over Atmel -enheder, som avrdude understøttes, skal du skrive kommando avrdude -c ISPProgv1. Listen skal have enhed m328p til Atmel ATMega 328P.
Skriv derefter avrdude -c ISPProgv1 –p m328p, kommandoen fortæller avrdude, hvilken programmør der bruges, og hvilken Atmel mikrokontroller er tilsluttet. Det præsenterer ATmega328P -signaturen i hexadecimal notation: 0x1e950f. Det præsenterer sikringsbitprogrammeringen i øjeblikket i ATmega328P også i hexadecimal notation; i dette tilfælde er sikringsbytes programmeret pr. fabriksindstilling.
Skriv derefter avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m, Det er en kommando for at fortælle avrdude, hvilken programmør der bruges, og hvilken Atmel mikrokontroller der er tilsluttet, og for at ændre Fuse Low Byte til 0xFF.
Nu bør urets signal komme fra laveffekt krystaloscillator.
Trin 3: Brænding af programmet i hukommelsen til ATMega328P mikrokontroller
Kopier først den hex -fil af programmet, vi lavede i begyndelsen af instruktionen til AVRDUDE -biblioteket.
Indtast derefter kommandoen avrdude –c ISPProgv1 –p m328p –u –U flash i DOS -promptvinduet: w: [navn på din hex -fil]
Kommandoen skriver hex -fil til mikrokontrollerens hukommelse. Nu fungerer mikrokontrolleren i overensstemmelse med instruktionerne i vores program. Lad os tjekke det ud!
Trin 4: Kontroller, at mikrokontroller fungerer i overensstemmelse med instruktionerne i vores program
Tilslut komponenter i overensstemmelse med skematisk diagram over AVR -blinkende LED -kredsløb
For det første har vi brug for strøm, som alle AVR -kredsløb gør. Cirka 5 volt strøm er tilstrækkelig til drift af AVR -chippen. Du kan få dette enten fra batterier eller en DC -strømforsyning. Vi tilslutter +5V strøm til pin 7 og slutter pin 8 til jorden på brødbrættet. Mellem begge stifter placerer vi en 0,1μF keramisk kondensator for at udjævne strømforsyningen, så AVR -chippen får en jævn strømledning.
10KΩ -modstanden bruges til at tilvejebringe strøm til nulstilling (POR) til enheden. Når strømmen er tændt, vil spændingen over kondensatoren være nul, så enheden nulstilles (da nulstilling er aktiv lav), derefter oplades kondensatoren til VCC, og nulstillingen deaktiveres.
Vi forbinder anoden på vores LED til AVR pin PB0. Dette er pin 14 i ATMega328P. Da det er en LED, vil vi begrænse strømmen til LED'en, så den ikke brænder ud. Derfor placerer vi en 330Ω modstand i serie med LED'en. Katoden på LED'en bliver forbundet til jorden.
16 MHz krystal bruges til at levere ur til Atmega328 mikrokontroller og 22pF kondensatorer bruges til at stabilisere krystallens drift.
Disse er alle de forbindelser, der er nødvendige for at tænde LED'en. Strømforsyning.
Okay. LED blinker med et sekund forsinkelse. Mikrocontrollerens arbejde svarer til vores opgaver
Trin 5: Konklusion
Det var ganske vist en lang proces for bare at blinke med en LED, men sandheden er, at du med succes har ryddet store forhindringer: Oprettelse af en hardwareplatform til programmering af en AVR -mikrokontroller, Brug af Atmel Studio som den integrerede udviklingsplatform, brug af AVRDUDE som software til konfiguration og programmering af en AVR -mikrokontroller
Hvis du vil holde dig opdateret om mine basismikrokontrollerprojekter, kan du abonnere på min YouTube! At se og dele mine videoer er en måde at understøtte det, jeg laver
Abonner på YouTube FOG -kanal
Anbefalede:
HC-05 seriel konfiguration over Bluetooth: 10 trin
HC-05 seriel konfiguration over Bluetooth: Mens jeg brugte Android-enheder og HC-05 Bluetooth SPP-moduler til nogle Arduino-projekter, ville jeg kontrollere og ændre HC-05 baudhastigheder og andre parametre uden at oprette forbindelse til en pc USB-port. Det blev til dette. HC-05 moduler forbinder seriel og Blu
ESP32 Captive Portal til konfiguration af statisk og DHCP IP -indstillinger: 8 trin
ESP32 Captive Portal til konfiguration af statisk og DHCP IP -indstillinger: ESP 32 er en enhed med integreret WiFi og BLE. Det er en slags velsignelse for IoT -projekterne. Bare giv dine SSID, adgangskode og IP -konfigurationer og integrer tingene i skyen. Men styring af IP -indstillinger og brugeroplysninger kan være et hoved
NE555 Timer - Konfiguration af NE555 -timeren i en Astable -konfiguration: 7 trin
NE555 Timer | Konfiguration af NE555 -timeren i en astabel konfiguration: NE555 -timeren er en af de mest anvendte IC'er i elektronikverdenen. Det er i form af DIP 8, hvilket betyder, at det har 8 pins
Oprettelse af dit første program i Visual Basic: 7 trin
Oprettelse af dit første program i Visual Basic: Denne vejledning viser dig, hvordan du programmerer Microsoft Visual Basic 2005 Express Edition. Eksemplet, du vil oprette i dag, er en simpel billedfremviser. Hvis du kan lide denne instruerbare, skal du trykke på + -knappen øverst i den instruerbare. Takke
Oprettelse af et program i Visual Basic: Webbrowser: 9 trin
Oprettelse af et program i Visual Basic: Webbrowser: Denne instruktion forklarer processen med at oprette et enkelt webbrowserprogram i VB.NET Det er designet som en opfølgning på min første VB.NET Instructable: Oprettelse af dit første program i Visual Basic. Det anbefales, at du læser dette inst