Programmeurs voor AVR-microcontrollers (USB, COM, LPT). Een LPT-programmeur maken voor AVR-microcontrollers

Voor beginners is de vraag: “Wat gaan we gebruiken om onze controller mee te flashen?” staat vrijwel onmiddellijk op. Dit probleem kan op twee manieren worden opgelost: we kopen een seriële programmeur of bouwen er zelf een. Het is uiteraard ongepast om seriële programmeurs voor te kopen beginfase introductie tot microcontrollers. Het meest eenvoudige oplossing er komt een zogenaamde “vijf draden” programmeur. Deze optie is best geschikt voor eenmalig gebruik, maar het gevaar is groot dat vroeg of laat uw LPT-poort op de computer doorbrandt. Als begroting en veilige optie programmeur voor parallelle poort we gebruiken een geavanceerder schema.

Introductie van een eenvoudige en veilige parallelle poortprogrammeur. Het programmeercircuit is vrij gebruikelijk in verschillende varianten en is gebaseerd op het gebruik van een 74HC 244N-bufferchip. De buffer houdt uw printerpoort veilig. Bovendien bevat het circuit een weerstand, die tot taak heeft te beschermen tegen statische elektriciteit.

De programmeur is compatibel met Atmel STK 200/300 en wordt ondersteund door veel populaire compilers. Alle klein setje Onderdelen voor de montage zijn vrij gebruikelijk en zullen geen problemen bij de aankoop veroorzaken. De printplaat is gemaakt in een enkelzijdige versie met meerdere jumpers.

Om de programmeur op een computer aan te sluiten, is het handig om een ​​LPT-poortverlengkabel te gebruiken.

Schema in sPlan-formaat 6.0 en bordindeling in formaat Sprint-indeling U kunt 4.0 hieronder downloaden onder LUT.


Microcontroller-firmware is een toegang tot zijn permanente herinnering gegeven programma, wat een code is in een hexadecimaal getalsysteem (bestand met hexadecimale extensie). Firmware wordt geïnstalleerd met behulp van speciaal apparaat- programmeur. Ze verschillen in de manier waarop ze verbinding maken persoonlijke computer, bijvoorbeeld via USB-, LTP-, COM-interfaces.

AVR-microcontrollers hebben vijf contacten voor programmeren: MOSI - bedoeld voor het ontvangen van gegevens; MOSO - voor gegevensuitvoer; SCK - klokuitgang; RESET is eenvoudigweg een reset en een gemeenschappelijke draad.


Laten we deze vijf contacten via stroombegrenzende weerstanden parallel verbinden LPT-poort op de computer en we krijgen de eenvoudigste LPT-programmeur voor microcontrollers van de AVR-familie.

Bij het monteren van het circuit is het noodzakelijk dat de kabel wordt afgeschermd, hiervoor is vooral een oude kabel goed interface kabel van de drukker. Als je gebruikt gewone kabel, dan moet de lengte ervan zo kort mogelijk zijn, en dan treden er soms programmeerfouten op. Maar het grootste nadeel van dit schema is dat als de installatie slecht is of als er een verbindingsfout optreedt, de LPT-poort van de computer beschadigd kan raken.

Schema USB-programmeur voor AVR-microcontrollers, geïmplementeerd op de Atmega8-microcontroller. Het circuit is zeer betrouwbaar en heeft een zeer belangrijk kenmerk, waarmee u microcontrollers met foutief geïnstalleerde zekeringen kunt herstellen.


Om de Atmega8-microcontrollerprogrammeur te flashen, moet u een van de hierboven besproken schema's voor LPT gebruiken.

Je kunt zelf een printplaat maken volgens de onder radioamateurs populaire methode, en een tekening van de printplaat in formaat is al beschikbaar in het archief met firmware en stuurprogramma's.

Idealiter zouden we zo'n USB-programmeur moeten hebben


Het enige dat overblijft is het programma in het geheugen van de microcontroller te schrijven; hiervoor kunt u het beste de Uniprof- en Code Vision AVR-hulpprogramma's gebruiken.

Een programma ontworpen voor een geïntegreerde softwareontwikkelomgeving voor AVR-microcontrollers. De belangrijkste kenmerken van CodeVisionAVR zijn dat het licht van gewicht is en zeer gemakkelijk te begrijpen. zelfstudie, en ondersteunt ook alle bestaande AVR-microcontrollers.

Als u besluit het Uniprof-programma te gebruiken, moet u de volgende zekeringen instellen.


Nadat de firmware van de Atmega8-microcontroller is voltooid, schakelt u de SA2-tuimelschakelaar naar NORM en sluit u de programmeur aan op USB. De computer moet het apparaat vinden. Zorg er hierna voor dat u het stuurprogramma uit het archief installeert. Zodra de driverinstallatie voor de programmeur is voltooid, is deze volledig klaar voor gebruik.

De programmeur kan met de volgende AVR Prog-shells werken, AVR-studio, ChipBlasterAVR en, een van de handigste, Code Vision AVR.

De eenvoudigste programmeuroptie voor AVR dit zijn vijf draden die aan de controllerpoort zijn gesoldeerd en daarop zijn aangesloten LPT haven. Ik ga niet in discussie, het is mogelijk. Maar Ik raad het nog steeds niet aan op deze manier. Ik zal je niet eens een bedradingsschema geven - als je het nodig hebt, kun je het zelf vinden. Omdat deze methode niet erg stabiel, mogelijk firmware crasht, de lengte van de draden is beperkt tot twintig centimeter (als het meer is, zal het glitchy zijn), dus je zult in de kont van je computer moeten rondscharrelen. Ja en LPT-poort is gemakkelijk te branden. Over het algemeen regeer ik niet.

Zoekend op internet vond ik een uitstekende programmeur die doorwerkt RS232 oftewel COM haven. En ook handig programma voor controllerfirmware UniProf van Nikolajev. Het programmeercircuit is uitgevonden door Gromov, de maker van Algorithm Builder.

Om de programmeur samen te stellen, hebt u het volgende nodig:

  • Drie diodes, allemaal met een laag vermogen. Bijvoorbeeld 1N4148.
  • Zeven weerstanden van 1 kOhm. Ik heb weerstanden van maat 1206
  • Als je het op mijn manier doet printplaat, dan kun je ook 3 weerstanden van 0 ohm kopen - jumpers, het maakt ze niet uit.

De printplaat is getekend met een stift, of, zoals de mijne, gemaakt met een laserstrijkijzer.

Voor het gemak heb ik de DB9-connector op de foto geïnstalleerd. Ik heb daar verschillende knippersnoeren aangesloten, of een adapter zoals deze:


De programmeur is gesoldeerd, de controller is erop aangesloten. Het is tijd om ervoor te zorgen dat alles correct wordt gedaan.

Launch UniProf.exe en kies een nummer COM poort waarop u de programmeur hebt aangesloten. Het controllertype moet onmiddellijk worden bepaald en boven het linker codevenster worden weergegeven.

Is het niet gelukt? Er zijn drie opties:

  • De programmeur is scheef gesoldeerd.
  • Dode controleur.
  • Ik heb de bedrading naar de microcontroller verkeerd gesoldeerd.

Nogmaals, je controleert alles grondig en probeert het opnieuw. Het zou moeten werken.

Als u nog nooit met controllers hebt gewerkt, heeft u dit misschien nodig testprogramma. Het zal niets nuttigs doen, maar het geeft je de zekerheid dat alles wat je eerder deed, correct werd gedaan.

Downloaden Atmel AVR-studio is de officiële omgeving voor het ontwikkelen van programma's voor microcontrollers AVR. De studio ondersteunt alle microcontrollers van de familie Atmel AVR. Vind haar nieuwste versie verkrijgbaar bij Atmel.com

Maak vervolgens aan nieuw project, selecteer als programmeertaal Assembler en geef de map en naam aan waar uw project zich zal bevinden. Gebruik het als debugger AVR SIMULATOR en geef aan met welke controller je gaat werken. Voer vervolgens een eenvoudig programma in het tekstvenster in.

Hier is de voorbeeldtekst:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 .INCLUSIEF "m16def.inc"; dit omvat een lijst met macrodefinities; zonder dit weet de compiler niet welke; het is de processor waarmee we het programma samenstellen; als je een andere controller hebt, vervang deze dan; overeenkomstige opname. Ze zijn binnen; AVR Studio-map op; "AVR Tools\AvrAssembler\Appnotes\" .MACRO uit LDI R16,@1 OUT @0,R16 .ENDMACRO ; We hebben een zeer handige macro ingesteld die dit mogelijk maakt; schrijf willekeurig gegeven nummer in welke dan ook; registreert in één regel code. .CSEG .ORG 0x0000 RJMP RESET .ORG 0x0030 ; De richtlijn begint de code vanaf adres 0x0030; het adres werd met een grote marge ingenomen, omdat; voor verschillende AVR's verschillende maten tafel; onderbreekt. Dus zeker! RESETTEN: ; startlabel OUTI DDRA,0xFF OUTI DDRB,0xFF OUTI DDRC,0xFF OUTI DDRD,0xFF ; Configureer de uitvoerpoortrichtingen; Als deze regelaar beschikt bijvoorbeeld niet over een haven; C, dan moet deze regel worden weggecommentarieerd. UITI PORTA,0xAA UITI POORTB,0xAA UITI PORTC,0xAA UITI POORTD,0xAA ; We voeren 10101010 uit om te krijgen; een duidelijk beeld van wat er in de havens gebeurde; veranderingen. Na voltooiing van het programma; bij de uitgangen van de microcontroller in een schaakbordpatroon; Er zal voedingsspanning of aarde zijn. Wat; eenvoudig te controleren met een voltmeter of met een eenvoudige; LED-sonde. RJMP-RESET; We herhalen het programma.

INCLUSIEF "m16def.inc"; dit omvat een lijst met macrodefinities; zonder dit weet de compiler niet welke; het is de processor waarmee we het programma samenstellen; als je een andere controller hebt, vervang deze dan; overeenkomstige opname. Ze zijn binnen; AVR Studio-map op; "AVR Tools\AvrAssembler\Appnotes\" .MACRO uit LDI R16,@1 OUT @0,R16 .ENDMACRO ; We hebben een zeer handige macro ingesteld die dit mogelijk maakt; schrijf een willekeurig gegeven getal op iemand; registreert in één regel code. .CSEG .ORG 0x0000 RJMP RESET .ORG 0x0030 ; De richtlijn begint de code vanaf adres 0x0030; het adres werd met een grote marge ingenomen, omdat; verschillende AVR's hebben verschillende tafelformaten; onderbreekt. Dus zeker! RESETTEN: ; startmarkering OUTI DDRA,0xFF OUTI DDRB,0xFF OUTI DDRC,0xFF OUTI DDRD,0xFF ; Configureer de uitvoerpoortrichtingen; Als deze controller bijvoorbeeld geen poort heeft; C, dan moet deze regel worden weggecommentarieerd. BUITEN PORTA,0xAA BUITEN POORTB,0xAA BUITEN PORTC,0xAA BUITEN POORTD,0xAA ; We voeren 10101010 uit om te krijgen; een duidelijk beeld van wat er in de havens gebeurde; veranderingen. Na voltooiing van het programma; bij de uitgangen van de microcontroller in een schaakbordpatroon; Er zal voedingsspanning of aarde zijn. Wat; eenvoudig te controleren met een voltmeter of met een eenvoudige; LED-sonde. RJMP-RESET; We herhalen het programma.

Klik vervolgens op de compileerknop (of F7) en ga naar uw projectmap. Daar zou het al op je moeten wachten ****.hexadecimaal firmwarebestand.
Launch UniProf.exe, druk op de knop met map openen en de inscriptie HEX. Selecteer uw vers samengestelde project en druk op ok.
Tweede venster UniProf zal u vragen om gegevens in te voeren EEPROM, wij hebben EEPROM niet gebruikt dus druk op annuleren.
Dat is alles, nu kunt u het flashen. Klik op de rode pijl met het opschrift Prog en wacht. Wanneer u klaar bent, kunt u op Lezen klikken en zien wat er naar uw controller is geschreven. Het zou hetzelfde moeten weergeven als wat al in het venster was geladen.

Nu hoeft u alleen nog maar uw microcontroller van stroom te voorzien en te kijken wat er op de poorten verschijnt. Ik zag een “kam” van lange en lage niveaus spanning? Geweldig! Je hebt je eerste controller in je leven geflasht! Nu kunt u zich verdiepen in het leren over AVR-microcontrollers.

Als het niet werkt, zijn hier mogelijke harken en oplossingen.

  • Moderne computers, met gigahertz-processors, nieuwerwetse Vista's en Sevens, zijn zeer slechte vrienden met deze programmeur. Het kan niet alleen zijn dat u eenvoudigweg geen COM-poort heeft, maar zelfs als dit gebeurt, is het nog geen feit dat alles zal werken zoals het zou moeten. Voor experimenten met radiotechniek raad ik aan om zoiets als een PIII 800/Windows'98 te bouwen met de restjes die voorhanden zijn. Het zal geen probleem zijn om zo’n wonder gratis op te graven, en je vindt het niet erg om het te verbranden als er iets misgaat
  • Dit schema werkt niet via adapters USB-COM of het werkt, maar HEEL langzaam. Laten we zeggen dat de firmware van één microcontroller anderhalf uur meegaat.
  • Voor de eerste keer is het het beste om voedsel te nemen van het computerblok. Het is minder waarschijnlijk dat u iets verbrandt of een fout maakt
  • Controleer het diagram 3-4 keer! Omdat, afgaande op de opmerkingen, de meeste problemen te wijten zijn aan een scheve installatie.
  • Voordat u het programma in MK start U MOET DE PROGRAMMER UITSCHAKELEN en voer +5 volt aan op de RESET-ingang via een weerstand van 1..10 kOhm. Met de aangesloten programmeur werkt niets, want... hij drukt op RESET en laat het kristal niet starten.
  • Als UniProf MK niet detecteert, heeft u dat wellicht ook gedaan snelle computer. Om dit “nadeel” te compenseren, moet u dit inschakelen Selectievakje "Rem". Het verschijnt als u het uitschakelt EEPROM uitvinken EEPROM-gegevensweergavepaneel.
  • Als het selectievakje Remmen niet heeft geholpen, probeer het dan op een andere computer. Omdat hier wordt de COM-poort in een abnormale modus verwerkt, wat betekent dat het niet zo is dat uw COM-poort alles correct zal begrijpen.
  • In het slechtste geval, als al het andere niet lukt, probeer dan een 5-draads programmeur of een ander knipperend programma, zoals avrdude. Houd de draden zo kort mogelijk! 10-15 centimeter is het MAXIMUM!
  • Lees de reacties op het bericht. Veel van de stijlen daar waren al uitgezocht. Wellicht zit die van jou er tussen.

Toevoeging vanaf Buitenstaander:
1. Als er geen COM-poortconnector aan de achterkant van de computer zit, betekent dit niet 100% dat er geen dergelijke poort is moederbord in principe. Er zijn nog steeds connectoren op moederborden met 9 pinnen in twee rijen - voor meer details moet je de documentatie voor het moederbord raadplegen. Ik vond het op mijn ASUS P5K SE en gebruikte het met succes.

2. Ja, +5 en GND zijn niet geaard en een contact van de COM-poort namelijk externe voeding. De eenvoudigste manier om dit te verkrijgen is op uw computer: +5 bevindt zich in de rode draad op een van de voedingsconnectoren harde schijven. En GND bevindt zich op de behuizing van de computer zelf. Of op de zwarte draad van dezelfde connector.

3. Als iets niet werkt met UniProf, kun je avrdude proberen. Om dit te doen, moet je het volgende schrijven in avrdude.conf:

programmeur
id = "nikolaew";
desc = "seriële poort bonkt, reset=dtr sck=rts mosi=txd miso=cts";
type = Servisch;
opnieuw instellen = 4;
scck = 7;
mosi = 3;
miso = 8;
;

En voer vervolgens avrdude uit met de volgende parameters:

avrdude -n -c nikolaew -P com1 -p m16

Als alles in orde is, zegt het programma:
avrdude: AVR-apparaat geïnitialiseerd en klaar om instructies te accepteren

Aanvulling van Riko
Experimenteel is gebleken dat dit het geval is juiste werking dit programmeur De MK-voedingsspanning moet minimaal 5 volt zijn(maar niet hoger dan 5,5!!!). Dat wil zeggen, als de MK op drie is aangesloten AA-batterijen, dan ben je afgebroken, aangezien er 4,5 volt staat! Schakel het in vanaf uw computer!!!

Toevoeging van SLY_DEr
Werkte niet. Ik veranderde de weerstanden van 3k (ze stonden niet op 1k) naar 460 ohm - het werkte, maar met fouten.
Ik besloot, puur omwille van de sport, te minderen com-poortsnelheid in apparaatbeheer en oh wonder, alles werkte zoals het zou moeten. Ik heb de poortsnelheid verlaagd van 9600k naar 4800k en ook de ontvangst- en verzendbuffer (ibid.) verlaagd naar waarden van respectievelijk 4 en 6.

Als er iets onduidelijk is, aarzel dan niet om het mij te vragen in de reacties.

ZY
Als het helemaal niet lukt, ondersteunt uw moederbord een dergelijke niet-standaard afhandeling misschien niet COM-poort en is het de moeite waard om andere programmeurs te proberen? Bijvoorbeeld, of. Hoewel ze ingewikkelder zijn, werken ze correcter, zonder vervormingen.

Dit artikel - gedetailleerde instructies hoe u een AVR-microcontroller programmeert met behulp van een LPT-programmeur en het UniProf-programma.

Lees het zeker eerst door, er zal veel duidelijker worden.
Download het programma UniProf.
- Programmeur voor AVR. We kijken naar avr.nikolaew.org

Klik op “OK” (de volgende keer hoeft u het niet te installeren – het programma onthoudt de instellingen). Dat is alles - de programmeur is "geregistreerd".

2 We sluiten de programmeur aan op de LPT-poort.

3 We verbinden de programmeur met het microcontrollerbord en leveren stroom aan de microcontroller.

4 Start UniProf (als dit nog niet actief is), selecteer de LPT-poort in het veld. Het zou in het blauw moeten verschijnen. Om de betrouwbaarheid van de verbinding te controleren, prikt u meerdere keren in . Als dit op enig moment verschijnt, is de verbinding onbetrouwbaar: vink aan en controleer opnieuw.

5 Klik op de downloadknop en selecteer degene die u nodig hebt. Cijfers verschijnen in het venster - ons programma.


P.S. Moet u naast Flash ook EEPROM flashen?
Het is eenvoudig! Controleer eerst het EEPROM-vakje - het EEPROM-venster verschijnt (hiervoor moet het "rem"-vakje zijn aangevinkt!). Open vervolgens het HEX-bestand. Het programma zal automatisch het EEP-bestand vinden en laden (zowel PROGRAM- als EEPROM-vensters worden gevuld met gegevens). Als Uniprof zelf het EEP-bestand niet heeft gedefinieerd, wordt een dialoogvenster voor bestandsselectie geopend. Vervolgens gaan we te werk zoals hierboven beschreven. Wanneer u op de “Prog”-knop drukt, worden zowel Flash als EEPROM geprogrammeerd. Dat is het!

(20.158 keer bezocht, 6 bezoeken vandaag)

Sectie: Tags: ,

Berichtnavigatie

027-UniProf-programmering AVR via LPT-poort.: 47 reacties

  1. Alexander Sjabazov

    Om de een of andere reden werkte het niet met de SN74HC244N-microschakeling, maar wel met 5 draden.
    Schrijft “MK heeft niet gereageerd...”. Alleen de knop "Lezen" werkte. En het duurde heel lang.
    Toegegeven, mijn debugboard is ATmega8.
    Bij beide programmeurs verloopt alles soepel op CodeVisionAVR en
    avrdude 5.8.

    Ik herhaal dat het werkt met 5 draden.


  2. GetChiper Geplaatst door

    Heb je geprobeerd het vakje 'Rem' aan te vinken?
    U hoeft niet gebonden te zijn aan UniProf. Het programma heeft bepaalde nadelen. Het belangrijkste voordeel is dat je er gemakkelijk mee aan de slag kunt, zelfs als je nog nooit met controllers hebt geflasht. Het is onvermijdelijk dat je professioneel groeit - als je van programmeur verandert, zullen de programma's veranderen.
    Avrdude - heel erg goed alternatief- gebruik het!

  3. Alexander Sjabazov

    “027-UniProf – AVR programmeren via LPT-poort” lees ik aandachtig,
    Ik heb het selectievakje 'Rem' aangevinkt.
    Ik heb avrdude 5.8 gelijktijdig met UniProf en PonyProg v207c geprobeerd.
    De opdrachtregel is ongebruikelijk voor mij, hoewel ik mijn allereerste LED aanstak met avrdude op Linux-e RHEL 4 AS.

  4. eg

    aha, met een buffer werkt het niet, blijkbaar omdat Uniprof niet bevriend is met STK, waarvoor pin 3-11 en 2-12 op de LPT-connector zijn aangesloten.
    Maar ponyprog heeft een automatiseringsbestand - iets geweldigs als je niet wilt nadenken over welke zekeringen je waar moet plaatsen en ze snel moet flashen.


  5. GetChiper Geplaatst door

    Nou, dat is nog een pluspunt voor Uniprof. Maar als ik de auteur van het programma was, zou ik werken aan de immuniteit tegen ruis. Hoewel, als de snelheid niet kritisch is, de "rem" -modus alle problemen oplost.

  6. ankar

    Maar ik vind het gewoon leuk omdat je geen kristal hoeft te selecteren. Als je het niet ziet, zoek dan naar een stijl. Je schrijft het op in ponka en beseft dan pas dat je je tijd hebt verspild. Nee, als je met een heleboel processors moet werken, dan neem je er natuurlijk sneller een. En als er 1 of 5 stuks zijn, dan is Unka (dankzij Nikolaev) voor mij precies goed. Ik heb overigens nog nooit een “rem” op mijn Athlone XP3 2.2 giga gemonteerd. De LPT-kabel is 1,5 meter lang. Zonder toeters en bellen.

  7. Nikolaj

    Ik heb ATmegu8 met succes via LPT geflashed, maar ik kan het geen tweede keer flashen, het programma zegt: "MK reageerde niet." Vertel me alstublieft wat er moet gebeuren om het een tweede keer te flashen! Ik heb de resetknop op het bord niet ingevoerd.


  8. GetChiper Geplaatst door

    Heb je zekeringen genaaid?

  9. Nikolaj

    Ik heb de lonten genaaid volgens de instructies. Overal drukte ik op Lezen en vervolgens op Schrijven. Ik heb de selectievakjes zelf niet gewijzigd. De controller werkt, de LED knippert volgens de gestikte hex, maar het programma vindt hem niet.

  10. Nikolaj

    Probleem opgelost! Zekeringen zijn prima. Het probleem is solderen van slechte kwaliteit, de MOSI op het bord is losgeraakt. Goed en langzaam solderen 🙂 !!!


  11. GetChiper Geplaatst door

    Luister naar Nikolai - hij zegt wat hij denkt! 🙂

  12. NikAndrew

    En wanneer schrijf je fiyuza’s voor met een vinkje van 0 of 1?

  13. NikAndrew

    alles bedacht 0 geen vinkje, 1 vinkje)

  14. zhenya1995

    Hallo, ik heb een 5-draads programmeur, ik heb ook geen standaard LPT-poort, ik heb deze voor mijn computer gekocht en deze poort heeft een ander adres (C880). adres of een andere manier om het te programmeren?


  15. GetChiper Geplaatst door

    Ziet Windows het niet?

  16. ankar
  17. Greider

    En het programma aan het einde van de firmware zou een soort bevestiging moeten geven, waarin staat dat alles succesvol was?
    En is het nodig om zekeringen te laten knipperen als hun standaardwaarden voldoende zijn?


  18. GetChiper Geplaatst door