Inhoudsopgave:

EXtreme Burner GEBRUIKEN voor AVR Microcontroller-programmering - Ajarnpa
EXtreme Burner GEBRUIKEN voor AVR Microcontroller-programmering - Ajarnpa

Video: EXtreme Burner GEBRUIKEN voor AVR Microcontroller-programmering - Ajarnpa

Video: EXtreme Burner GEBRUIKEN voor AVR Microcontroller-programmering - Ajarnpa
Video: Part 3 - Around the World in 80 Days Audiobook by Jules Verne (Chs 26-37) 2024, Juli-
Anonim
EXtreme Burner GEBRUIKEN voor AVR Microcontroller-programmering
EXtreme Burner GEBRUIKEN voor AVR Microcontroller-programmering

Alle AVR-gebruikersverenigingen die er zijn, en degenen die net de stream binnenkomen, sommigen van jullie begonnen met PIC-microcontrollers en sommigen begonnen met ATMEL AVR's, dit is voor jou geschreven!

Dus je hebt een USBASP gekocht omdat het goedkoop en effectief is om de ROM op je Atmega-apparaat te flashen, of misschien het ATTINY-assortiment. Deze kunnen worden verkregen voor minder dan $ 5, als Chinese klonen van de Open source USB-ASP! AVRdude is de software om ze te programmeren.

Je weet ongetwijfeld hoe je een Hex-bestand kunt genereren met behulp van Atmel Studio (ik gebruik nog steeds AVR Studio v4.19 in plaats van de nieuwste v7 omdat het sneller en sneller is op mijn lichte single-core CPU-laptop) / Netbook en WINAVR installeren als je dit leest. Alles dat in DotNet is geschreven, wordt LANGZAAM uitgevoerd! en de latere versies zijn ontworpen om uw laptop als een schildpad te laten werken! Je kunt Studio v4.19 gebruiken, de beste versie van Studio van ATMEL voor AVR-microcontrollers, overschakelen naar versie 7 wanneer je het echt nodig hebt voor de latere chips, en je tijd op de laptop productiever maken, werken in plaats van wachten! Dit is wat ik aanraad.

Een typische AVR-commandoregel om een Atmega met een Hex-bestand te programmeren, werkt als volgt:

SCHRIJF NAAR FLASH:AVRdude -s -c avrisp -p t44 -P usb -U "flash:w:D:\ARDUINO\pwmeg1.hex:a"

hier is pwmeg1.hex het Intel hex-bestand dat moet worden "gebrand" of "geflitst" in de "doel-MCU" in microcontroller Lingo

Dat is een mondvol om te onthouden! Je zou een batchbestand kunnen schrijven en het in de opdrachtregel in Windows kunnen uitvoeren, met de naam write_flash.bat. Evenzo voor het lezen van de lonten, nog een hap van een regel om te onthouden! Het wordt vervelend.

voor lezen flash + eeprom:AVRdude -s -c avrisp -p t44 -P usb -U "flash:r:D:\ARDUINO\pwmeg1.hex:i" -U "eeprom:r::i"

De oplossing is om een van de gebruiksvriendelijke GUI-front-end-tools voor AVRdude te gebruiken, zoals Bitburner, Khazama-programmeur, die qua verdienste bijna vergelijkbaar zijn. extreme brander. Ik heb de gratis te gebruiken tool: eXtreme Burner veel gebruikt, het is veelzijdig, betrouwbaar, en deze tutorial gaat daarover. Het kan niet alleen je hex-bestand / programma naar de MPU flitsen, met behulp van opdrachten die op de achtergrond aan AVRdude zijn gegeven, het kan je ook helpen om de FUSES in te stellen, wat een gecompliceerd onderwerp is dat beginners vaak verwart met AVR-programmering. Hier is een link naar een uitstekende tutorial over het onderwerp ZEKERINGEN die u kunt doornemen of opfrissen. Een woord van waarschuwing: ATMEL gebruikt de '1'-status van een FUSE-bit om de 'standaard'-status (uitgeschakeld of niet-geprogrammeerd) aan te geven en '0' om de geprogrammeerde of ingestelde of geactiveerde status aan te geven! Dit is precies het tegenovergestelde van wat je doet met FUSE-bits in een PIC-microcontroller. Wees voorzichtig wanneer u de bits van de klokzekering wijzigt, zoals het veranderen van de interne RC-klok naar een extern kristal, omdat dit problemen zal veroorzaken bij het verbinden met de chip zonder een externe kristalopstelling. Wees ook voorzichtig wanneer u de status van kritieke zekeringbits zoals SPIEN en RESET DISABLE wijzigt (deze moeten altijd worden ingesteld op SPIEN = 0 en RESET DISABLE = 1 als u wilt blijven communiceren met de MCU met uw USB-ASP in ISP / SPI-modus Als je dit verprutst, heb je een High Voltage programmer nodig om je AVR te 'unbricken'.

Als u zich afvraagt "wat zijn in godsnaam zekeringen" en "wat doen ze"? Lees dit uitstekende artikel:

Een ander gerelateerd onderwerp is hoe u de kloksnelheid van uw AVR MPU kunt instellen, die snelheden van 1Mhz tot 16 of 20Mhz kan halen. Er is ook een speciale laagfrequente kristaloptie van 31,25 kHz die, indien goed ontworpen, ervoor kan zorgen dat uw AVR 3 maanden op AA-batterijen werkt!

Beide, Clock Fuse-bits (zowel frequentie als type klok intern RC/extern kristal, en andere Fuse-bits) kunnen worden ingesteld via het tabblad ZEKERINGEN in eXtreme Burner. Eerst laten we u zien hoe u de ROM leest en vervolgens hoe u het hex-bestand kunt flashen met eXtreme Burner. Natuurlijk kun je ook de online AVR fuse-websites gebruiken, maar de optie die ik uitleg kan ook worden gebruikt wanneer je offline bent, waar dan ook.

Stap 1: Aan te maken instellingen:

Instellingen die moeten worden gemaakt
Instellingen die moeten worden gemaakt
Instellingen die moeten worden gemaakt
Instellingen die moeten worden gemaakt
Instellingen die moeten worden gemaakt
Instellingen die moeten worden gemaakt
Instellingen die moeten worden gemaakt
Instellingen die moeten worden gemaakt

De afbeeldingen tonen de INSTELLINGEN die u moet uitvoeren voordat u aan het werk gaat. (het is eenmalig). Onder het submenu-item 'Hardware-instellingen' selecteren we 375Hz omdat de meeste MCU's van de ATMEL-fabriek zijn ingesteld op standaardinstellingen van 1 Mhz CPU-klok op interne RC-oscillator. De ISP-snelheid is een kwart van F_cpu. Dat geeft ons de dichtstbijzijnde snelheid van 375 Khz, je zou ook naar een lagere snelheid kunnen gaan, het zal niet veel uitmaken. Je zou kunnen proberen verbinding te maken door dit standaard te laten en een 'lees alles' uit te geven, als het niet lukt, kun je hierheen komen en de snelheid wijzigen, waardoor deze lager wordt.

Want als u geen verbinding kunt maken (de melding zou in het programmeervenster verschijnen "niet in staat om met chip te communiceren, kan niet SCK" betekent dat het kloksignaal van uw pc niet kan synchroniseren met uw chip die u probeert te lezen of programma), kunt u de kloksnelheid van de CPU niet wijzigen of de snelheid en het type wijzigen! Verbinden is dus de basis van alles! Het is als "EERSTE CONTACT" zoals je ziet in de Spielberg-films. Als je hierin slaagt, kun je altijd de kloksnelheid van je MCU verhogen door de zekeringen dienovereenkomstig te programmeren en later een hogere snelheid te gebruiken om verbinding te maken.

Dus doorloop de snapshots van de hardware-instellingen die hier worden verstrekt en stel vervolgens ook het apparaattype in (de chip die u probeert te programmeren, het modelnummer).

Stap 2: Uw apparaattype instellen

Uw apparaattype instellen
Uw apparaattype instellen
Uw apparaattype instellen
Uw apparaattype instellen
Uw apparaattype instellen
Uw apparaattype instellen

zie de screenshot, Pic 1, we hebben "ATTINY44A" ingesteld. Dit is een 14-pins Microcontroller zonder UART. Ik gebruik deze sinds kort, de SSU-versie. Als je de Extreme Burner-voorraadversie hebt geïnstalleerd, zie je Attiny44A niet in de vervolgkeuzelijst voor apparaatselectie, je zult een Attiny44 zien die we voor alle doeleinden kunnen gebruiken om Attiny44A ook te programmeren, om elk apparaat te introduceren dat niet in deze vervolgkeuzelijst staat vermeld, lees mijn andere instructable "Hacking eXtreme Burner".

Ik heb Atmega88PA-AU ook met eXtreme Burner gebruikt, maar in deze Instructable noemen we overal "Attiny44A". Hoe maak je nu een breadboard-versie van de kleine vierkante SMD-chip van 7 mm en test je deze met je programma's? (zie de foto's die de chipgrootte aangeven), zie hiervoor mijn andere instructable waar ik laat zien hoe je breadboard-geschikte plug-in-modules kunt maken met behulp van de Attiny44A-SSU en ATmega88PA-AU

Als je deze techniek eenmaal hebt geleerd, kun je elke chip bekijken waaraan je wilt sleutelen, of het nu SMD- of DIL-pakket is. Ik heb bijvoorbeeld zelfs een SMD-chip gebruikt in een 32-pins 0,8 mm pin pitch Quad-pakket (Atmega88A) op dezelfde manier!

. Of je kunt gewoon de 28-pins DIL-versie van de Attiny44A gebruiken voor deze Instructable of welke AVR je ook gebruikt om eXtreme Burner voor AVR-programmering uit te proberen.

Stap 3: Geef een LEES ALLES of LEES FLASH

Geef een LEES ALLES of LEES FLASH
Geef een LEES ALLES of LEES FLASH
Geef een LEES ALLES of LEES FLASH
Geef een LEES ALLES of LEES FLASH

Sluit uw USBasp aan op de USB-poort van uw laptop, ik neem aan dat u al de juiste stuurprogramma's hebt geladen die bij uw programmeur zijn geleverd en dat deze correct is gedetecteerd. Het zou moeten verschijnen onder 'Apparaten en printers' in het startmenu van Windows, zodra het op de USB-poort is aangesloten! Verbind uw doelchip op zijn bord met uw USBasp (relevante SDI// ISP-pinnen met een 6-pins of 10-pins kabel moeten tussen de twee worden aangesloten, namelijk de pinnen: MOSI, RESET, MISO, SCK, Vcc, Ground).

Geef een LEES ALLES uit het MENU van Xtreme Burner. Zie foto's en berichten die we hebben verkregen. Aanvankelijk toonde je scherm 'FF' voor ROM in Eerste TAB van de brander, na alles gelezen te hebben zal het de daadwerkelijke ROM-inhoud op de chip tonen. Als je een fabrieksverse chip of een gewiste chip zou gebruiken, zou je FF in de inhoud zien na een "Alles lezen". Een niet-geprogrammeerde chip zal 'FF' in zijn geheugen laten zien, evenals een EEPROM (tweede tabblad in de programmer), het laatste tabblad toont de ZEKERINGEN.

Na een LEES ALLE 3 tabbladen zouden de juiste informatie op de chip worden weergegeven. Voor die tijd zou dat niet het geval zijn, dus geef eerst een Lees alles uit zodra u alles hebt aangesloten.

Stap 4: Schrijf naar Flash (uw Hex-bestand geflitst in ROM op de chip)

Schrijf naar Flash (uw Hex-bestand geflitst in ROM op de chip)
Schrijf naar Flash (uw Hex-bestand geflitst in ROM op de chip)
Schrijf naar Flash (uw Hex-bestand geflitst in ROM op de chip)
Schrijf naar Flash (uw Hex-bestand geflitst in ROM op de chip)
Schrijf naar Flash (uw Hex-bestand geflitst in ROM op de chip)
Schrijf naar Flash (uw Hex-bestand geflitst in ROM op de chip)

Selecteer een bestand met behulp van het dialoogvenster Bladeren dat wordt geopend wanneer u op het eerste pictogram in de MENU-balk hierboven klikt. We hebben één bestand geselecteerd zoals je op de foto ziet. Nadat u het hex-bestand (intel hex-formaat) hebt geselecteerd, verandert de menubalk met "geen bestand geladen" in de bestandsnaam die u hebt geladen.

Geef nu een schrijfflits uit vanuit het menu van de software. De berichten laten zien wat er gebeurt. zie de foto's.

Na een succesvol schrijven zou je de 'FF' zien die een nieuwe of gewiste ROM-wijziging markeert in wat je programma of hex-bestand bevat. De grootte of het aantal bytes dat uw bestand in de ROM in beslag neemt, is u ook bekend door naar dit scherm te kijken, dat u de werkelijke ROM-inhoud van uw doelchip laat zien die u zojuist hebt geflitst.

De verificatiestap wordt ook gedaan door de chip te lezen, volgens de INSTELLINGEN die we in de eerste stap hebben gedaan. Dit is te zien in de berichten dat de verificatie ook is gelukt.

Stap 5: ZEKERINGEN: Hoe ze in te stellen in EXtreme Burner

ZEKERINGEN: Hoe ze in te stellen in EXtreme Burner
ZEKERINGEN: Hoe ze in te stellen in EXtreme Burner

Toen u een LEES ALLES gaf, werden de zekeringen van de chip afgelezen. Dat is de EERSTE foto die wordt getoond fuses.jpg.

Nu moet je ze misschien in iets anders veranderen. De zekeringen bestaan uit 4 vakjes in de laatste TAB op je eXtreme Burner scherm. Namelijk LAGE ZEKERING BYTE, HOGE ZEKERING BYTE, UITGEBREIDE ZEKERING BYTE, VERGRENDEL ZEKERING BYTE en KALIBRATIE BYTE. in die volgorde worden ze weergegeven.

U kunt gewoon een ONLINE zekeringcalculator gebruiken en deze invullen. zoals die bij

eleccelerator.com/fusecalc/fusecalc.php?

Of u kunt de eXtreme-brander gebruiken om het voor u te doen. offline zelf altijd: Selecteer uit de vervolgkeuzelijst die verschijnt wanneer u op de DETAILS-knop klikt die zich onder elk soort zekeringbyte bevindt. Dubbelklik gewoon op een regel in het DETAILS-scherm en zie hoe deze verandert van SET naar CLEARED en verander de status met uw muisklik op elke regel. De Fuse Byte in het vak erboven zou dienovereenkomstig veranderen.

Als u zich afvraagt "wat zijn in godsnaam zekeringen" en "wat doen ze"? Lees dit uitstekende schrijven:

www.instructables.com/id/Avr-fuse-basics-Running-an-avr-with-an-external-cl/

Stap 6: Zekeringen instellen met behulp van EXtreme Burner Fuse Calculator

Zekeringen instellen met behulp van EXtreme Burner Fuse Calculator
Zekeringen instellen met behulp van EXtreme Burner Fuse Calculator
Zekeringen instellen met behulp van EXtreme Burner Fuse Calculator
Zekeringen instellen met behulp van EXtreme Burner Fuse Calculator
Zekeringen instellen met behulp van EXtreme Burner Fuse Calculator
Zekeringen instellen met behulp van EXtreme Burner Fuse Calculator

U kunt het detailscherm zien dat verschijnt voor elk van de zekeringbytes (LAAG, HOOG, UITGEBREID, VERGRENDELEN en Kalibratie). De kalibratiebyte moet ongewijzigd blijven omdat deze de kalibratiegegevensbyte in de AVR toont die van toepassing is op de interne RC-oscillator. De LOCK-byte is meestal alleen FF (niet besproken in bovenstaande foto's) omdat u de Flash of EEPROM niet zou vergrendelen tijdens het leren. U zou alleen de LOW, HIGH en UITGEBREIDE bytes wijzigen. Doe voorzichtig !

Als u SPIEN-bit verandert in 1 (niet-geprogrammeerde staat is 1 in AVR-microcontrollers), kunt u niet communiceren met uw chip via USBASP of een andere programmeur! De standaardstatus wordt ook weergegeven in uw scherm voor elk zekeringsbit. Dit waarschuwt u dat de SPIEN-standaard altijd 0 is (geprogrammeerde status), zodat u de SPI-modus kunt gebruiken voor ISP-programmering. Debug-wire of DW-bit staat altijd op 1 (ongeprogrammeerd) als SPIEN is ingesteld op 0. Dit is ook de standaardstatus. Ook moet in Extended Fuse-bits 'Self Programming Enable' '1' (ongeprogrammeerd) zijn als u uw USB-ASP gebruikt om uw doelchip te programmeren (geen bootloader-ROM gebruikt zoals in ARDUINO).

U kunt de CLOCK-bits (3 in aantal) wijzigen om interne RC of externe kristal te selecteren. Ik laat het normaal gesproken voor interne RC, waardoor je 2 extra pinnen kunt krijgen die het externe kristal vrijmaken om te gebruiken als PORT-pinnen voor je AVR-projecten. Meestal is een extern kristal nodig wanneer u een nauwkeurige timing in uw project nodig heeft. Voor leerlingen is interne RC voldoende.

Gewoonlijk zou je, als je eenmaal genoegen hebt genomen met een zekeringcombinatie, deze niet veranderen. Het zou eenmalig zijn. Je zou alleen de ROM flashen of soms ook de EEPROM. Voor Flashen wordt het EEPROM apart.eep-bestand gegenereerd door uw WINAVR / ATMEL-studio als uw programma de EEPROM gebruikt om gegevens op te slaan. Anders blijft de EEPROM ongebruikt, gevuld met de 'FF'-gegevens die de 'NO DATA-status' van de EEPROM laten zien.

Stap 7: Eindwaarde van zekeringbits

Eindwaarde van zekeringbits
Eindwaarde van zekeringbits

Na het instellen van alle Fuse-bits en het sluiten van de DETAILS-boxen die je hebt gebruikt, kun je de waarde van de Fuse-bits zien zoals berekend door het programma (zie foto). Het enige dat overblijft is om een "Schrijfzekeringen" uit te geven met behulp van het menu. En kijk naar de berichten die een succesvol schrijven melden. Later zou u ook een READ ALL uit het menu kunnen geven en controleren of de gelezen zekeringen in de laatste TAB van het branderscherm overeenkomen met wat u naar de chip wilde schrijven. (Verificatie van de zekering).

Je zou merken dat aan het begin van deze Instructable, toen we een LEES ZEKERINGEN deden, het scherm dezelfde ZEKERING-waarden toont die we hier zien! Dat komt omdat dit de zekeringen zijn die ik vaak gebruik en ze zelden verander als ik ze eenmaal in mijn MCU heb geplaatst, tenzij ik voor sommige projecten de frequentie verander van 1 Mhz naar 4 Mhz. De AVR kan worden ingesteld op maximaal 20Mhz (sommige chips alleen tot 16Mhz). De frequentie die je instelt voor F_cpu hangt ook af van de spanning waarmee je de chip voorziet! Als uw chip bijvoorbeeld werkt van 1,8 V Vcc tot 5,5 V Vcc (zie gegevensblad), zou u niet verwachten dat uw chip op 20 mhz draait als u er slechts 1,8 V aan toevoegde! je verwacht er teveel van! Een tabel in het gegevensblad vertelt u bij welke spanning de freq bij welk cijfer uitkomt. Hoe hoger uw frequentie van chipwerking, hoe meer de warmte en meer het vermogen het verbruikt. Denk aan de frequentie als de hartslag van een dier. Een kolibrie met een hoge hartslag zou een hogere energieverbranding per minuut hebben in vergelijking met een walvis of olifant met een veel lagere hartslag! Maar dan kan het veel meer in een kortere tijd. De MCU is precies zo.

Stap 8: Voltooien

Nu heb je alle stappen in eXtreme Burner voltooid, je hebt het ROM van een chip gelezen, je hebt een HEX-bestand geopend en het naar de chip geflitst en gecontroleerd of de flash in orde was, je hebt ook geleerd hoe je de zekeringen moet instellen en ze naar de chip moet flashen.

Als je vragen hebt, zal ik de tutorial graag beantwoorden of aanpassen om het duidelijker te maken.

Voor sommige chips kan het zijn dat de vermelding ontbreekt in de vervolgkeuzelijst voor chipselectie in het menu. Of u kunt te maken krijgen met schrijffouten en verificatiefouten. Lees in dergelijke gevallen mijn andere Instructable "Hacking eXtreme Burner" om het probleem op te lossen.

Veel plezier met programmeren.

Aanbevolen: