Programmare un ATMega328P e utilizzarlo senza scheda Arduino


13

Mi piacerebbe usare un ATMega328P per il mio progetto, spero di farlo senza la scheda Arduino.

So che con l'IDE Arduino e una scheda Arduino posso programmare il microcontrollore. Tuttavia, sarebbe possibile dopo aver programmato ed eseguito il debug del programma con la scheda Arduino IDE + Arduino, per rimuovere il microcontrollore dalla scheda Arduino e utilizzare ATMega328P separatamente, senza la scheda?

In caso affermativo, quali ulteriori configurazioni dovrei fare ATMega328P per funzionare correttamente sulla breadboard?


Usa ATMEGA328 P-PU con il bootloader di Arduino UNO .... lo puoi trovare nei negozi di hobby e online e cose del genere
Arthur

L'uso del chip nudo è assolutamente fattibile e nessun problema.
Dannyf,

Questa non è la stessa domanda della tua, ma potresti ottenere alcune informazioni da essa. arduino.stackexchange.com/questions/32970/…
Codice Gorilla

Puoi seguire le risposte a questa domanda
Rashedul Islam Emon,

Risposte:


7

È possibile rimuovere un ATMEGA da un Arduino e utilizzarlo nella propria scheda, tuttavia se utilizzato su una tipica scheda Arduino il chip verrà fuso per un cristallo esterno come sorgente di clock, anziché l'orologio interno (più semplice ma meno preciso).

Non è possibile modificare la sorgente di clock tramite ISP a meno che la sorgente di clock che il chip si aspetta attualmente non sia operativa, quindi se si desidera modificare la selezione di clock, è necessario farlo prima di rimuovere il chip da Arduino.

Tuttavia, è anche possibile fornire un cristallo di clock e i suoi due condensatori (o un risonatore sostitutivo che spesso ha questo incorporato) sulla scheda esterna.

In genere i chip (anche quelli pre-flashati con un bootloader per comodità) sono più economici delle schede, quindi non è chiaro il motivo per cui si vorrebbe spostare lo stesso chip dall'Arduino invece di usarne un altro. Avrai comunque bisogno di un adattatore seriale di livello logico USB e, una volta ottenuto, potrai effettuare lo sviluppo sul chip nudo sulla tua scheda, anche se esegui dei test iniziali su Arduino. Se non disponi del convertitore USB, puoi estrarre il chip da una scheda Arduino ed eseguire i fili dai suoi D1 e D0, oppure tenere il chip di bordo in reset per consentire di prendere in prestito quelle linee seriali senza interferenze.


1
La mia idea è quella di utilizzare solo un microcontrollore senza scheda. Dato che è facile programmare un Arduino, ho pensato di poter scegliere un ATMega. Quindi, ho un Arduino Uno, la mia idea è quella di acquistare un solo ATMega e programmarlo ed eseguirne il debug usando la scheda Uno. Tuttavia, ho appena riassunto che se separassi ATMega da Arduino, avrei bisogno di aggiungere componenti (cristallo, tirare su le resistenze ...). Puoi spiegare cosa intendi nell'ultimo paragrafo del tuo post? Esiste un modo semplice per programmare direttamente un ATMega (o qualsiasi altro microcontrollore) senza utilizzare l'IDE arduino? Grazie.
George,

Mentre puoi saltare l'IDE, usarlo o no è essenzialmente irrilevante per la complessità del tuo circuito, poiché puoi usare l'IDE o meno con un circuito che ha o non ha un clock esterno e usa un USB- seriale sulla scheda target, su un cavo o programmando il tuo schizzo con un programmatore ISP. Estrarre un chip da una scheda non ti dà nulla rispetto al semplice acquisto di un chip con un bootloader o senza e il caricamento di uno da solo, utilizzando potenzialmente il tuo Arduino intatto come programmatore ISP o utilizzando ISP per caricare direttamente il tuo schizzo senza un bootloader.
Chris Stratton,

7

Sì, è possibile utilizzare ATMega328Psenza scheda arduino. Uso sempre l'IC senza Arduino. Ci sono due modi per farlo.

  1. È possibile utilizzare la scheda Arduino con l'IC. Programmare l'IC, quindi estrarlo e utilizzarlo nel circuito. Dovrai usare 16MHZ Oscillatorcon i condensatori.
  2. Se non hai la scheda arduino, puoi usare altri programmatori come USBaspprogrammare il tuo Atmega328p. In questo caso, non utilizzare il pulsante di caricamento diretto, ma utilizzare il caricamento utilizzando le opzioni del programmatore dal menu File. Non dimenticare di selezionare la scheda come Arduino Pro or Pro Mini (5v, 16mhz) With ATmega328e il programmatore come USBasp.

NOTA : fare riferimento a Mappatura dei pin Atmega328p e programmare il dispositivo di conseguenza. Godere!


2

Cerca "Build an Arduino" : troverai tantissimi articoli pratici su come farlo. Dovresti essere in grado di saldare le connessioni su una scheda a circuito stampato (e nemmeno se volessi usare una breadboard senza saldatura), ma è davvero semplice. Puoi anche costruirlo prima e programmare l'MCU sul PCB usando un cavo FTDI. Uso una scheda Arduino e una breadboard senza saldatura per sperimentare parti non familiari, ma di solito vado immediatamente su una scheda costruita a mano una volta che avrò familiarità con tutti i componenti che userò.

La prototipazione con la scheda Arduino ti consente di mettere insieme un sacco di parti e far funzionare qualcosa velocemente, e se l'Arduino è più capace del tuo obiettivo finale - f / ex, un Mega 2650 - puoi temporaneamente ignorare i vincoli di memoria e I / O del dispositivo più piccolo.


0

È abbastanza facile usare un chip Arduino autonomo. L'unica cosa delicata del chip utilizzato per le schede ufficiali è che sono fuse per utilizzare l'oscillatore esterno più veloce (e più preciso) montato sulla scheda. Questo vale anche quando si acquistano i chip sciolti, poiché la maggior parte viene rivenduta con l'intenzione di essere installata in una scheda Arduino per sostituire quella bruciata, ad eccezione forse di quelli di Digikey.

Avvertenze: Arduino è progettato come una scheda di prototipazione e poche cose fanno meglio di quanto non faccia in questo compito. Potresti voler lasciare il chip sulla scheda Arduino fino a quando non hai finito di progettare e testare il tuo circuito. Solo allora lo colleghi direttamente. Può essere utilizzato sul posto se si dispone di un circuito di clock, oppure è possibile cambiare i fusibili (vedere più avanti) e riprogrammare Arduino con un adattatore ISP e una velocità di clock di 8mhz (PlatformIO consente di farlo ( e consente di importazione di uno sketch di Arduino) - controlla la pagina dei loro documenti per il plugin Atmel AVR, ma puoi anche cercare una serie di guide su come aggiungere un file board ad Arduino per dirgli di usare l'opzione 8mhz per un chip nudo)

Se rimuovi il chip per utilizzarlo in un circuito diverso, è necessario aggiungere quel circuito di clock o far cambiare i suoi fusibili (ci penserò tra un minuto). Sarà anche difficile programmare, per una serie di motivi, quindi ti consigliamo di acquistare un po 'di hardware abbastanza economico:

Programmazione di un chip autonomo: la CPU di Arduino non è progettata in modo nativo per comunicare con un computer. Hai bisogno di un intermediario. Su Uno, questo viene fatto tramite un secondo chip Atmel con funzionalità USB e un bootloader sul chip principale. Quello che fa è che usa l'UART per il caricamento del programma mentre il chip USB converte i messaggi del PC in segnali UART. Dal momento che il bootloader è un po 'una seccatura quando il chip è da solo (poiché UART è esigente e l'installazione lo imposta per utilizzare un clock esterno come risultato), ti consigliamo di acquistare un programmatore ISP per Arduino (o segui lo schizzo e le istruzioni di Arduino-come-ISP per crearne uno tuo, che richiede un Arduino con chip presente, quindi avrai bisogno di un secondo per essere programmato).

Questi possono programmare ATMega 328 direttamente su SPI, senza un bootloader (ci sono molte istruzioni su Internet; per esempio, cerca "programma ATMega 328P nudo con USBAsp"). Ciò semplifica notevolmente la modifica e il debug del programma al di fuori del pop-out del chip e del ritorno nella scheda Arduino originale. È necessario anche uno per modificare le impostazioni dell'orologio se non si desidera utilizzare un cristallo esterno.

Se si desidera eseguire il debug del chip, è utile acquistare anche un adattatore FTDI o un altro convertitore da USB a UART. Si noti che senza la parte del circuito di reset della scheda (o ancora, aggiungendo la propria), ciò non consente comunque di programmare ATMega anche con il bootloader. Per questo, collegare i pin di terra, RX e TX all'adattatore. È possibile o meno voler collegare la linea VCC, ma si consiglia di non farlo se ci sono molte cose collegate al chip e / o ha il proprio alimentatore. Nota che RX e TX devono essere scambiati quando li colleghi; vale a dire, da RX a TX e da TX a RX: si desidera che il chip RX (riceva) quale sia l'adattatore TX (trasmissione) e viceversa.

Il circuito dell'orologio non è difficile da costruire, ma richiede alcuni componenti che potresti non avere. Quindi, per cambiare l'origine del clock , vai su http://www.engbedded.com/fusecalc/ e seleziona ATMega 328P. I valori predefiniti sono buoni, ma potresti voler abilitare EEPROM keep-on-erase e disabilitare l'orologio divide per 8 o regolare le impostazioni del brownout. Non toccare nient'altro (disabilitando reset o SPI o abilitando DebugWire si ottiene un "divertimento" che richiede un programmatore HV da risolvere). Al termine, incollare il comando fornito al comando AVRDude. Dovrai cambiare le opzioni -c (-p è già impostato su ATMega 328P, ma fallirà per i non-P 328 - non acquistarli), e forse aggiungere l'opzione -P (per Port). Non omettere l'opzione -u minuscola, altrimenti si rifiuterà di aggiornare i fusibili.

avrdude -p m328p -v -c usbasp -B 100 -u [add extras here: (-P <PORT>) <fuse set command here>]

Nota che se acquisti un USBASP (assicurati che abbia tre set di jumper!), Per quanto siano i miei programmatori preferiti, potrebbero non avere il firmware aggiornato che supporta l'opzione -B (di cui probabilmente avrai bisogno). Ciò significa che è necessario collegarlo a un Arduino tramite la porta di programmazione a sei pin, esattamente allo stesso modo in cui lo si utilizzerà per programmare il bootloader di Arduino, ma quindi utilizzare lo sketch Arduino-come-ISP per programmare il nuovo firmware al programmatore (cerca "aggiorna il firmware usbasp tramite arduino-as-isp")! Per riferimento, ciò significa di solito che il cavo è rivolto lontano dal corpo della scheda e probabilmente dovrai programmare lo schizzo primacollegamento del cavo. Abilitare anche il jumper power-from-programmer su USBASP (5V) e quello "autoprogrammazione". (vedi https://forum.arduino.cc/index.php?topic=560719.0 per l'ubicazione dei jumper di potenza e programma (JP2)).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.