Talaan ng mga Nilalaman:
- Hakbang 1: Pagsulat ng Programa at Pagbuo ng Hex File, Gamit ang Atmel Studio
- Hakbang 2: Pagbabago ng Default na Pag-configure ng Micro Controller Fuse Bits
- Hakbang 3: Pag-burn ng Program sa Memorya ng ATMega328P Microcontroller
- Hakbang 4: Suriin ang Mga Gumagawa ng Microcontroller Alinsunod sa Mga Tagubilin ng Aming Program
- Hakbang 5: Konklusyon
Video: Pag-configure ng AVR Microcontroller Fuse Bits. Paglikha at Pag-upload sa Flash Memory ng Microcontroller ang LED Blinking Program .: 5 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
Sa kasong ito lilikha kami ng simpleng programa sa C code at susunugin ito sa memorya ng microcontroller. Susulat kami ng aming sariling programa at isulat ang hex file, gamit ang Atmel Studio bilang pinagsamang platform ng pag-unlad. Ise-configure namin ang mga fuse bit at i-upload ang hex file sa memorya ng AVR ATMega328P microcontroller, gamit ang aming sariling programmer at software AVRDUDE.
Ang AVRDUDE - ay isang programa para sa pag-download at pag-upload ng mga on-chip na alaala ng AVR microcontrollers. Maaari nitong iprograma ang Flash at EEPROM, at kung saan suportado ng serial programming protocol, maaari nitong i-program ang fuse at i-lock ang mga piraso.
Hakbang 1: Pagsulat ng Programa at Pagbuo ng Hex File, Gamit ang Atmel Studio
Kung wala kang Atmel Studio, dapat mong i-download at i-install ito:
Ang proyektong ito ay gagamit ng C, kaya piliin ang opsyong GCC C Executable Project mula sa listahan ng template upang makabuo ng isang walang-buto na maisasagawa na proyekto.
Susunod, kinakailangan upang tukuyin kung aling aparato ang proyekto ay bubuo. Ang proyektong ito ay bubuo para sa AVR ATMega328P microcontroller.
I-type ang code ng programa sa lugar ng Pangunahing Source Editor ng Atmel Studio. Ang Pangunahing Source Editor - Ang window na ito ang pangunahing editor para sa mga source file sa kasalukuyang proyekto. Ang editor ay may check spell at awtomatikong kumpletong mga tampok.
1. Dapat nating sabihin sa tagatala kung anong bilis ang tumatakbo ng aming maliit na tilad upang makalkula nito nang maayos ang mga pagkaantala.
#ifndef F_CPU
#define F_CPU 16000000UL // sinasabi sa dalas ng kristal ng controller (16 MHz AVR ATMega328P) #endif
2. Isinasama namin ang paunang salita, kung saan inilalagay namin ang aming isinasama na impormasyon mula sa iba pang mga file, na tumutukoy sa mga variable at pag-andar ng mundo.
#include // header upang paganahin ang kontrol ng daloy ng data sa mga pin. Tinutukoy ang mga pin, port, atbp.
#include // header upang paganahin ang pagka-antala sa pagpapaandar sa programa
3. Matapos ang paunang salita ay dumating ang pangunahing () pagpapaandar.
int main (walang bisa) {
Ang pangunahing () pagpapaandar ay natatangi at hiwalay mula sa lahat ng iba pang mga pagpapaandar. Ang bawat programa ng C ay dapat na mayroong eksaktong isang pangunahing () pagpapaandar. Ang Main () ay kung saan nagsisimulang ipatupad ng AVR ang iyong code kapag nagpatuloy ang kapangyarihan, kaya't ito ang entry point ng programa.
4. Itakda ang pin 0 ng PORTB bilang output.
DDRB = 0b00000001; // Itakda ang PORTB1 bilang output
Ginagawa namin ito sa pamamagitan ng pagsulat ng isang binary na numero sa Data Direksyon Registro B. Pinapayagan kaming magparehistro ng Direksyon ng Data B na gumawa ng mga piraso ng pagrehistro B input o output. Ang pagsulat ng isang 1 ay nagpapalabas sa kanila, habang ang isang 0 ay magpapasuri sa kanila. Ang pagiging nakakabit namin ng isang LED upang kumilos bilang output, nagsusulat kami ng isang binary na numero, ginagawa ang pin 0 ng PORT B bilang output.
5. Loop.
habang (1) {
Ang pahayag na ito ay isang loop, na madalas na tinukoy bilang pangunahing loop o loop ng kaganapan. Ang code na ito ay laging totoo; samakatuwid, ito ay executes ng paulit-ulit sa isang infinite loop. Hindi ito tumitigil. Samakatuwid, ang LED ay magiging blinking sa isang infinity, maliban kung ang kapangyarihan ay nakasara mula sa microcontroller o ang code ay nabura mula sa memorya ng programa.
6. I-on ang LED na nakakabit sa port PB0
PORTB = 0b00000001; // lumiliko ang LED na nakakabit sa port PB0
Ang linyang ito, ay nagbibigay ng 1 sa PB0 ng PortB. Ang PORTB ay isang rehistro ng hardware sa AVR chip na naglalaman ng 8 mga pin, PB7-PB0, pagpunta sa kaliwa patungo sa kanan. Ang paglalagay ng 1 sa dulo ay nagbibigay ng 1 hanggang PB0; nagtatakda ito ng mataas na PB0 kung saan ito binubuksan. Samakatuwid, ang LED na nakakabit sa pin PB0 ay magbubukas at magaan.
7. Pagkaantala
_delay_ms (1000); // Lumilikha ng 1 segundong pagkaantala
Ang pahayag na ito ay lumilikha ng isang 1 segundong pagkaantala, upang ang LED ay lumiko at manatili sa eksaktong 1 segundo.
8. Patayin ang lahat ng mga pin ng B, kabilang ang PB0
PORTB = 0b00000000; // Pinapatay ang lahat ng mga pin ng B, kabilang ang PB0
Ang linya na ito ay pinapatay ang lahat ng 8 mga Port B pin, kaya't kahit na ang PB0 ay naka-off, kaya't ang LED ay naka-off.
9. Isa pang pagkaantala
_delay_ms (1000); // Lumilikha ng isa pang 1-segundong pagkaantala
Ito ay patayin nang eksakto sa loob ng 1 segundo, bago muling simulang muli ang loop at makasalubong ang linya, na binabalik ito, na inuulit ang proseso. Nangyayari ito nang walang hanggan upang ang LED ay patuloy na kumukurap at naka-off.
10. pahayag sa pagbabalik
}
bumalik (0); // ang linya na ito ay hindi talaga naabot}
Ang huling linya ng aming code ay isang pagbabalik (0) na pahayag. Kahit na ang code na ito ay hindi kailanman naisakatuparan, sapagkat mayroong isang walang katapusang loop na hindi nagtatapos, para sa aming mga program na tumatakbo sa mga desktop computer, mahalagang malaman ng operating system kung tama ang kanilang pagtakbo o hindi. Para sa kadahilanang iyon, nais ng GCC, ang aming tagatala, ang bawat pangunahing () na magtapos sa isang return code. Ang mga return code ay hindi kinakailangan para sa AVR code, na nagpapatakbo ng freestanding ng anumang sumusuporta sa operating system; gayunpaman, ang tagatala ay magtataas ng isang babala kung hindi mo tapusin ang pangunahing may pagbabalik ().
Ang pangwakas na hakbang ay ang pagbuo ng proyekto. Nangangahulugan ito ng pag-iipon at sa wakas ay nagli-link sa lahat ng mga file ng object upang mabuo ang maipapatupad na file (.hex) na file. Ang hex file na ito ay nabuo sa loob ng folder ng Debug na nasa loob ng folder ng Project. Ang hex file na ito ay handa nang mai-load sa microcontroller chip.
Hakbang 2: Pagbabago ng Default na Pag-configure ng Micro Controller Fuse Bits
Mahalagang tandaan na ang ilan sa mga piyus na piraso ay maaaring magamit upang i-lock ang ilang mga aspeto ng maliit na tilad at maaaring potensyal itong ladrilyo (gawing hindi ito magamit)
Mayroong isang kabuuang 19 mga piyus na piyus na ginagamit sa ATmega328P, at pinaghiwalay sila sa tatlong magkakaibang byte ng fuse. Ang tatlo sa mga piyus ng piyus ay nakapaloob sa "Extended Fuse Byte", walong nilalaman sa "Fuse High Byte," at walong iba pa ang nakapaloob sa "Fuse Low Byte". Mayroon ding isang byte pabalik na ginagamit upang i-program ang mga lock bit.
Ang bawat byte ay 8 bits at bawat bit ay isang hiwalay na setting o flag. Kapag pinag-uusapan natin ang tungkol sa setting, hindi pagtatakda, naka-program, hindi naka-program na mga piyus aktwal na gumagamit kami ng binary. Ang ibig sabihin ng 1 ay hindi itinakda, hindi naka-program at isang zero ay nangangahulugang itinakda, na-program. Kapag pinaprograma ang mga piyus maaari mong gamitin ang notasyong binary o mas karaniwang hexadecimal notation.
Ang mga ATmega 328P chips ay may built in na oscillator ng RC na mayroong dalas ng 8 MHz. Ang mga bagong chips ay ipinadala sa set na ito bilang mapagkukunan ng orasan at aktibo ang fuse ng CKDIV8, na nagreresulta sa isang 1 MHz system na orasan. Ang oras ng pagsisimula ay nakatakda sa maximum at time-out na panahon na pinagana.
Ang mga bagong ATMega 328P chips sa pangkalahatan ay may mga sumusunod na setting ng piyus:
Mababang fuse = 0x62 (0b01100010)
Mataas na piyus = 0xD9 (0b11011001)
Pinalawak na piyus = 0xFF (0b11111111)
Gagamitin namin ang ATmega 328 chip na may panlabas na 16MHz na kristal. Samakatuwid, kailangan naming mag-program ng mga piraso ng "Fuse Low Byte" nang naaayon.
1. Kinokontrol ng bit 3-0 ang pagpipilian ng oscillator, at ang default na setting ng 0010 ay ang paggamit ng naka-calibrate na panloob na oscillator ng RC, na hindi namin nais. Nais namin ang mababang lakas na kristal na operasyon ng oscillator mula 8.0 hanggang 16.0 MHz, kaya't ang mga bit 3-1 (CKSEL [3: 1]) ay dapat itakda sa 111.
2. Kinokontrol ng Bit 5 at 4 ang oras ng pagsisimula, at ang default na setting ng 10 ay para sa isang pagkaantala ng pagsisimula ng anim na mga cycle ng orasan mula sa power-down at power-save, kasama ang isang karagdagang pagkaantala ng pagsisimula ng 14 na mga cycle ng orasan kasama ang 65 milliseconds mula sa pag-reset.
Upang ma-ligtas ang panig para sa isang mababang oscillator ng kristal na kuryente, nais namin ang maximum na posibilidad na pagkaantala ng 16, 000 na mga cycle ng orasan mula sa power-down at power-save, kaya't ang SUT [1] ay dapat itakda sa 1, kasama ang isang karagdagang pagkaantala sa pagsisimula ng 14 na cycle ng orasan kasama ang 65 milliseconds mula sa pag-reset, kaya ang SUT [0] ay dapat itakda sa 1. Bilang karagdagan, ang CKSEL [0] ay dapat itakda sa 1.
3. Kinokontrol ng Bit 6 ang output ng orasan sa PORTB0, na wala kaming pakialam. Kaya, ang bit 6 ay maaaring iwanang nakatakda sa 1.
4. Kinokontrol ng Bit 7 ang operasyon ng paghati-hatiin at ang default na setting ng 0 ay pinagana ang tampok, na hindi namin nais. Kaya, ang bit 7 ay kailangang baguhin mula 0 hanggang 1.
Samakatuwid, ang bagong Fuse Low Byte ay dapat na 11111111 na kung saan, sa hexadecimal notation, ay 0xFF
Upang mai-program ang mga piraso ng "Fuse Low Byte" maaari naming gamitin ang aming programmer (https://www.instructables.com/id/ISP-Programmer-fo…) at AVRDUDE ng software. Ang AVRDUDE ay isang command-line utility na ginagamit upang mag-download mula at mag-upload sa Atmel microcontrollers.
I-download ang AVRDUDE:
Una, dapat naming idagdag ang ilarawan ang aming programmer sa file ng pagsasaayos ng AVRDUDE. Sa Windows ang file ng pagsasaayos ay kadalasang nasa parehong lokasyon tulad ng maipapatupad na file ng AVRDUDE.
Ipasa ang teksto sa pagsasaayos ng file avrdude.conf:
# ISPProgv1
programmer id = "ISPProgv1"; desc = "serial port banging, reset = dtr sck = rts mosi = txd miso = cts"; type = "serbb"; connection_type = serial; i-reset = 4; sck = 7; mosi = 3; miso = 8;;
Bago simulan ang AVRDUDE, dapat naming ikonekta ang microcontroller sa programmer, ayon sa pamamaraan
Buksan ang window ng prompt ng DOS.
1. Upang matingnan ang listahan ng programmer na sinusuportahan ng avrdude ang uri ng utos avrdude -c c. Kung maayos ang lahat, ang listahan ay dapat mayroong programmer id na "ISPProgv1"
2. Upang matingnan ang listahan ng mga aparatong Atmel na sinusuportahan ng avrdude uri ng utos avrdude -c ISPProgv1. Ang listahan ay dapat magkaroon ng aparato m328p para sa Atmel ATMega 328P.
Susunod, i-type ang avrdude -c ISPProgv1 –p m328p, sinabi ng utos sa avrdude kung anong programmer ang ginagamit at kung ano ang naka-attach na Atmel microcontroller. Ipinapakita nito ang lagda ng ATmega328P sa hexadecimal notation: 0x1e950f. Ipinapakita nito ang kasalukuyang programa ng fuse bit sa ATmega328P din sa hexadecimal notation; sa kasong ito, ang mga byte ng fuse ay nai-program sa bawat default ng pabrika.
Susunod, i-type ang avrdude -c ISPProgv1 –p m328p –U lfuse: w: 0xFF: m, Ito ay isang utos na sabihin sa avrdude kung ano ang ginagamit ng programmer at kung ano ang nakalakip ng Atmel microcontroller at upang baguhin ang Fuse Low Byte sa 0xFF.
Ngayon ang signal ng orasan ay dapat magmula sa mababang power oscillator ng kristal.
Hakbang 3: Pag-burn ng Program sa Memorya ng ATMega328P Microcontroller
Una, kopyahin ang hex file ng program na ginawa namin sa simula ng tagubilin sa direktoryo ng AVRDUDE.
Pagkatapos, i-type sa DOS prompt window ang command avrdude –c ISPProgv1 –p m328p –u –U flash: w: [pangalan ng iyong hex file]
Nagsusulat ang utos ng hex file sa memorya ng microcontroller. Ngayon, gumagana ang microcontroller alinsunod sa mga tagubilin ng aming programa. Tignan natin!
Hakbang 4: Suriin ang Mga Gumagawa ng Microcontroller Alinsunod sa Mga Tagubilin ng Aming Program
Ikonekta ang mga sangkap alinsunod sa diagram ng eskematiko ng AVR Blinking LED Circuit
Una, kailangan namin ng lakas, tulad ng ginagawa ng lahat ng mga AVR circuit. Mga 5 volts ng lakas ang sapat para sa pagpapatakbo ng AVR chip. Maaari mo itong makuha alinman sa mga baterya o isang supply ng kuryente sa DC. Ikonekta namin ang + 5V ng lakas upang i-pin 7 at ikonekta ang pin 8 sa lupa sa breadboard. Sa pagitan ng parehong mga pin, naglalagay kami ng isang 0.1μF ceramic capacitor upang makinis ang lakas ng supply ng kuryente upang ang AVR chip ay makakakuha ng isang makinis na linya ng kuryente.
Ang risistor na 10KΩ ay ginagamit upang magbigay ng Power On Reset (POR) sa aparato. Kapag ang kapangyarihan ay nakabukas SA, ang boltahe sa buong capacitor ay magiging zero kaya ang pag-reset ng aparato (dahil ang reset ay aktibo mababa), pagkatapos ang singil ng capacitor sa VCC at ang pag-reset ay hindi paganahin.
Ikonekta namin ang anode ng aming LED sa AVR pin PB0. Ito ang pin 14 ng ATMega328P. Dahil ito ay isang LED, nais naming limitahan ang kasalukuyang dumadaloy sa LED upang hindi ito masunog. Ito ang dahilan kung bakit inilalagay namin ang isang 330Ω risistor sa serye kasama ang LED. Ang cathode ng LED ay nakakakonekta sa lupa.
Ang 16 MHz na kristal ay ginagamit upang magbigay ng orasan para sa Atmega328 microcontroller at 22pF capacitors ang ginagamit upang patatagin ang pagpapatakbo ng kristal.
Ito ang lahat ng mga koneksyon na kinakailangan upang magaan ang LED. Supply ng kuryente
Sige Ang LED ay kumikislap na may isang segundong pagkaantala. Ang gawain ng microcontroller ay tumutugma sa aming mga gawain
Hakbang 5: Konklusyon
Totoo, iyon ay isang mahabang proseso para sa pag-flash lamang ng isang LED, ngunit ang totoo ay matagumpay mong na-clear ang mga pangunahing hadlang: paglikha ng isang platform ng hardware para sa pag-program ng isang AVR microcontroller, Gamit ang Atmel Studio bilang pinagsamang platform ng pag-unlad, gamit ang AVRDUDE bilang software para sa pag-configure at pagprograma ng isang AVR microcontroller
Kung nais mong panatilihing napapanahon sa aking mga pangunahing proyekto ng microcontrollers, mag-subscribe sa aking YouTube! Ang panonood at pagbabahagi ng aking mga video ay isang paraan upang suportahan ang ginagawa ko
Mag-subscribe sa YouTube FOG channel
Inirerekumendang:
Orientasyong Pag-program sa Bagay: Paglikha ng Mga Bagay ng Pag-aaral / Pamamaraan sa Pagtuturo / Pamamaraan Gamit ang Shape Puncher: 5 Hakbang
Pag-ooriya sa Pag-program ng Bagay: Paglikha ng Mga Bagay ng Pag-aaral / Pamamaraan sa Pagtuturo / Pamamaraan Gamit ang Shape Puncher: Pamamaraan sa pag-aaral / pagtuturo para sa mga mag-aaral na bago sa object-oriented na programa. Ito ay isang paraan upang pahintulutan silang makita at makita ang proseso ng paglikha ng mga bagay mula sa mga klase. Bahagi 1. EkTools 2-pulgada malaking suntok; ang mga solidong hugis ay pinakamahusay.2. Piraso ng papel o c
Orientasyong Pag-program sa Bagay: Paglikha ng Mga Bagay ng Pag-aaral / Pamamaraan sa Pagtuturo / Pamamaraan Gamit ang Gunting: 5 Hakbang
Pag-ooriya sa Pag-program ng Bagay: Paglikha ng Mga Bagay ng Pag-aaral / Paraan ng Pagtuturo / Pamamaraan Gamit ang Gunting: Pamamaraan sa pag-aaral / pagtuturo para sa mga mag-aaral na bago sa object-oriented na programa. Ito ay isang paraan upang pahintulutan silang makita at makita ang proseso ng paglikha ng mga bagay mula sa mga klase.Bahagi: 1. Gunting (anumang uri ang magagawa). 2. Piraso ng papel o karton. 3. Marker.
AVR Microcontroller. Mga LED Flasher Gamit ang Timer. Nakagambala ang Mga timer. Timer CTC Mode: 6 na Hakbang
AVR Microcontroller. Mga LED Flasher Gamit ang Timer. Nakagambala ang Mga timer. Timer CTC Mode: Kamusta sa lahat! Ang timer ay isang mahalagang konsepto sa larangan ng electronics. Ang bawat elektronikong sangkap ay gumagana sa isang batayan sa oras. Nakakatulong ang base ng oras na ito upang mapanatili ang lahat ng trabaho na naka-synchronize. Ang lahat ng mga microcontroller ay gumagana sa ilang paunang natukoy na dalas ng orasan, ang
Paglikha ng Mga File Gamit ang Mga Utos ng Windows DOS: 16 Hakbang
Lumilikha ng Mga File Gamit ang Mga Utos ng Windows DOS: Tuturuan ka nito kung paano gumamit ng ilang pangunahing mga utos ng Windows DOS. Mag-navigate kami sa aming desktop, lilikha ng isang folder, at lilikha ng isang file sa loob ng folder na iyon
3D CAD - Mga Karaniwang Pag-set up ng Workspace at Paglikha: 14 Mga Hakbang
3D CAD - Mga Karaniwang Pag-set up ng Workspace at Paglikha: -Nilikha ng (a) Karaniwang Bahaging File para sa kahusayan Ang tutorial na ito ay tungkol sa paggawa ng isang default na file ng bahagi na maaari mong buksan sa hinaharap - alam na ang mga tukoy na pangunahing parameter ay naroroon na - pinapaliit ang dami ng paulit-ulit na gawain sa dail