Atmega 328p ‘in-circuit’ programmeren

De verschillende Arduino varianten zijn erg geschikt voor het ontwikkelen van prototypes. Dat werkt ook goed. Maar als je een ‘echte’ print wilt maken met daarop een Atmega dan wil je die ook kunnen programmeren. Dat kan op allerlei manieren. Bijv. via een ISP-programmer zoals deze. Of ‘in-circuit’ waarbij de processor op de print kan blijven zitten omdat de seriële poort én de reset-pin beschikbaar zijn gemaakt in de vorm van een pinheader op de print.

Dit artikel beschrijft hoe het ‘in-circuit’ programmeren werkt.

Benodigdheden

a) USB <> Serieel-converter

Een belangrijk onderdeel hierbij is een USB <> Serieel-converter. Zelf gebruik ik deze, makkelijk te vinden met de zoekterm “FTDI serial to usb“:

USB <> Serieel converter

Als je deze op je computer aansluit, zal Windows automatisch de juiste driver installeren. In de Arduino IDE vind je hem vervolgens terug als Com-poort.

b) Atmega 328p + periferie

Hoewel dit verhaal ook geldt voor allerlei andere type processoren, ga ik hier uit van de Atmega 328p.

Atmega 328p

Deze moet voorzien zijn van:

  • Voeding (5V)
  • Een 16MHz kristal
  • Aansluitingen voor de pinnen GND, Tx, Rx en Reset.
  • De (Arduino) bootloader moet geïnstalleerd zijn.
Atmega 328p + minimaal benodigde periferie

@Bootloader: deze zorgt ervoor dat je de processor via de seriële poort (Tx/Rx) kunt programmeren. Een klein nadeel van de bootloader is dat deze ervoor zorgt dat je eigen programma pas een seconde nadat de processor wordt gestart of geReset, begint te lopen. De bootloader wacht in die seconde namelijk op programmeersignalen op de seriële poort. Als die verschijnen gaat hij zorgen dat het nieuwe programma ge-upload wordt en zo niet, dan geeft hij de besturing over aan het ingeladen programma.

Koppelen

De USB-Serieel-converter en de Atmega worden als volgt aan elkaar gekoppeld:

Atmega gekoppeld aan USB-Serieel-converter

Links is de aansluiting op de Atmega processor getekend, rechts de USB-Serieel-converter.

De Tx van de één is gekoppeld aan de Rx van de ander. En andersom.

De Reset-pin van de processor is met een 220nF condensator gekoppeld aan de DTR-pin van de converter. De condensator zorgt ervoor dat de Reset-pin alleen even kort laag (=actief) wordt op de neergaande flank van het DTR-signaal.

Programmeren

Het programmeren van de Atmega is nu eenvoudig. De IDE moet goed ingesteld worden en daarna werkt alles zoals we gewend zijn: de sketch kan ge-upload worden via de standaard button, menu-item of Ctrl-U.

De IDE moet als volgt ingesteld worden:

Instelling IDE

Merk op dat de ‘Arduino UNO’ ingesteld moet worden. Dat is omdat de Uno een Atmega 328p bevat.

In de praktijk

En hier nog een foto van het hele handeltje in bedrijf:

In-circuit programming in de praktijk

Extra: seriële poort

Met dezelfde configuratie kun je ook de data die je programma naar de seriële poort stuurt, ontvangen met de PC. Hiervoor zijn slechts twee draden nodig: GND en Tx -> Rx (processor -> converter). Dus de blauwe en de gele lijn in bovenstaand schema.

Leave a Reply

Your email address will not be published. Required fields are marked *