ISP-programmeerconnector.

Mijn geheim

Afb.1 AVR ISP Programmeurs die PonyProg2000 en andere amateurprogramma's draaien, zijn heel eenvoudig. De meeste daarvan kunnen echter niet dezelfde functionaliteit bieden als propriëtaire ontwikkelhulpmiddelen. Een van de meest populaire Atmel-programmeurs is AVR ISP ( verschijning in afbeelding 1). Met behulp van de AVR ISP kunt u elke microcontroller met een AVR-kern programmeren via de SPI seriële interface. De programmeur is aangesloten via een COM-poort en werkt onder controle.

AVR-studio Het ontwerp en de software van de AVR ISP staan ​​open voor ontwikkelaars. Iedereen kan zijn analoog zelfstandig samenstellen en daardoor geld besparen op de aanschaf van een programmeur bij de fabrikant. Bovendien zijn er veel amateurontwikkelingen gaande gebaseerd op AVR ISP's die dat wel hebben extra functies

en handiger in gebruik. Fig.2 Analoog van het merk AVR-programmeur

ISP Figuur 2 laat zien schakelschema auteursversie van AVR ISP. In tegenstelling tot het prototype bevat het slechts één microcontroller, die dezelfde functies heeft. In plaats van de ATmega8535 (AT90S8535) wordt in de basisversie de ATmega16-microcontroller gebruikt. Het heeft een dubbele groot volume programma- en datageheugen, en is qua pintoewijzingen vergelijkbaar met ATmega8535 interne structuur . Het opnemen en bijwerken van de inhoud van DD2 wordt uitgevoerd via het ingebouwde bootloaderprogramma, dat voor deze doeleinden gebruik maakt van het zelfprogrammerende vermogen van AVR-microcontrollers. Aanvullend software

Het werk van het programma dat is ontworpen voor ATmega8535 wordt ook gecoördineerd met de ATmega16-adresruimte en de TOV0-interrupt wordt gebruikt om de positie van de SB1-knop te controleren en de PD7-, PC0...PC6-lijnen te besturen. De programmeur maakt verbinding met elk gratis COM-poort

in het systeem via connector X1. Op connector X2 wordt een spanning van 9...15 V geleverd vanuit een afzonderlijke voedingsbron die een stroom van maar liefst 100 mA aan de belasting kan leveren. Connector X3 wordt gebruikt voor programmering in een circuit of bij programmering op een afzonderlijk paneel. Op pin 7 zijn X3 aanwezig frequentie 1,8432 MHz. Ze kunnen worden gebruikt als de programmeerbare microcontroller is geconfigureerd om te werken met een kwartsresonator of met een externe klokgenerator. In dit geval worden er pulsen aangeboden aan ingang XTAL1. Apparaten die dat niet hebben eigen bron energie, kan rechtstreeks vanuit de programmeur worden gevoed via pin 2 X3 (in-circuit programmering van apparaten met een voedingsspanning lager dan 5 kan tot schade leiden!). Activering en blokkering van klokpulsen op pin 2 X3, evenals de aanwezigheid van een spanning van 5 V op pin 7 X3, worden geregeld door de SB1-knop.

Tijdens bedrijf geeft de HL3-LED de normale werking van de programmeur aan. HL1 zal oplichten tijdens het programmeren van de microcontroller, en HL2 zal de aanwezigheid van spanning en klokpulsen signaleren (respectievelijk pinnen 2 en 7 van X3).

Voordat u in DD2 gaat werken, moet u het programma invoeren dat zich in het bestand BootISP.hex bevindt ( bron in het BootISP.asm-bestand) met behulp van een handig programmeur. De FUSE-bits zouden er als volgt uit moeten zien:

CKSEL0 = 0 SUT0 = 1 BOOTRST = 0 EESAVE = 1

CKSEL1 = 0 SUT1 = 0 LAARZENZ0 = 0 CKOPT = 1

CKSEL2 = 1 BODEN = 0 LAARZENZ1 = 0 JTAGEN = 1

CKSEL3 = 1 BODLEVEL = 0 SPIEN = 0 OCDEN = 1

Afb.3 Programmeerproces

Nadat de programmeur is gemonteerd en op de computer is aangesloten, begint u met downloaden huidige versie controle programma. Door op de SB1(!) knop te drukken wordt connector X2 van stroom voorzien. De HL1-LED moet gaan branden, wat aangeeft dat deze zich in de updatemodus bevindt. software. Start hierna AVR Studio en open via het menu Tools -> AVR Prog het AVR ISP firmware-updatevenster. Vervolgens moet u het pad opgeven waarnaar opstartbestand, die standaard de locatie C:Program filesAtmelAVR ToolsSTK500STK500.ebn heeft, en start het programmeren door op te klikken schermknop Flash -> Programma (venster in Fig. 3). Aan het einde van de operatie is het noodzakelijk om de spanning kortstondig te verwijderen, waarna de programmeur klaar is voor gebruik. De communicatie vindt plaats via het menu Extra -> Programma AVR -> Auto Connect. Het venster van het AVR ISP-ondersteuningsprogramma wordt weergegeven in Afb. 4.

Afb.4 Vensterweergave van het AVR ISP-ondersteuningsprogramma

De programma-interface is heel eenvoudig en vereist geen gedetailleerde uitleg. Hier hoef je alleen maar op een paar te letten belangrijke details. In de lijst met apparaten op het tabblad Programma in het venster Apparaat zijn, naast microcontrollers met de AVR-kern (ATmega, ATtiny, AT90x, enz.), ook enkele modellen uit de MCS-51-familie (namen die beginnen met AT89S) beschikbaar . Het programmeren van de AT89S via SPI verschilt fundamenteel niet van een vergelijkbare bewerking voor AVR-microcontrollers, met uitzondering van één significant verschil. Het RESET-signaal voor de MCS-51 heeft (in tegenstelling tot de AVR) een actieve hoog niveau. Daarom moet bij het programmeren van AT89S-modellen weerstand R2, die voorkomt dat de AVR-microcontrollers starten, worden aangesloten op de voedingsbus van de programmeur.

Soms komt het voor dat het de eerste keer niet mogelijk is om een ​​verbinding tot stand te brengen tussen de programmeur en het apparaat. Afgezien van installatiefouten en onjuiste installatie FUSE-bits die SPI-werking verbieden (SPIEN, DWEN en RSTDISBL), hoogstwaarschijnlijk is het probleem te hoge frequentie klokpulsen op de SCK-lijn. In dit geval moet u de snelheid verlagen seriële interface. Dit kan handmatig worden gedaan via het tabblad Board (ISP Freq-venster). De SPI-module van de slave-microcontroller kan niet werken op frequenties hoger dan F clk /4.

De programmeur is getest in gebruik met AVR Studio versies 4.12...4.16 met vele soorten microcontrollers. Er zijn geen fouten vastgesteld.

Mijn geheim

Programmeurs die andere amateurprogramma's uitvoeren, zijn heel eenvoudig. De meeste daarvan kunnen echter niet dezelfde functionaliteit bieden als propriëtaire ontwikkelhulpmiddelen. Een van de meest populaire Atmel-programmeurs is AVR ISP (zie figuur 1). Met behulp van de AVR ISP kunt u elke microcontroller met een AVR-kern programmeren via de SPI seriële interface. De programmeur is aangesloten via een COM-poort en draait onder controle.

Het ontwerp en de software van de AVR ISP staan ​​open voor ontwikkelaars. Iedereen kan zijn analoog zelfstandig samenstellen en daardoor geld besparen op de aanschaf van een programmeur bij de fabrikant. Bovendien zijn er veel amateurontwikkelingen op basis van AVR ISP, die extra mogelijkheden hebben en handiger in gebruik zijn.


Fig. 2 Analoog van de merk AVR ISP-programmeur

Figuur 2 toont een schematisch diagram van de auteursversie van de AVR ISP. In tegenstelling tot het prototype bevat het slechts één microcontroller, die dezelfde functies heeft. In plaats van de ATmega8535 (AT90S8535) wordt in de basisversie de ATmega16-microcontroller gebruikt. Het heeft tweemaal zoveel programma- en datageheugen en is qua pintoewijzingen en intern ontwerp vergelijkbaar met de ATmega8535. Het opnemen en bijwerken van de inhoud van DD2 wordt uitgevoerd via het ingebouwde bootloaderprogramma, dat voor deze doeleinden gebruik maakt van het zelfprogrammerende vermogen van AVR-microcontrollers. Aanvullende software coördineert ook de werking van het programma dat is ontworpen voor ATmega8535 met de ATmega16-adresruimte en gebruikt de TOV0-interrupt om de positie van de SB1-knop te controleren en de PD7-, PC0...PC6-lijnen te besturen.

De programmeur wordt via connector X1 aangesloten op een willekeurige vrije COM-poort in het systeem. Op connector X2 wordt een spanning van 9...15 V geleverd vanuit een afzonderlijke voedingsbron die een stroom van maar liefst 100 mA aan de belasting kan leveren. Connector X3 wordt gebruikt voor programmering in een circuit of bij programmering op een afzonderlijk paneel.
Pin 7 X3 bevat rechthoekige pulsen met een frequentie van 1,8432 MHz. Ze kunnen worden gebruikt als de programmeerbare microcontroller is geconfigureerd om te werken met een kwartsresonator of met een externe klokgenerator. In dit geval worden er pulsen aangeboden aan ingang XTAL1. Apparaten die geen eigen stroombron hebben, kunnen rechtstreeks vanuit de programmer worden gevoed via pin 2 van X3 (in-circuit programmering van apparaten met een voedingsspanning lager dan 5 kan tot schade leiden!). Activering en blokkering van klokpulsen op pin 2 X3, evenals de aanwezigheid van een spanning van 5 V op pin 7 X3, worden geregeld door de SB1-knop.

Tijdens bedrijf geeft de HL3-LED de normale werking van de programmeur aan. HL1 zal oplichten tijdens het programmeren van de microcontroller, en HL2 zal de aanwezigheid van spanning en klokpulsen signaleren (respectievelijk pinnen 2 en 7 van X3).

Voordat u in DD2 gaat werken, moet u het programma in het bestand BootISP.hex invoeren (de brontekst staat in het bestand BootISP.asm) met behulp van een handig programmeur. De FUSE-bits zouden er als volgt uit moeten zien:
CKSEL0 = 0 SUT0 = 1 BOOTRST = 0 EESAVE = 1
CKSEL1 = 0 SUT1 = 0 LAARZENZ0 = 0 CKOPT = 1
CKSEL2 = 1 BODEN = 0 LAARZENZ1 = 0 JTAGEN = 1
CKSEL3 = 1 BODLEVEL = 0 SPIEN = 0 OCDEN = 1


Afb.3 Programmeerproces

Nadat de programmeur is gemonteerd en op de computer is aangesloten, gaat u verder met het downloaden van de huidige versie van het besturingsprogramma. Door op de SB1(!) knop te drukken wordt connector X2 van stroom voorzien. De HL1-LED moet gaan branden, wat aangeeft dat de software-updatemodus is geopend. Start hierna AVR Studio en open via het menu Tools -> AVR Prog het AVR ISP firmware-updatevenster. Vervolgens moet u het pad naar het opstartbestand opgeven, dat zich standaard in C:\Program files\Atmel\AVR Tools\STK500\STK500.ebn bevindt, en beginnen met programmeren door op de knop Flash -> Programma op het scherm te klikken. (venster in figuur 3). Aan het einde van de operatie is het noodzakelijk om de spanning kortstondig te verwijderen, waarna de programmeur klaar is voor gebruik. De communicatie vindt plaats via het menu Extra -> Programma AVR -> Auto Connect. Het venster van het AVR ISP-ondersteuningsprogramma wordt weergegeven in Afb. 4.


Afb.4 Vensterweergave van het AVR ISP-ondersteuningsprogramma

De programma-interface is heel eenvoudig en vereist geen gedetailleerde uitleg. Hier hoeft u alleen maar op een paar belangrijke details te letten. In de lijst met apparaten op het tabblad Programma in het venster Apparaat zijn, naast microcontrollers met de AVR-kern (ATmega, ATtiny, AT90x, enz.), ook enkele modellen uit de MCS-51-familie (namen die beginnen met AT89S) beschikbaar . Het programmeren van de AT89S via SPI verschilt fundamenteel niet van een vergelijkbare bewerking voor AVR-microcontrollers, met uitzondering van één significant verschil. Het RESET-signaal in de MCS-51 heeft (in tegenstelling tot de AVR) een actief hoog niveau. Daarom moet bij het programmeren van AT89S-modellen weerstand R2, die het opstarten van AVR-microcontrollers verhindert, worden aangesloten op de voedingsbus van de programmeur.

Soms komt het voor dat het de eerste keer niet mogelijk is om een ​​verbinding tot stand te brengen tussen de programmeur en het apparaat. Afgezien van installatiefouten en onjuiste instelling van FUSE-bits die SPI-werking verbieden (SPIEN, DWEN en RSTDISBL), is het probleem hoogstwaarschijnlijk dat de klokfrequentie op de SCK-lijn te hoog is. In dit geval is het noodzakelijk om de snelheid van de seriële interface te verlagen. Dit kan handmatig worden gedaan via het tabblad Board (ISP Freq-venster). De SPI-module van de slave-microcontroller kan niet werken op frequenties hoger dan F clk /4.

De programmeur is getest om te werken met versies 4.12...4.16 met vele soorten microcontrollers. Er zijn geen fouten vastgesteld.

Lijst met radio-elementen

Aanduiding Type Denominatie Hoeveelheid OpmerkingWinkelMijn notitieblok
DD1 RS-232-interface-IC

MAX232

1 Naar notitieblok
DD2 MK AVR 8-bits

ATmega16

1 Naar notitieblok
DA1 Lineaire regelaar

LM7805

1 Naar notitieblok
VD1 Gelijkrichterdiode

1N4007

1 Naar notitieblok
R1, R2 Weerstand

10 kOhm

2 Naar notitieblok
R3 Weerstand

4,7 kOhm

1 Naar notitieblok
R4 Weerstand

510 Ohm

1 Naar notitieblok
R5 Weerstand

6,8 kOhm

1 Naar notitieblok
R6 Weerstand

3,3 kOhm

1 Naar notitieblok
R7-R9 Weerstand

1 kOhm

3 Naar notitieblok
C1, C5 470 µF 16 V2 Naar notitieblok
C2, C3, C6, C7 Elektrolytische condensator1 µF 16 V4 Naar notitieblok
C4, C8, C11 Condensator0,1 µF3 Naar notitieblok
C9, C10 Condensator30 pF2 Naar notitieblok
ZQ1 Kwarts3,6864 MHz1 Naar notitieblok
HL1 LED

In mijn geval is dit een absolute recordhouder voor bezorgsnelheid - ongeveer 5 maanden onzorgvuldig ronddwalen. Ondanks de monsterlijke vertraging heb ik het pakket toch ontvangen, waar ik ongelooflijk blij mee ben, ondanks de tekortkomingen waarover ik je hieronder zal vertellen. Omdat ik een heel slecht geheugen heb, moest ik combineren wat ik vond nuttige informatie ergens op één plek in de vorm van een herinnering, het beetje bij beetje verzamelen in verschillende hoeken en gaten van het netwerk bleek een niet-triviale taak, dus ik zal het allemaal in een aparte post plaatsen.
USB ISP is de goedkoopste AVR-controllerprogrammeur die in de uitverkoop te vinden is. Het werd gebruikt om onze horizon te verbreden en een diepgaandere studie van AVR te doen.
De recensie omvat: een beschrijving van de programmeur, hoe je hem op de chip aansluit, de werking ervan instellen in de programma's AvrDude Prog, Khazama, Atmel Studio 7, en niet alleen dat.

Natuurlijk kun je het in plaats daarvan gebruiken Arduino UNO met een ArduinoISP-schets erin gestikt, maar dit is niet handig; het gedoe met draden, vooral als er maar één UNO is, ontmoedigt het enthousiasme. Het zou gemakkelijker zijn geweest om zo'n programmeur afzonderlijk te hebben, of liever twee. Om twee redenen:
1) Zelfs vóór de aankoop werd uit de recensies duidelijk dat de soldeerkwaliteit van deze apparaten eronder lijdt, en sommigen ontvingen ze zelfs met kapotte zenerdiodes. Er werd besloten op safe te spelen door er twee te bestellen.
2) De ene programmeur kan ook met de andere worden genaaid door de trui op het slave-apparaat te verplaatsen.

Specificaties

Ondersteund besturingssysteem: Windows, MacOS, Linux
CPU: Atmega8A
PC-verbindingsinterface: USB
Programmeerinterface: ISP (in-circuit)
Programmeerspanning: 5V of 3,3V (afhankelijk van de positie van jumper JP2)
Programmeerfrequentie: 375 kHz (standaard) en 8 kHz (met jumper JP3 gesloten)
Ondersteunde controllers: alle AVR's met SPI-interface
Beschrijving:

Lijst met ondersteunde microcontrollers

ATmega-serie

ATmega8 ATmega48 ATmega88 ATmega168 ATmega328
ATmega103 ATmega128 ATmega1280 ATmega1281 ATmega16
ATmega161 ATmega162 ATmega163 ATmega164 ATmega169
ATmega2560 ATmega2561 ATmega32 ATmega324 ATmega329
ATmega3290 ATmega640 ATmega644 ATMEGA64 ATmega649
ATmega6490 ATmega8515 ATmega8535

Kleine serie

ATtiny12 ATtiny13 ATtiny15 ATtiny26 ATTINY25
ATtiny45 Attiny85 ATtiny2313

Klassieke serie

AT90S1200 AT90S2313 AT90S2333 AT90S2343 AT90S4414
AT90S4433 AT90S4434 AT90S8515
AT90S8535

CAN-serie

AT90CAN128

PWM-serie

AT90PWM2 AT90PWM3

Verschijning

De leveringsset is minimaal - programmeur + kabel zonder elastiek. In mijn geval: verdubbel het bedrag.

De prestatiecultuur is echt zwak; scheef gesoldeerde kammen trokken meteen mijn aandacht. Overal waar mogelijk zijn er sporen van flux, en met oxiden hadden de programmeurs blijkbaar al een hele tijd in het magazijn rondgeslingerd, en ze werden geassembleerd met de gebruikelijke snelheid van de Chinezen.















Sommige gaten zijn niet volledig gevuld met soldeer



SMD-elementen worden ook scheef gesoldeerd



Ik heb de kam even later rechtgetrokken, het was pijnlijk onaangenaam om naar zo'n helling te kijken, ik soldeerde de elementen en waste vervolgens het bord



De afmetingen van het bord zijn iets groter dan die van de USB-TTL-converter op de CP2102



De lengte van de trein is ongeveer 30 cm, er is een mening dat hoe korter de trein, hoe beter. Sommige mensen verkorten het specifiek. Bestel je een originele USBASP, dan is de complete kabel al 50cm.



Bediening aan boord

Er zijn drie jumpers op het bord die setten verschillende modi programmeur werking:
JP1- wordt gesloten als de firmware van de programmeur zelf wordt bijgewerkt
JP2- drievoudige jumper, hier selecteert u welke spanning wordt geleverd aan de microcontroller die wordt geflitst, ofwel 5V (linkerpositie) of 3,3V (rechterpositie)
JP3- als je het sluit, zal het programmeren van de controller op een lagere frequentie plaatsvinden, maar de Chinezen hebben hier geen kam gesoldeerd, omdat het is niet vereist voor deze firmware
De programmeur is, zoals je kunt zien, gebouwd op basis van Atmega8 met 12 MHz quartz. Meest rechtse bovenste element, ondertekend F1, met een omgekeerd nummer 4 - een zelfherstellende zekering, beschermt de USB-poort van een pc/laptop als er plotseling iets gebeurt op het bord dat wordt geflasht kortsluiting. Onder de latei JP2 LDO-stabilisator bevindt zich 662K, die de spanning verlaagt van 5V naar 3,3V als de jumper in de juiste positie staat.

Stuurprogramma's installeren

Om de programmeur te kunnen gebruiken, moet u er eerst stuurprogramma's voor installeren. Ik steek een willekeurige programmeur in de USB-poort van de pc, er klinkt een signaal over nieuwe apparatuur, de LED op het apparaat zelf licht op, maar automatisch zoeken chauffeurs gebeuren niet.
opmerking. Voordat u het stuurprogramma installeert, moet u de verificatie uitschakelen digitale handtekening op Windows
1) Downloaden, uitpakken op een handige plaats.
2) Ga bijvoorbeeld naar “Apparaatbeheer”, plaats de cursor op de hoofdknop (Win10), klik met de rechtermuisknop en selecteer “Apparaatbeheer”.

3) In de tak ‘Andere apparaten’ kun je dit zien onbekend apparaat USBASP met een oranje driehoek -> beweeg eroverheen, klik met de rechtermuisknop -> "Stuurprogramma's bijwerken..."

4) Geef het pad op naar de eerder uitgepakte map met stuurprogramma's - "libusb_1.2.4.0", klik op "OK"

5) “Installeer dit stuurprogramma toch”

6) Klaar, nu de oranje driehoek weg is, zijn de stuurprogramma's geïnstalleerd



Firmware van broer

Ik wist al eerder dat de Chinezen deze programmeurs verkopen met niet de nieuwste firmware. Ik besloot eerst de firmware van een van hen bij te werken en vervolgens, gewoon voor de lol, beide werkende programmeurs te vergelijken. Om dit te doen, verbind ik beide apparaten met een kabel, op de master (die ik in de USB-poort steek) worden geen jumpers aangeraakt, en op de slave-programmeur (waarop we de firmware gaan updaten) heb ik de jumper verplaatst van JP2 op JP1:



Ik ga naar het Khazama AVR Programmer-programma, selecteer ATmega8 uit de vervolgkeuzelijst en lees eerst het Flash-geheugen via het menu-item “Command” -> “Read FLASH to Buffer” om de Chinese fabrieksfirmware op te slaan. Voor het geval dat.

In dit geval zal een dergelijke fout periodiek verschijnen; als u het venster sluit, blijft het programma werken.

Er wordt gelezen, wat eindigt met een pop-upvenster dat aangeeft dat het FLASH-geheugen met succes in de buffer is gelezen

Nu moet je de inhoud van de buffer opslaan: "Bestand" -> "FLASH-buffer opslaan als...". Kies een handige plaats waar oude firmware wordt opgeslagen, geef het een naam (ik noemde het bijvoorbeeld firmware_1) en voeg de extensie *.hex toe - als u het niet schrijft, wordt het opgeslagen als gewoon een bestand zonder extensie.


Ik download de firmware voor de programmeur van de pagina archief usbasp.2011-05-28.tar.gz(hetzelfde archief bevat stuurprogramma's voor Windows, ik pak de inhoud op een handige plaats uit.
Ondertussen laad ik in Khazama de gedownloade firmware in de buffer. "Bestand" -> "FLASH-bestand in buffer laden". Ik kies de firmware waarin atmega8 in de naam staat, omdat de programmeur die wordt geflasht zich op deze chip bevindt.

Zoals je kunt zien, zijn er hier drie firmwares - voor Atmega8, 48 en 88. In ons geval Atmega 8 - dat is wat ik kies.

Ik ben aan het naaien. "Opdracht" -> "FLASH-bestand naar buffer schrijven". De fout treedt opnieuw op, maar het proces gaat verder en eindigt met succes.



Omdat 'programma' in de gebruikelijke zin betekent dat je het op 1 zet, is bij het werken met zekeringen alles precies het tegenovergestelde, wat voor verwarring zorgt en in dit geval kun je per ongeluk de controller blokkeren en dan is het niet meer mogelijk om deze te flashen. Het Khazama AVR Programmer-programma is handig voor het bekijken van fuse-bits - daar kun je duidelijk zien gepland, welke ervan zijn geïnstalleerd en welke niet.

Ze bevinden zich langs het pad "Command" -> "Fuses and Lock Bits...", er wordt een venster geopend:

Waar, wanneer u op de knop "Alles lezen" drukt, de zekering- en slotbits worden geteld, en beruchte fout zal de tijd hebben om maar liefst 5 keer achter elkaar uit te komen. Er treden fouten op in de Chinese fabrieksfirmware. Maar als u een nieuw geflashed programmeur in de USB-poort steekt, met de firmware gedownload via de bovenstaande link, dan zullen deze fouten niet langer verschijnen, maar bugs zullen op een andere plaats verschijnen, maar daarover later meer.

Communicatie met Pro Mini-bord (Atmega 168, 3,3V/8MHz)

In dit geval zijn de programmeurpinnen verbonden met de bordpinnen Pro Mini, zoals geïllustreerd in het onderstaande schema. De jumpers kunnen niet worden herschikt, d.w.z. blijft in stand 5V staan.
Zelfs Pro-bord Mini wordt aangeduid als 3,3V, maar 5V kan worden geleverd aan de 168e Atmega. Overigens is de 3,3V AMS1117-stabilisator volledig van het bord gesoldeerd.



AVRDUDE-PROG 3.3
Consoleprogramma voor knipperende microschakelingen, uw GUI niet heeft, op voorraad werkt het opdrachtregel, maar liefhebbers hebben er veel shells voor geschreven, voor het gemak om ermee te werken. Een van deze shells heet AVRDUDE PROG, gemaakt door Russisch sprekende ontwikkelaars. Deze shell is naar mijn mening alleen handig voor het flashen van de MK. Na de lancering wordt de controller geselecteerd, in in dit geval Atmega168 en programmeurtype - USBasp. Daarna kunt u beginnen met het schrijven/lezen van het geheugen. Ofwel op de fabrieksfirmware, ofwel op de nieuwe - in beide gevallen waren er geen problemen met de communicatie met Atmega168. Voor de lol flashde ik de standaard Arduino-knipperschets, geëxporteerd naar een binair HEX-bestand. Alles is soepel.




Khazama AVR-programmeur
Hier hoeft u alleen maar een microcontroller uit de vervolgkeuzelijst te selecteren en u kunt al met geheugen/bits werken.
Als de programmeur dat echter zelf heeft gedaan fabrieksfirmware, er zullen periodiek fouten verschijnen, zoals hierboven al vermeld, op nieuwe firmware- deze fouten bestaan ​​niet meer.


Communicatie met ATtiny13A-controller in SOIC8-pakket

Aansluiting volgens onderstaand schema. Maar hier wordt het iets interessanter.

Omdat de kale chip in een SOIC8 SMD-pakket zit, heb ik hem in dit geval in een SOIC8-DIP8-adapter geplaatst voor gemakkelijke verbinding met de programmeur in de toekomst. U kunt een recensie van deze adapter lezen.

AVRDUDE-PROG 3.3
Hier selecteert u uit de lijst de gelijknamige controller, de USBasp-programmeur en, als de programmeur is geflashed met de fabrieksinstellingen Chinese firmware, dan verlopen alle handelingen soepel en soepel. Als u de programmer echter vervangt door een andere met bijgewerkte firmware, zal er tijdens elke handeling een fout optreden.

Het lijkt erop dat noch het programma, noch de programmeur automatisch kan overschakelen naar de langzame programmeermodus die nodig is voor de ATtiny13. Maar er zijn minstens twee opties:
1) Strijkijzer: sluit de trui JP3

2) Software: bewerk het bestand “programm.ini” in de map met het AVRDUDE PROG 3.3-programma


Voer daar vier regels code in en sla op. (genomen)
progisp=jtag2pdiportprog=COM1portenabled=1 progisp=Usbasp -B 3 portprog=usb portenabled=0

Opmerking. Hierbij wordt de “-B”-toets gebruikt, die de programmeur naar een lagere programmeerfrequentie schakelt. Waarde "3" - tijd in microseconden

Voer daarna AVRDUDE PROG 3.3 opnieuw uit en selecteer UsbaspSpeed ​​​​in de vervolgkeuzelijst met programmeurs. Nu zal het werken met ATtiny13 op een programmeur met nieuwe firmware niet langer foutloos zijn en hoeft jumper JP3 in dit geval niet langer gesloten te worden.

Khazama AVR-programmeur
Er wordt een controller uit de lijst geselecteerd en de situatie is vrijwel hetzelfde.

Een programmeur met fabrieksfirmware werkt normaal met ATtiny13, behalve de voortdurend verschijnende foutvensters, waar ik het eerder al over had.
Maar met de programmeur op de nieuwe firmware verschijnt er nog een fout met het onvermogen om de handtekening (digitale handtekening) van de controller te lezen.

Maar het is de moeite waard om de jumper te sluiten JP3 en u kunt in alle rust werken


Of stel eenvoudigweg de werkfrequentie in via de vervolgkeuzelijst langs het pad "Opdracht" -> "Programmaopties", ik stel de frequentie in op 187,5 kHz.

Opmerking. De programmeerfrequentie moet minimaal 4 keer lager zijn dan de klokfrequentie van de chip die wordt geflashed. Maar als je kijkt naar de zekeringen die zijn gelezen van de ATtiny13, dan staan ​​​​op de laatste regel Int.Rc.Osc. Er wordt 9,6 MHz aangegeven.
Een nieuweling zal op zijn minst een vraag hebben: waarom verschijnt dezelfde fout op de 1,5 MHz die is ingesteld in KHazame? En ook waarom, als je in AtmelStudio bijvoorbeeld een code schrijft voor het knipperen van een LED met een frequentie van één keer per seconde en in een macro schrijft:
#define f_cpu 9600000 en het laden van de code op de Attiny13 zorgt ervoor dat de LED heel langzaam knippert?
- kijk naar de voorlaatste regel, waar Verdeel de klok intern door 8- dit is de meegeleverde frequentievoorschaler, die deze 9,6 MHz door 8 deelt, en dus echte frequentie De chip hier is 1,2 MHz. Wanneer u een frequentie van 187,5 kHz of minder kiest, verdwijnen de fouten en kunt u normaal met de controller werken.

Opmerking 2. De methode met het selecteren van de frequentie in KHazame is meerdere malen sneller dan de methode met fysiek sluitende jumper JP3, omdat in het laatste geval de frequentie wordt verlaagd naar 8 kHz.

Integratie van de programmeur in Atmel Studio 7

Atmel Studio is een ontwikkelomgeving van Atmel, maar kan niet rechtstreeks met USBASP werken, vooral niet met de Chinese. Dankzij hetzelfde AVRDUDE-programma, opgenomen in het AVRDUDE PROG 3.3-pakket, dat hier de rol van tussenpersoon zal spelen, kun je echter een “kruk” bouwen, en dan kun je in de omgeving zelf de mogelijkheid toevoegen om een MK aangesloten via USBASP.

Eerst moeten we de omgeving starten; er wordt aangenomen dat er al code is geschreven en samengesteld. In mijn voorbeeld is dit een eenvoudige LED-flitser - Knipperen.

Op bovenste paneel tools selecteer “Extra” - “Externe tools...”

Zal openen klein raam, klik op “Toevoegen”

In het bovenste veld "Titel:" voer een geschikte naam in, ik schreef "Atmega168", omdat De configuratie die ik hieronder zal geven, is specifiek van toepassing op deze controller en voor elke andere controller wordt deze individueel geconfigureerd.
In het grote veld bovenaan wordt de naam van het instrument automatisch gedupliceerd.

Tweede regel, veld "Commando:"- hier moet u het pad opgeven naar het bestand “avrdude.exe”, dat zich in de map met het bovenstaande programma bevindt

Derde regel, veld "Argumenten:" u moet de daadwerkelijke configuratie invoeren

Configuratie voor Atmega168

P m168 -c usbasp -P usb -U flash:w:$(ProjectDir)Debug\$(Doelnaam).hex:a
-p - controllernaam
-s - welke programmeur
-P - poort via welke de firmware wordt geüpload
-U - welke bewerking wordt uitgevoerd met welk geheugen (in dit geval schrijven naar Flash)
Als u het voor een andere MK moet configureren, moet de parameter "m168" worden gewijzigd in de overeenkomstige controller die zal knipperen. Bijvoorbeeld “m8” voor Atmega8 of “m328p” als Atmega328p. Zie de parameters voor andere MK's - daar vindt u ook beschrijvingen van de AVRDUDE-toetsen.

Configuratie voor ATtiny13


Nadat u de velden heeft ingevuld, klikt u op “Toepassen” en “OK”. Het venster wordt gesloten

Als u nu opnieuw op "Extra" klikt, zal het nieuw gemaakte hulpmiddel daar verschijnen. En wanneer u erop klikt, wordt de gecompileerde code automatisch in de controller geflasht.

Maar deze handeling gebeurt in twee klikken, wat niet erg handig is. We moeten dit hulpmiddel meenemen hoofdpaneel gereedschap zodat het altijd zichtbaar is.
Om dit te doen, gaat u opnieuw naar “Extra” en klikt u vervolgens op “Aanpassen...”
Het volgende venster wordt geopend:

Ga naar het tabblad "Opdrachten" - klik op de knop "Opdracht toevoegen...".

Er verschijnt een ander venster. Daarin - selecteer in de linkerkolom "Extra", en in rechter kolom selecteer “Extern commando 1”. Klik op "OK"

“Extern Commando 1” staat bovenaan de lijst en let op de werkbalk zelf: het item “Atmega168” is in de interface verschenen.

Maar het lijkt mij dat de toegewezen plaats niet erg goed is; het is raadzaam om deze naar rechts te verplaatsen, druk op de knop "Omlaag" (één klik = één positie naar rechts verschuiven); Hierna kunt u het venster sluiten met de knop "Sluiten" en de chip met één klik rechtstreeks vanuit de studio naaien via de bewaakte programmeur.


Wanneer u de chip op deze manier flasht, verschijnt het AVRDUDE-consolevenster gedurende een seconde. Maar het kan nodig zijn om dit log op de een of andere manier op te slaan voor verdere weergave. Vervolgens moet u in het venster "Externe hulpmiddelen" het vakje "Uitvoervenster gebruiken" aanvinken.

En nu wordt het log weergegeven in het uitvoervenster onderaan het ATmel Studio 7-programma. Dit selectievakje kan afzonderlijk worden ingesteld voor elke controller die is toegevoegd aan "Externe tools".

Toevoeging op programmeurzekeringen

Uit het READMI-document dat bij de stuurprogramma's en firmware voor USBASP werd geleverd, bleek later dat de ontwikkelaar aanbeveelt een bepaalde configuratie van zekeringsbits in te stellen die de werking van de externe resonator bepalen.
Het nadeel van Khazam's is dat het venster met zekeringen niet de HEX-waarden van de ingestelde bits weergeeft. Dit is al te zien in AVRDUDE PROG. Fabriekszekeringen die door de Chinezen zijn ingesteld, zien er zo uit ( zorg ervoor dat u een punt "omgekeerd" plaatst - gemarkeerd met een blauwe rechthoek):

Dit vereist het uitschakelen van twee selectievakjes van “BODEN” en “SUT1” (gemarkeerd met een rood ovaal),
vink twee vakjes aan voor “CKOPT” en “SUT0” (gemarkeerd met een groene rechthoek),
in de rechterkolom worden de HEX-waarden van de gewijzigde bits weergegeven (gemarkeerd met een vetgedrukte rode rechthoek): Lock Byte: 3F Zekering hoge byte: C9 Zekering lage byte: E.F..

Als alles overeenkomt, kunt u op “programmeren” drukken

AANDACHT. Boze lont sloeg RSTDISBL- raak hem onder geen enkele omstandigheid aan, anders blokkeert de installatie de controller en is het niet langer mogelijk om hem via USBASP te flashen.
_____________________________________

Conclusies

Geprobeerd en werkt. Als je niet van plan bent Khazam te gebruiken, heeft het geen zin om de firmware voor de programmeur bij te werken, gelukkig werkt het prima, en in het geval van de ATtiny13 zijn er geen wijzigingen of jumpers nodig. Nieuwste firmware- om de een of andere reden bleek ze in dit opzicht grilliger te zijn. Het enige is dat het bord na ontvangst moet worden gesoldeerd en gewassen.

Lijst met koppelingen

Elke versie van Freeduino/Arduino kan fungeren als ISP-programmeur, waarmee je bijvoorbeeld de bootloader in een ander vergelijkbaar bord kunt veranderen, of de bootloader kunt flashen naar een nieuwe ATmega-chip. De beschrijving specificeert Arduino, maar in feite kan elke kloon worden gebruikt, inclusief alle Freeduino-varianten.

Hier beschouwen we twee opties voor de ISP-programmeur: Arduino-gebaseerd: Mega-ISP, die kan worden samengesteld uit elke versie van Arduino en zijn klonen, en Bit-Bang-programmeur, waarvoor alleen die Arduino-varianten geschikt zijn die extra contacten hebben van de FT232RL-microschakeling aangesloten op een speciale connector.

ISP/ICSP-functies

De afkortingen ISP en ICSP staan ​​respectievelijk voor In System Programming en In Circuit Serial Programming. Dit betekent het programmeren van een chip die al op een circuit is aangesloten, en het programmeren ervan afgewerkt apparaat met behulp van een serieel protocol.

Het is van fundamenteel belang dat de programmeerbare microcontroller succesvol ‘opstart’, en pas daarna gegevens van de programmeur kan ontvangen. Voor ons betekent dit dat hij op stroom moet worden aangesloten en over een geschikte klokbron moet beschikken. De eenvoudigste manier om stroom te leveren is via de ICSP-connector zelf, maar er zijn enkele bijzonderheden met de klokbron.

Bij de microcontrollers uit de ATmega-serie wordt de klokbron geselecteerd met behulp van de zogenaamde fuse-bits, die net als het programmageheugen en EEPROM met behulp van de programmeur kunnen worden gewijzigd.

Voordat hij verkoopt, stelt de fabrikant de zekeringsbits zo in dat de interne oscillator wordt geselecteerd als de bron van kloksignalen, en een dergelijke microcontroller kan eenvoudig worden aangesloten op de ISP-programmeur, rekening houdend met de locatie van de pinnen, en beginnen te werken. Als u echter met behulp van de ISP-programmeur de waarden van de zekeringbits wijzigt, zodat de bron van de kloksignalen verandert, moet u, voordat de ISP-programmeur weer met de microcontroller gaat werken, de overeenkomstige bron aansluiten ernaar. U moet dus voorzichtig zijn bij het wijzigen van de waarden van zekeringsbits.

Van de bekende projecten voor het creëren van een ISP-programmeur op basis van Arduino lijkt Mega-ISP ons het meest interessant. Dit specifieke project is opgenomen in de Arduino-software in de voorbeeldensectie onder de naam ArduinoISP.

Nadat je de schets naar je Arduino-bord hebt geüpload, zul je deze waarschijnlijk op de een of andere manier moeten uitschakelen. zachte reset. Eigenaars van Freeduino 2009/2013/Nano/Mega2560-kaarten kunnen eenvoudig de JRS-jumper verwijderen, Arduino-bezitters kunnen dezelfde jumper met een mes doorsnijden. Bij sommige andere printplaten is het mogelijk om de CRS-condensator te desolderen, maar wij raden minder aan radicale manier- verbind de Reset- en +5V-pinnen met een weerstand met een nominale waarde van ongeveer 120 Ohm (). Als alles correct is gedaan, wordt de microcontroller niet gereset wanneer de COM-poort wordt geopend (dit is te zien aan LED 13), en hoe bijwerking het zal onmogelijk worden om het te updaten eigen firmware uit de Arduino-omgeving.

Ten tweede gebruikt deze ISP-programmeur bij communicatie met een pc het AVRISP/STK500v1-protocol alleen met een snelheid van 19200 bps, en werkt deze niet normaal met alle versies van pc-software. Wees daarom niet verbaasd dat je niets vanuit de Arduino-omgeving kunt flashen. De auteurs raden aan het avrdude-programma van Win-AVR te gebruiken.

Het samenstellen van de Mega-ISP-programmeur

Als je een ander gaat flashen met één Arduino-bord, dan heb je een 2x3-connector en 6 draden nodig. Montageschema:

Als je een aparte microcontroller moet flashen (vergeet niet dat de fuse-bits zo moeten worden ingesteld dat deze wordt geklokt door de interne oscillator), dan moet je de locatie van de Gnd-, Vcc-, MOSI-, MISO-, SCK-pinnen achterhalen volgens de Atmel-documentatie.

De verbinding met Arduino is: 10 - Reset, 11 - MOSI, 12 - MISO, 13 - SCK.

Vergeet niet aarde en stroom aan te sluiten.

Als voorbeeld laten we de bedrading zien voor de ICSP-connector en de ATmega328- en ATtiny85-microcontrollers.

De foto toont een van de implementatiemogelijkheden:

Werken met de Mega-ISP programmeur

Laten we bijvoorbeeld eens kijken hoe we een nieuwe bootloader kunnen flashen.

Bit-Bang-programmeur

Het ‘hart’ van de Bit-Bang-programmeur is de FD232RL-chip (degene die de COM-poort op de USB-bus implementeert), en de ATmega-microcontroller zelf neemt geen enkele rol in het programmeerproces. Hiermee kunt u de microcontroller programmeren die in de "socket" van uw Arduino is geïnstalleerd - de tweede Arduino-bord niet vereist.

Daarom zijn alleen USB-versies van Arduino geschikt voor deze programmeur, en dan nog niet allemaal, want Niet alle varianten hebben connector X3 met extra FT232RL-pinnen.

Het samenstellen van de Arduino Bit-Bang-programmeur

Voor de montage heb je 1x4, 2x6 connectoren, een 1x2 stekker (voor stroom) en verschillende draden nodig. Je kunt bijvoorbeeld een paar audiokabels van een cd-rom gebruiken - ze hebben handige afneembare connectoren, en in dit geval kun je zelfs zonder soldeerbout.

Het aansluitschema is als volgt:

Als u een extern apparaat gaat programmeren, zijn stroom- en aardedraden vereist. Ze zijn niet nodig om een ​​microcontroller te programmeren die zich in het paneel van dezelfde Arduino bevindt.

De foto's tonen beide verbindingsopties: het programmeren van de ATmega168-microcontroller die zich in de Arduino-aansluiting bevindt (stroom- en aardedraden zijn niet nodig) en het programmeren van de microcontroller in het tweede bord.


Werken met de Arduino Bit-Bang-programmeur

Laten we op dezelfde manier naar de firmware van de nieuwe bootloader kijken.

22 september 2011 om 20:11 uur

Miniatuur USB programmeur voor AVR-microcontrollers

  • Programmeren van microcontrollers

Net zoals een theater begint met een hanger, zo begint het programmeren van microcontrollers met een keuze goede programmeur. Sinds ik de microcontrollers van ATMEL onder de knie begin te krijgen, moest ik mezelf grondig vertrouwd maken met wat de fabrikanten te bieden hebben. Ze bieden veel interessante en smakelijke dingen, alleen tegen exorbitante prijzen. Een sjaal met een twintigpotige microcontroller met een paar weerstanden en diodes als harnas kost bijvoorbeeld net zoveel als een 'vliegtuig'. Daarom rees de urgente vraag over zelf-montage programmeur Na een lange studie van de ontwikkelingen van ervaren radioamateurs werd besloten een beproefde USBASP-programmeur samen te stellen, waarvan het brein de Atmega8-microcontroller is (er zijn ook firmware-opties voor atmega88 en atmega48). Door de minimale bedrading van de microcontroller kun je een vrij miniatuurprogrammeur samenstellen die je altijd mee kunt nemen, zoals een flashdrive.

De auteur van deze programmeur is de Duitser Thomas Fichl, zijn ontwikkelpagina met diagrammen, printplaatbestanden en stuurprogramma's.
Toen besloten was om een ​​miniatuurprogrammeur samen te stellen, heb ik het circuit voor de Atmega8-microcontroller in het TQFP32-pakket opnieuw getekend (de pin-out van de microcontroller verschilt van de pin-out in het DIP-pakket):

Jumper J1 wordt gebruikt als het nodig is om de microcontroller te flashen klok frequentie onder 1,5 MHz. Overigens kan deze springer helemaal worden geëlimineerd door de 25e etappe van de MK op de grond te plaatsen. Dan zal de programmeur altijd op een lagere frequentie werken. Persoonlijk merkte ik dat programmeren op lagere snelheid een fractie van een seconde langer duurt, en daarom trek ik nu niet aan de trui, maar naai er constant mee.
Zenerdiodes D1 en D2 worden gebruikt om de niveaus tussen de programmeur en de USB-bus op elkaar af te stemmen; het werkt zonder deze, maar niet op alle computers.
De blauwe LED geeft aan dat het circuit klaar is om te worden geprogrammeerd; de rode LED brandt tijdens het programmeren. De programmeercontacten bevinden zich op de IDC-06-connector, de pinout voldoet aan de ATMEL-standaard voor een 6-pins ISP-connector:

Deze connector bevat contacten voor het voeden van programmeerbare apparaten; hier wordt deze rechtstreeks vandaan gehaald USB-poort computer, dus wees voorzichtig en vermijd kortsluiting. Dezelfde connector wordt ook gebruikt voor het programmeren van de besturingsmicrocontroller; hiervoor hoeft u alleen maar de Reset-pinnen op de connector en op de microcontroller aan te sluiten (zie de rode stippellijn in het diagram). In het circuit van de auteur gebeurt dit met een jumper, maar ik heb het bord niet rommelig gemaakt en verwijderd. Voor een enkele firmware is een eenvoudige draadjumper voldoende. Het bord bleek dubbelzijdig te zijn, met een afmeting van 45x18 mm.

De programmeerconnector en een jumper om de snelheid van de programmeur te verminderen bevinden zich aan het uiteinde van het apparaat, dit is erg handig

Firmware van de besturingsmicrocontroller
Dus na het monteren van het apparaat is het belangrijkste dat overblijft het flashen van de besturingsmicrocontroller. Vrienden die nog steeds computers hebben LPT-poort:) De eenvoudigste vijfdraadsprogrammeur voor AVR
De microcontroller kan worden geflasht vanaf de programmeerconnector door de reset-pinnen van de microcontroller (29-poot) en de connector aan te sluiten. Er bestaat firmware voor de Atmega48-, Atmega8- en Atmega88-modellen. Het is raadzaam om een ​​van de laatste twee stenen te gebruiken, aangezien de ondersteuning voor de Atmega48-versie is stopgezet nieuwste versie De firmware dateert uit 2009. En de versies voor de 8e en 88e steen worden voortdurend bijgewerkt, en de auteur lijkt van plan te zijn een in-circuit debugger aan de functionaliteit toe te voegen. We halen de firmware van de Duitse pagina. Om het besturingsprogramma naar de microcontroller te uploaden, heb ik het programma PonyProg gebruikt. Bij het programmeren moet u het kristal starten waarmee u kunt werken externe bron kloksnelheid op 12 MHz. Screenshot van het programma met zekeringjumperinstellingen in PonyProg:

Na het flashen van de firmware moet de LED aangesloten op poot 23 van de microcontroller oplichten. Het zal zo zijn zeker teken dat de programmeur succesvol is geprogrammeerd en klaar is voor gebruik.

Installatie van stuurprogramma
De installatie is uitgevoerd op een machine met Windows-systeem 7 en er waren geen problemen. Wanneer u voor de eerste keer verbinding maakt met uw computer, verschijnt er een bericht dat aangeeft dat er een nieuw apparaat is gedetecteerd en wordt u gevraagd een stuurprogramma te installeren. Selecteer de installatie uit opgegeven locatie:

Er verschijnt onmiddellijk een venster met de waarschuwing dat het stuurprogramma dat wordt geïnstalleerd geen digitale handtekening heeft voor kleine, zachte stuurprogramma's:

We negeren de waarschuwing en gaan door met de installatie. Na een korte pauze verschijnt er een venster met de mededeling dat de installatie van het stuurprogramma met succes is voltooid

Dat is alles, de programmeur is nu klaar voor gebruik.

Khazama AVR-programmeur
Om met de programmeur te werken heb ik gekozen voor de Khazama AVR Programmer flasher. Een prachtig programma met een minimalistische interface.

Het werkt met alle populaire AVR-microcontrollers, stelt u in staat flash en eeprom te flashen, de inhoud van het geheugen te bekijken, de chip te wissen en ook de configuratie van fuse-bits te wijzigen. Over het algemeen behoorlijk standaard ingesteld. De zekeringinstelling wordt uitgevoerd door de klokbron uit de vervolgkeuzelijst te selecteren, waardoor de kans dat het kristal per ongeluk wordt vergrendeld sterk wordt verminderd. Zekeringen kunnen ook worden gewijzigd door selectievakjes in het onderste veld te plaatsen, maar op een niet-bestaande configuratie kunt u geen selectievakjes plaatsen, en dit is ook een groot pluspunt op het gebied van beveiliging.

Zekeringen worden, zoals u wellicht vermoedt, naar het MK-geheugen geschreven door op de knop Alles schrijven te drukken. Knop Opslaan slaat op huidige configuratie en Load retourneert de opgeslagen versie. Ik kon het echt niet bedenken praktische toepassing deze knoppen. De knop Standaard is ontworpen om de standaardzekeringconfiguratie vast te leggen, degene waarmee microcontrollers uit de fabriek komen (meestal 1 MHz van de interne RC).
Over het algemeen bleek dit gedurende de hele periode dat deze programmeur werd gebruikt, zo te zijn beste kant op het gebied van stabiliteit en snelheid. Het werkte zonder problemen, zowel op een oude desktop-pc als op een nieuwe laptop.

Bestand downloaden printplaat in SprintLayout kan dat