Inhoudsopgave:

De ATTiny85, ATTiny84 en ATMega328P programmeren: Arduino als ISP: 9 stappen (met afbeeldingen)
De ATTiny85, ATTiny84 en ATMega328P programmeren: Arduino als ISP: 9 stappen (met afbeeldingen)

Video: De ATTiny85, ATTiny84 en ATMega328P programmeren: Arduino als ISP: 9 stappen (met afbeeldingen)

Video: De ATTiny85, ATTiny84 en ATMega328P programmeren: Arduino als ISP: 9 stappen (met afbeeldingen)
Video: Atmel AVR AtTiny13 - Kurze Einführung zu den Chips und den Möglichkeiten 2024, Juli-
Anonim
De ATTiny85, ATTiny84 en ATMega328P programmeren: Arduino als ISP
De ATTiny85, ATTiny84 en ATMega328P programmeren: Arduino als ISP
De ATTiny85, ATTiny84 en ATMega328P programmeren: Arduino als ISP
De ATTiny85, ATTiny84 en ATMega328P programmeren: Arduino als ISP

Voorwoord

Ik heb onlangs een paar op ESP8266 gebaseerde IoT-projecten ontwikkeld en ontdekte dat de kernprocessor moeite had om alle taken uit te voeren die ik nodig had om te beheren, dus besloot ik enkele van de minder belangrijke activiteiten te distribueren naar een andere microcontroller(s) in op deze manier wordt de ESP8266 vrijgemaakt om door te gaan met zijn taak als IoT-apparaat.

Aangezien ik mijn project voor een zo breed mogelijk publiek wilde publiceren, heb ik ervoor gekozen om de Arduino IDE te gebruiken als het ontwikkelingsplatform bij uitstek, omdat het zo'n breed ondersteunde community heeft.

Ontwerpbeperkingen

Om te voorzien in een redelijke spreiding van doelapparaten die de selectie van een geschikte microcontroller voor de betreffende toepassing mogelijk maken, heb ik gekozen voor de volgende Atmel-onderdelen; ATMega328P, ATTiny84 en ATTiny85. Om de complexiteit van de benodigde programmeur te beperken heb ik de keuze van de klok beperkt tot intern voor alle apparaten en 16MHz extern voor alleen de ATMega328P en ATTiny84.

Wat volgt is een verzameling opmerkingen over programmeren met de Arduino en een beschrijving van hoe ik een eenvoudige op Arduino Uno gebaseerde programmer voor deze apparaten heb samengesteld (foto's hierboven).

Welke onderdelen heb ik nodig?

Om de programmer te bouwen heb je de volgende onderdelen nodig:

  1. 1 uit Arduino Uno
  2. 2 28-pins Zero Insertion Force (ZIF) DIP-sockets (voor ATMega328P, ATTiny85, ATTiny84)
  3. 1 uit Arduino prototype schild (ik heb de mijne hier;
  4. 2 van 5MM LED's
  5. 2 off 1K weerstanden
  6. 1 off 10K weerstand
  7. 4 off 22pF keramische condensatoren
  8. 2 off 16MHz-kristallen
  9. 3 off 0.1uF keramische condensatoren
  10. 1 off 47uF elektrolytische condensator
  11. 1 off 10uF elektrolytische condensator
  12. Verschillende lengtes draadwikkeldraad.

Welke software heb ik nodig?

Arduino IDE 1.6.9

Welke vaardigheden heb ik nodig?

  1. Kennis van Arduino IDE
  2. Enige kennis van elektronica en solderen
  3. Veel handvaardigheid
  4. Veel geduld en een goed gezichtsvermogen

Behandelde onderwerpen

  1. Algemene inleiding tot het programmeren van Atmel-microcontrollers
  2. ISP of Bootloader: het is allemaal een beetje verwarrend
  3. Circuitoverzicht
  4. Uw programmeur instellen
  5. Uw Arduino ISP-programmeur gebruiken
  6. Code ontwikkelen op uw doelsysteem
  7. Gotchas
  8. Conclusie
  9. Gebruikte referenties

Vrijwaring

Zoals altijd gebruikt u deze instructies op eigen risico en worden ze niet ondersteund

Stap 1: Algemene inleiding over het programmeren van Atmel-microcontrollers

Algemene inleiding over het programmeren van Atmel-microcontrollers
Algemene inleiding over het programmeren van Atmel-microcontrollers
Algemene inleiding over het programmeren van Atmel-microcontrollers
Algemene inleiding over het programmeren van Atmel-microcontrollers
Algemene inleiding over het programmeren van Atmel-microcontrollers
Algemene inleiding over het programmeren van Atmel-microcontrollers

Er zijn twee methoden beschikbaar voor het programmeren van Atmel-microcontrollers;

  1. Bij Systeemprogrammering (ISP),
  2. Zelfprogrammering (via een bootloader).

De eerste methode (1) programmeert de microcontroller direct via de SPI-interface nadat het apparaat eerst is gereset. Tenzij anders aangegeven, wordt een gecompileerd uitvoerbaar bronprogramma stapsgewijs naar het apparaat geschreven in het codegeheugen van waaruit het bij het opstarten wordt uitgevoerd. Er zijn veel ISP-apparaten die Atmel-apparaten kunnen programmeren, waarvan er enkele (foto 1); AVRISPmkII, Atmel-ICE, Olimex AVR-ISP-MK2, Olimex AVR-ISP500. Afbeelding 2 laat zien hoe het ISP-apparaat verbinding maakt met de ATMega328P (vreemd gemarkeerd ICSP) op het Arduino Uno R3-bord (foto 3 geeft de ISP-pin uit). Het is ook mogelijk om via de SPI interface een Atmel microcontroller te programmeren met een Arduino Uno als ISP (foto 4), hier wordt de Uno gebruikt om een ATMega328P te programmeren.

De laatste methode (2) maakt gebruik van een kleine code-stub die bekend staat als een 'bootloader' die permanent in het uitvoerbare codegeheugen aanwezig is (meestal vergrendeld om onbedoeld overschrijven van foto 5 te voorkomen). Deze code wordt als eerste uitgevoerd bij het opstarten of het resetten van het apparaat en stelt de microcontroller in staat zichzelf opnieuw te programmeren met nieuwe code die via een van zijn interfaces is ontvangen van een externe bron. De bootloader-methode wordt gebruikt door de Arduino IDE om Arduino's opnieuw te programmeren die zijn toegewezen als een USB-communicatiepoort op de pc (of MAC, Linux-box enz., foto 6) en in het geval van de Arduino communiceert Uno met het Atmel-apparaat via zijn seriële interface op IC-pinnen 2 en 3 van de ATMega328P. Ook de Arduino Uno (met de ATMega328P micrcontroller verwijderd) kan worden gebruikt om een ATMega328P te programmeren via de bootloader-methode die effectief werkt als een USB-naar-serieel adapterapparaat (foto 7).

Wat is een USB-naar-serieel-adapter?

Een USB-naar-serieel-adapter is een stuk hardware dat wordt aangesloten op de USB-poort van uw pc en eruitziet als een seriële com-poort (een erfenis uit vroeger tijden toen computers een seriële communicatiestandaard gebruikten die bekend staat als EIA-232, V24 of RS232), waarmee u seriële gegevens verzenden en ontvangen op dezelfde elektrische niveaus van de microcontroller. Wanneer u Tools -> Port -> COMx selecteert in de Arduino IDE, verbindt u uw pc met uw Arduino.

Een apparaat als dit wordt soms een FTDI genoemd (foto 8, wat eigenlijk een merknaam is) of CH340G enz. USB naar serieel op de Arduino uno wordt bereikt via een ATMega16U2-MU(R) IC ZU4 zoals in het Arduino-schema onderstaand.

Voor de duidelijkheid identificeert afbeelding 9 de twee Atmel-apparaten en hun respectievelijke ISP-connectoren op de Arduino Uno R3.

Opmerking 1: Als u ervoor kiest om de FTDI-apparaatroute te volgen, zorg er dan voor dat u bij een gerenommeerde verkoper koopt, want er zijn veel goedkope namaakapparaten op de markt die het niet hebben gedaan na het toepassen van een Windows-update.

Aanbevolen: