Sommario:

Programmazione di ATTiny85, ATTiny84 e ATMega328P: Arduino come ISP: 9 passaggi (con immagini)
Programmazione di ATTiny85, ATTiny84 e ATMega328P: Arduino come ISP: 9 passaggi (con immagini)

Video: Programmazione di ATTiny85, ATTiny84 e ATMega328P: Arduino come ISP: 9 passaggi (con immagini)

Video: Programmazione di ATTiny85, ATTiny84 e ATMega328P: Arduino come ISP: 9 passaggi (con immagini)
Video: Atmel AVR AtTiny13 - Kurze Einführung zu den Chips und den Möglichkeiten 2024, Dicembre
Anonim
Programmazione di ATTiny85, ATTiny84 e ATMega328P: Arduino come ISP
Programmazione di ATTiny85, ATTiny84 e ATMega328P: Arduino come ISP
Programmazione di ATTiny85, ATTiny84 e ATMega328P: Arduino come ISP
Programmazione di ATTiny85, ATTiny84 e ATMega328P: Arduino come ISP

Prefazione

Di recente ho sviluppato alcuni progetti IoT basati su ESP8266 e ho scoperto che il core processor faticava a svolgere tutte le attività di cui avevo bisogno per gestire, quindi ho deciso di distribuire alcune delle attività meno importanti a un microcontrollore diverso in in questo modo, l'ESP8266 può andare avanti con il suo lavoro di dispositivo IoT.

Dato che volevo pubblicare il mio progetto a un pubblico il più ampio possibile, ho scelto di utilizzare l'IDE Arduino come piattaforma di sviluppo preferita poiché ha una comunità così ampiamente supportata.

Vincoli di progettazione

Al fine di fornire una ragionevole diffusione di dispositivi target che consentano la selezione di un microcontrollore appropriato per l'applicazione in questione, ho optato per le seguenti parti Atmel; ATMega328P, ATTiny84 e ATTiny85. Per limitare la complessità del programmatore necessario ho vincolato la scelta del clock a interno per tutti i dispositivi e a 16MHz esterno solo per ATMega328P e ATTiny84.

Quella che segue è una raccolta di note sulla programmazione con Arduino e una descrizione di come ho messo insieme un semplice programmatore basato su Arduino Uno per questi dispositivi (foto sopra).

Di quali parti ho bisogno?

Per costruire il programmatore avrai bisogno delle seguenti parti

  1. 1 sconto su Arduino Uno
  2. 2 prese DIP a 28 pin Zero Insertion Force (ZIF) (per contenere ATMega328P, ATTiny85, ATTiny84)
  3. 1 off Arduino prototipo shield (ho preso il mio qui;
  4. 2 LED 5MM spenti
  5. 2 resistenze da 1K
  6. 1 resistore da 10K
  7. 4 condensatori ceramici da 22 pF
  8. 2 cristalli da 16 MHz
  9. 3 condensatori ceramici da 0,1 uF
  10. 1 condensatore elettrolitico da 47 uF
  11. 1 condensatore elettrolitico da 10uF
  12. Filo di avvolgimento del filo di varie lunghezze.

Di che software ho bisogno?

Arduino IDE 1.6.9

Di quali competenze ho bisogno?

  1. Conoscenza dell'IDE Arduino
  2. Qualche conoscenza di elettronica e come saldare
  3. Una grande manualità
  4. Un carico di pazienza e buona vista

Argomenti trattati

  1. Introduzione generale alla programmazione dei microcontrollori Atmel
  2. ISP o Bootloader: è tutto un po' confuso
  3. Panoramica del circuito
  4. Configurare il programmatore
  5. Utilizzo del programmatore ISP Arduino
  6. Sviluppo del codice sul tuo sistema di destinazione
  7. Trabocchetti
  8. Conclusione
  9. Riferimenti utilizzati

Disclaimer

Come sempre, utilizzi queste istruzioni a tuo rischio e pericolo e non sono supportate

Fase 1: Introduzione generale alla programmazione dei microcontrollori Atmel

Introduzione generale sulla programmazione dei microcontrollori Atmel
Introduzione generale sulla programmazione dei microcontrollori Atmel
Introduzione generale alla programmazione dei microcontrollori Atmel
Introduzione generale alla programmazione dei microcontrollori Atmel
Introduzione generale alla programmazione dei microcontrollori Atmel
Introduzione generale alla programmazione dei microcontrollori Atmel

Sono disponibili due metodi per la programmazione dei microcontrollori Atmel;

  1. In Programmazione di sistema (ISP),
  2. Autoprogrammazione (tramite un bootloader).

Il primo metodo (1) programma direttamente il microcontrollore tramite l'interfaccia SPI dopo aver prima ripristinato il dispositivo. Se non diversamente indicato, un programma sorgente eseguibile compilato viene scritto sul dispositivo in modo incrementale nella memoria del codice da dove viene eseguito all'avvio. Esistono molti dispositivi ISP in grado di programmare i dispositivi Atmel, alcuni dei quali sono (foto 1); AVRISPmkII, Atmel-ICE, Olimex AVR-ISP-MK2, Olimex AVR-ISP500. La figura 2 mostra come il dispositivo ISP si connette all'ATMega328P (contrassegnato in modo strano ICSP) sulla scheda Arduino Uno R3 (la figura 3 mostra il pin out dell'ISP). È anche possibile programmare un microcontrollore Atmel tramite la sua interfaccia SPI utilizzando un Arduino Uno come ISP (figura 4), qui Uno viene utilizzato per programmare un ATMega328P.

Quest'ultimo metodo (2) utilizza un piccolo stub di codice noto come 'bootloader' residente permanentemente nella memoria del codice eseguibile (di solito bloccato per evitare sovrascritture accidentali fig 5). Questo codice viene eseguito per prima cosa all'accensione o al reset del dispositivo e consente al microcontrollore di riprogrammarsi con il nuovo codice ricevuto tramite una delle sue interfacce da una sorgente esterna a se stesso. Il metodo bootloader viene utilizzato dall'IDE Arduino per riprogrammare gli Arduino mappati come porta di comunicazione USB sul PC (o MAC, Linux box ecc., Fig. 6) e nel caso di Arduino Uno comunica con il dispositivo Atmel tramite il suo interfaccia seriale sui Pin IC 2 e 3 di ATMega328P. Anche l'Arduino Uno (con il microcontrollore ATMega328P rimosso) può essere utilizzato per programmare un ATMega328P tramite il metodo bootloader agendo efficacemente come un dispositivo adattatore da USB a seriale (foto 7).

Che cos'è un adattatore da USB a seriale?

Un adattatore da USB a seriale è un componente hardware che si collega alla porta USB del PC e si presenta come una porta com seriale (un retaggio dei tempi precedenti quando i computer utilizzavano uno standard di comunicazione seriale noto come EIA-232, V24 o RS232) che consente di inviare e ricevere dati seriali agli stessi livelli elettrici del microcontrollore. Quando selezioni Strumenti -> Porta -> COMx dall'IDE Arduino, stai collegando/interfacendo il tuo PC con Arduino.

Un dispositivo come questo è a volte indicato come FTDI (foto 8, che in realtà è un marchio) o CH340G ecc. Da USB a seriale su Arduino uno si ottiene tramite un IC ATMega16U2-MU(R) ZU4 come nello schema Arduino sotto.

Per chiarezza l'immagine 9 identifica i due dispositivi Atmel e i rispettivi connettori ISP sull'Arduino Uno R3.

Nota 1: se scegli di seguire il percorso del dispositivo FTDI, assicurati di acquistare da un venditore affidabile poiché sul mercato sono stati trovati molti dispositivi contraffatti economici che non hanno funzionato dopo l'applicazione di un aggiornamento di Windows.

Consigliato: