System och material. Miniatyr USB-programmerare för AVR-mikrokontroller

Precis som en teater börjar med en hängare, så börjar programmering av mikrokontroller med att välja en bra programmerare. Sedan jag börjar behärska företagets mikrokontroller ATMEL, då var jag tvungen att bekanta mig ordentligt med vad tillverkarna erbjuder. De erbjuder många intressanta och välsmakande saker, bara till orimliga priser. Till exempel kostar en halsduk med en tjugobens mikrokontroller med ett par motstånd och dioder som sele som ett "flygplan". Därför uppstod frågan om självmontering av programmeraren. Efter en lång studie av utvecklingen av erfarna radioamatörer beslutades det att montera en väl beprövad programmerare USBASP , vars hjärna är en mikrokontrollerAtmega8 (det finns även firmwarealternativ för atmega88 och atmega48). Den minimala kabeldragningen för mikrokontrollern gör att du kan montera en ganska miniatyrprogrammerare som du alltid kan ta med dig, som en flash-enhet.

När det beslutades att montera en miniatyrprogrammerare ritade jag om kretsen för Atmega8 mikrokontroller i höljet TQFP32(pinouten på mikrokontrollern skiljer sig från pinouten i DIP-paketet):

Bygel J1 används om det är nödvändigt att flasha mikrokontrollern med klockfrekvens under 1,5 MHz. Förresten, den här hopparen kan elimineras helt och hållet genom att placera den 25:e etappen av MK på marken. Då kommer programmeraren alltid att arbeta med en reducerad frekvens. Personligen märkte jag att programmering med reducerad hastighet tar en bråkdel av en sekund längre, och därför drar jag inte bygeln, utan syr hela tiden med den.
Zenerdioderna D1 och D2 används för att matcha nivåerna mellan programmeraren och USB-bussen; det fungerar utan dem, men inte på alla datorer.
Den blå lysdioden indikerar att kretsen är redo att programmeras, den röda lysdioden lyser under programmering. Programmeringskontakterna finns på IDC-06-kontakten, pinouten överensstämmer med ATMEL-standarden för en 6-polig ISP-kontakt:


Denna kontakt innehåller kontakter för att driva programmerbara enheter, här är den hämtad direkt från USB uttag dator, så du måste vara försiktig och undvika kortslutning. Samma kontakt används också för programmering av kontrollmikrokontrollern, för att göra detta ansluter du bara återställningsstiften på kontakten och på mikrokontrollern (se den röda streckade linjen i diagrammet). I författarens krets görs detta med en bygel, men jag rörde inte till brädan och tog bort den. För en enda firmware räcker det med en enkel trådbygel. Skivan visade sig vara dubbelsidig, mäta 45x18 mm.


Programmeringskontakten och en bygel för att minska programmerarens hastighet finns i slutet av enheten, detta är mycket bekvämt


Firmware för kontrollmikrokontrollern

Så efter att ha monterat enheten är det viktigaste som återstår att blinka kontrollmikrokontrollern. Vänner som fortfarande har datorer med LPT-port är väl lämpade för dessa ändamål :)Den enklaste femtrådsprogrammeraren för AVR
Mikrokontrollern kan flashas från programmeringskontakten genom att ansluta återställningsstiften på mikrokontrollern (29 ben) och kontakten. Firmware finns för modellerna Atmega48, Atmega8 och Atmega88. Det är tillrådligt att använda en av de två sista stenarna, eftersom stödet för Atmega48-versionen har upphört och senaste versionen Den fasta programvaran går tillbaka till 2009. Och versioner för 8:e och 88:e stenarna uppdateras ständigt, och författaren verkar planera att lägga till en in-circuit debugger till funktionaliteten. Vi hämtar firmware från den tyska sidan. För att ladda upp kontrollprogrammet till mikrokontrollern använde jag programmet PonyProg. Vid programmering är det nödvändigt att ställa in kristallen att arbeta från en extern klockkälla på 12 MHz. Skärmdump av programmet med säkringsbygelinställningar i PonyProg:


Efter att den fasta programvaran har blinkat ska lysdioden som är ansluten till ben 23 på mikrokontrollern lysa. Detta kommer att vara ett säkert tecken på att programmeraren har framgångsrikt programmerats och är redo att användas.

Installation av drivrutiner

Installationen utfördes på en maskin med Windows-system 7 och det var inga problem. När du ansluter till din dator för första gången visas ett meddelande som indikerar att en ny enhet har upptäckts och uppmanar dig att installera en drivrutin. Välj installation från den angivna platsen:


Välj mappen där veden finns och klicka på Nästa


Ett fönster visas omedelbart med en varning om att drivrutinen som installeras inte har en digital signatur för små mjuka:


Vi ignorerar varningen och fortsätter installationen, efter en kort paus visas ett fönster som informerar oss om att installationen av drivrutinen har slutförts.


Det var allt, programmeraren är nu redo att användas.

Khazama AVR programmerare

För att arbeta med programmeraren valde jag Khazama AVR Programmer flasher. Ett underbart program med ett minimalistiskt gränssnitt.


Den fungerar med alla populära AVR-mikrokontroller, låter dig flasha flash och eeprom, se innehållet i minnet, radera chippet och även ändra konfigurationen av säkringsbitar. I allmänhet en helt standarduppsättning. Säkringsinställningen utförs genom att välja klockkällan från rullgardinsmenyn, så att sannolikheten för att låsa kristallen av misstag minskar kraftigt. Säkringar kan också ändras genom att placera kryssrutor i det nedre fältet, men du kan inte placera kryssrutor på en obefintlig konfiguration, och det är också ett stort plus vad gäller säkerheten.


Säkringar skrivs till MK-minnet, som du kanske gissar, genom att trycka på knappen Write All. Knappen Spara sparar den aktuella konfigurationen och knappen Ladda återställer den sparade. Det är sant att jag inte kunde komma på en praktisk användning av dessa knappar. Standardknappen är utformad för att registrera standardsäkringskonfigurationen, den med vilken mikrokontroller kommer från fabriken (vanligtvis 1 MHz från den interna RC).
Generellt sett, under hela tiden jag har använt den här programmeraren, har den visat sig vara den bästa när det gäller stabilitet och drifthastighet. Det fungerade utan problem både på en gammal stationär PC och på en ny bärbar dator.

Ladda ner PCB-fili SprintLayout kan du följa denna länk

USBasp är en enkel in-circuit USB-programmerare för Atmel AVR-mikrokontroller. Programmeraren är byggd på ATMega88 (eller ATMega8) mikrokontroller och innehåller ett minimum av delar. Programmeraren använder sin egen USB-drivrutin, nr speciell USB inga kontroller behövs.

Programmeringsfunktioner:
- arbeta under vilken plattform som helst: Windows, Linux och Mac OS X
- inga speciella komponenter eller SMD behövs
- programmeringshastighet upp till 5 kB/sek
- SCK-jumper tillåter programmering av låghastighetskontroller (< 1.5МГц)
- i planer: seriellt gränssnitt (till exempel för felsökning)

Programmerare krets

Kretsen är designad för att programmera endast 5V kristaller. I andra fall måste nivåerna konverteras!

Laddar upp firmware

Därför att Eftersom programmeringskretsen använder en mikrokontroller måste den först blinka. För att göra detta, anslut en annan fungerande programmerare och installera jumper J2 för att aktivera firmwareuppdateringsfunktionen.
Flasha programmeraren med den fasta programvaran: "bin/firmware/usbasp.atmega88.xxxx-xx-xx.hex" eller "bin/firmware/usbasp.atmega8.xxxx-xx-xx.hex"
Det kommer att vara nödvändigt att installera säkringar för att ansluta en extern kvarts
# TARGET=atmega8 HFUSE=0xc9 LFUSE=0xef
# TARGET=atmega48 HFUSE=0xdd LFUSE=0xff
# TARGET=atmega88 HFUSE=0xdd LFUSE=0xff

Bygelinställningar

J1 - strömförsörjning (från USB, eller extern källa). Var försiktig, för... kretsen innehåller inget kortslutningsskydd.
J2 - firmware-uppdatering (kan inte uppdatera sig själv!). Den installerade bygeln låter dig programmera programmeringskontrollern med en annan fungerande programmerare.
J3 - om den programmerbara mikrokontrollern har låg hastighet<1.5 МГц, то необходимо установить данный джампер. Тогда SCK уменьшится с 375 кГц до примерно 8 кГц.

Installera drivrutiner för Windows

Anslut USBasp-programmeraren till USB. Windows hittar enheten och ber dig ange drivrutinen, peka den till mappen "bin/win-driver". Windows kommer att installera drivrutinen.
Nu kan du köra avrdude, till exempel:
1. Gå in i terminalläge, MK: AT90S2313: avrdude -c usbasp -p at90s2313 -t
2. Skriv main.hex till flashminnet på ATmega8 MK: avrdude -c usbasp -p atmega8 -U flash:w:main.hex

Bygger sina källor (för Linux)

Firmware kompilering:
1. Installera GNU-verktygskedjan för AVR-mikrokontroller (avr-gcc, avr-libc-paket)
2. Gå in i firmware/katalogen
3. Kör kommandot "make main.hex"
4. Flash "main.hex" ATMega(4)8. Använd till exempel uisp eller avrdude (använd
Makefile med alternativet "make flash"). För att flasha den fasta programvaran, installera jumper J2 och anslut USBasp till den fungerande programmeraren.
Du måste också installera säkringar för att fungera från en extern kvarts (använd Makefile
med alternativet "gör säkringar").

Avrdude sammanställning:
AVRDUDE-programvaran stöds av USBasp-programmeraren från och med version 5.2.
1. Installera libusb-paketet: http://libusb.sourceforge.net/
2. Ladda ner den senaste versionen av avrdude: http://download.savannah.gnu.org/releases/avrdude/
3. cd avrdude-X.X.X
4. Konfigurera:
./bootstrap
./konfigurera
5. Sammanställning:
göra
göra installera

Foto av USBasp-programmerare

Program för att arbeta med programmeraren

AVRDUDE - USBasp stöds sedan version 5.2
BASCOM-AVR - USBasp stöds från och med version 1.11.9.6
Khazama AVR Programmer - Windows XP/Vista GUI-applikation för USBasp och avrdude

Med utvecklingen av datorteknik blir det för varje gång färre och färre datorer utrustade med COM- och LPT-portar. Detta i sin tur orsakar svårigheter, särskilt för radioamatörer, i samband med att para ihop mikrmed en persondator.

Den här artikeln beskriver en USB-programmerare för AVR-mikrokontroller, som du kan montera själv. Den är byggd på en Atmega8-mikrokontroller och kan fungera från en dators USB-kontakt. Denna programmerare är kompatibel med STK500 v2.

Beskrivning av USB-programmerare

USB-programmeraren är byggd på ett kort av enkelsidigt folieglasfiber. Det finns 2 byglar på kortet: en är placerad under SPI-kontakten, den andra bygeln är placerad nära samma kontakt.

När alla delar är förseglade måste du flasha Atmega8-mikrokontrollern med den fasta programvaran som anges i slutet av artikeln. Säkringarna som behöver ställas in vid programmering av Atmega8-mikrokontrollern ska se ut så här:

  • SUT1 = 0
  • BOOTSZ1 = 0
  • BOOTSZ0 = 0
  • CKOPT = 0
  • SPIEN = 0

Man måste komma ihåg att i vissa program är säkringsinställningarna inställda i motsatt riktning till detta. Till exempel, i CodeVisionAVR-programmet måste du markera rutorna bredvid ovan nämnda säkringar, och i PonyProg-programmet vice versa.

Programmering av Atmega8 via LPT-porten på en dator

Det snabbaste och billigaste sättet att programmera Atmega8 är att använda en LPT-programmerare för AVR. Ett liknande diagram visas nedan.

Mikrokontrollern drivs av en enkel 78L05 spänningsregulator. Du kan använda UniProf-programmet som ett programmeringsskal.

När du först slår på programmet och när styrenheten inte är ansluten, genom att trycka på knappen "LPTpins", måste du konfigurera LPT-portstiften enligt följande:

När UniProf startar bestämmer den automatiskt typen av mikrokontroller. Vi laddar Atmega8_USB_prog.hex firmware i UniProf-minnet och avvisar anslutningen av EEPROM-filen.

Vi ställer in säkringarna enligt följande (för UniProF-programmet) genom att trycka på "FUSE"-knappen:

För att komma ihåg inställningarna, tryck på alla tre "Skriv"-knappar. Sedan genom att klicka på "Radera" rensar vi först minnet på mikrokontrollern som blinkar. Efter detta klickar du på "Prog" och väntar på att firmwaren är klar.

Konfigurera en USB-programmerare

Efter att vår mikrokontroller har blinkat måste den installeras på USB-programmeringskortet. Därefter ansluter vi programmeraren till USB-porten på datorn, men levererar inte ström ännu.

Portinställning:

Terminalinställning:

ASCII-inställning:

Nu, efter att alla procedurer har slutförts, förser vi USB-programmeraren med ström. HL1 LED ska blinka 6 gånger och sedan förbli tänd.

För att kontrollera anslutningen mellan USB-programmeraren och datorn, tryck på "Enter"-tangenten 2 gånger i HyperTerminal-programmet. Om allt är ok ska vi se följande bild:

Om så inte är fallet, kontrollera installationen igen, speciellt TxD-linjen.

Därefter går vi in ​​i programmerare version 2.10, eftersom programmeraren utan detta inte kommer att fungera med "toppnivå"-program. För att göra detta, skriv "2" och tryck på "Enter", skriv "a" (engelska) och tryck på "Enter".

USB-programmeraren kan känna igen anslutningen av en programmerbar mikrokontroller. Detta görs i form av att övervaka "pull-up" av återställningssignalen till strömkällan. Detta läge slås på och av enligt följande:

  • "0", "Enter" - läget är inaktiverat.
  • "1", "Enter" - läget är aktiverat.

Programmeringshastighetsändring (1MHz):

  • "0", "Enter" – maximal hastighet.
  • “1”, “Enter” – reducerad hastighet.

Detta avslutar det förberedande arbetet, nu kan du försöka flasha någon mikrokontroller.

(nedladdningar: 1 203)

En gång i tiden, för ett par år sedan, tittade jag återigen igenom filen i någon radiotekniktidning och tänkte: är det inte dags att bemästra mikrokontroller? Det var inga problem med detta, det finns mycket litteratur, det finns tillräckligt med exempel. Jag studerade hårdvaran och skrev mitt första PROGRAM. Sedan började sökandet efter något för att lägga in det här programmet i styrenheten, det vill säga programmeraren. Det som behövdes var en enkel krets som kunde sättas ihop av det som fanns till hands och pålitlig, utan problem så att säga. Efter en lång sökning föll valet på programmeringskretsen från tidningen "RADIO" nr 10 2007. Konst. 31. Jag kommer inte att beskriva detta schema, för den som är intresserad finns den ursprungliga artikeln i arkivet. Jag ska bara säga att schemat fungerade perfekt, jag sydde allt utan problem, men av någon anledning misslyckades ibland MAX232 (jag bytte ut 3 stycken, jag kanske fick defekta). Jag gav den programmeraren till en kollega och bestämde mig för att bygga samma till mig själv, men jag hade ingen annan kontrollerad stabilisator K78R12C, så sökandet efter en ersättare började igen... Som ett resultat föddes den här kretsen, det här är resultatet av att "korsa" en magasinkrets och en proprietär SI-PROG-programmerare:

MAX232 ersattes med en snabbare ST232, den kontrollerade stabilisatorn ersattes med en vanlig 7812 och en transistoromkopplare efter den, transistorer - BC547, alla andra delar - enligt rekommendationerna från originalartikeln. Jag lade även till ett separat instickskort med uttag för olika typer av kontroller (eftersom jag främst använder RIC är kortet bara för dem för tillfället, och om du behöver flasha en AVR så med sladdar :-)). Allt detta är monterat på detta kort:

Och det här är ett ersättningskort för PIC:er och minneskretsar:

Ta bort alla oanvända kontakter från panelerna för att inte borra en massa extra hål. Här är en bild på den monterade brädan:

Programmeraren monterades i ett polskt fodral, som är betecknat Z50, och kortet designades för det, nedan är några bilder:

På bilden kan du se krafttransformatorn i väskan, jag kastade den senare, eftersom den visade sig vara ganska svag (jag gjorde LED-bakgrundsbelysningen på frontpanelen från superljusa lysdioder, och transformatorn kunde inte hantera det :-). Nu används en extern 15V strömkälla, med en ström på upp till 1A. Programmeraren arbetar med PonyProg, Si-prog, WinPic800 program. Använd PonyProg-programmet för kontroll, välj SI Prog I/O-programmeraren i motsvarande fönster och ställ in signalinversionen i enlighet med Tabell 1; för Si-Prog och WinPic 800-programmen, välj JDM-programmeraren och ställ in signalinversionen i enlighet med tabellerna 2 och 3.

Publikationer om ämnet