Come diplomarsi da Arduino all'utilizzo diretto di un microcontrollore?


19

Ho lavorato su un progetto Arduino. Dopo che tutto funziona con Arduino, vorrei passare a una soluzione che NON utilizza Arduino. Cioè, vorrei usare un microcontrollore senza coinvolgere la scheda Arduino. Ciò consentirà una singola scheda, nessuna soluzione di schermatura.

So che ci sono metodi per creare il mio Arduino su una breadboard, ma non è proprio quello che sto cercando di fare.

Non sono davvero sicuro di come farlo.

A meno che non ci sia un'opzione migliore, mi sto orientando verso l'utilizzo dell'ATmega328, che viene utilizzato da Arduino. Comprendo che gli strumenti di sviluppo sono disponibili gratuitamente o almeno non molto costosi.

Ai fini di questa domanda, supponiamo di poter ottenere + 5 V sul mio circuito.

La mia prima domanda è come programmare l'MCU. Credo che ci siano due opzioni:

  1. Acquista un programmatore, programma l'MCU e quindi posiziona il chip nel mio circuito.
  2. Progetta il mio circuito in modo da includere il supporto per la programmazione in-circuit.

Suppongo che se vado con l'opzione # 1, è semplice come inserire un chip programmato nel mio circuito; Non ho bisogno di nient'altro. Ovviamente cambiare il software sarebbe scomodo.

Ma per l'opzione n. 2, non sono sicuro di cosa ho bisogno. Dal po 'di lettura che ho fatto, penso di aver bisogno di un cavo di programmazione e un connettore sulla mia scheda (che tipo?). Quindi immagino di collegare (correttamente) il connettore a determinati pin di ATmega.

Ad ogni modo, avrò bisogno dello studio Atmel.

In secondo luogo, oltre all'alimentatore, sull'Arduino c'è qualcosa di cui ho assolutamente bisogno? Suppongo che forse un interruttore di ripristino?


2
È possibile utilizzare un Arduino per programmare gli AVR. Personalmente mi piace usare gli strumenti da riga di comando e un makefile, piuttosto che un IDE.
jippie,

1
Questa domanda potrebbe essere più appropriata per Arduino Stack Exchange. arduino.stackexchange.com Ora è in beta pubblica
akellyirl,

4
Ma il mio obiettivo è un design senza arduino.
Rick,

"c'è qualcosa sull'arduino di cui ho assolutamente bisogno?" Penso che avrai bisogno dei pin UART (aka la porta seriale), è utile per il debug.
vvy

Atmel Studio non è assolutamente necessario. Programma i miei chip dalla riga di comando (e un editor di testo). Sebbene concesso per grandi progetti, lo studio Atmel renderà sicuramente più facile
Chris Laplante il

Risposte:


10

Benvenuti nel meraviglioso mondo di Atmel. Lascia che ti offra alcune risposte alle tue domande in base al mio hobby e alla mia esperienza professionale.

Non preoccuparti di nulla, ma di programmazione in-circuit. A meno che tu non sia un programmatore perfetto, rimuovere un chip ogni volta che vuoi programmarlo è un incubo. Consiglio AVRISPmkII come strumento di programmazione entry-level. Lo svantaggio è che non è supportato il debug dell'hardware. Un'alternativa è il drago ma non ne ho esperienza. Posso dire che JTAGICEmk3 è un ottimo strumento di debug capace.

Atmel Studio è ottimo per la programmazione. In realtà è il mio ambiente di sviluppo incorporato preferito. Puoi usare strumenti CLI come AVRDUDE e AVR-GCC, ma l'IDE se ne occupa.

IN SINTESI:

Acquista un AVRISP per la sola programmazione (più facile, plug & play) o un DRAGON (non posso offrire consigli).

Sulla scheda, porta i pin ICSP su un'intestazione a doppia fila da 0,100 "a 6 pin - i collegamenti sono descritti in questo foglio dati .

Gli interruttori di ripristino non sono necessari.


1
Ho avuto risultati eccellenti con un EvUSBasp.
Ignacio Vazquez-Abrams,

Dopo aver messo in evidenza i pin ICSP sulla mia scheda, devo dedicarli alla programmazione in-circuit o posso comunque usarli come pin GPIO in qualche modo?
Ricardo,

2
Puoi usarli come GPIO poiché condividono le funzioni con SPI. Il programmatore mette il chip in reset, quindi comunica con esso.
HL-SDK,

1
Serie di esercitazioni correlate sull'avvio della programmazione del microcontrollore . Usano l'AVRMega e passano attraverso il processo di cablaggio dell'ISP e il lussuoso codice C per far lampeggiare un LED.
MDMoore313,

1
@ HL-SDK ha ragione sul fatto che solo il pin RESET deve davvero essere dedicato a ICSP, ma è necessario prestare attenzione anche agli altri pin, vale a dire che probabilmente dovrebbero essere usati come pin di uscita anziché come pin di ingresso (quindi i segnali non essere disturbato da circuiti esterni in modalità ICSP) e tutto ciò che è collegato a loro dovrebbe essere progettato per non reagire negativamente a qualsiasi combinazione di segnali casuali che il traffico di programmazione invia loro.
microtherion

10

Non devi "laurearti" tutto in una volta. Ecco come mi sono convertito:

Per iniziare, ho continuato a utilizzare un Arduino ma ho convertito le chiamate nella libreria Arduino in letture e scritture del registro, una riga alla volta, per vedere se i miei programmi funzionavano ancora. In questo modo mi sono abituato a usare i registri e ho visto che non erano radicalmente discontinui con il modo di fare le cose di Arduino. Le funzioni di Arduino come digitalWrite () semplicemente manipolano i registri: sei libero di leggerli e scriverli direttamente nei tuoi schizzi.

Il mio prossimo passo è stato quello di mettere un ATTiny 85 su una breadboard e programmarlo con Arduino come ISP ( http://highlowtech.org/?p=1695 ). Se acquisti un alimentatore per breadboard e usi l'oscillatore interno di ATTiny, questo richiede un cablaggio ridicolmente piccolo. Ho usato l'IDE di Arduino per compilare ma ho continuato a usare i registri il più possibile.

Quindi, ho installato la toolchain gratuita della riga di comando di Crosspack e ho compilato un programma lampeggiante. Dopo alcune prove ed errori, sono riuscito a programmare ATTiny solo con avrdude, rimanendo completamente fuori dall'ecosistema Arudino.

Una volta che sei riuscito a battere le palpebre solo con gli strumenti da riga di comando, sei libero da Arduino. Esplora le varie periferiche e i loro registri e presto sarà totalmente naturale.

Dopo tutto questo, mi ritrovo spesso ad usare Arduino perché è più veloce. Ho scoperto che esaminare le descrizioni dei registri fa un po 'schifo; non ha senso farlo se non è necessario. È bello sapere come, però.


8

Sono d'accordo con il commento di HL-DSK sopra. Spenderei i soldi extra e otterrei un programmatore con funzionalità di debug. Uso JTAGICE3, circa $ 110 su digi-key.

Leggi sulla programmazione ISP qui . Ti mostrerà come far emergere le connessioni SPI. Le connessioni SPI sul chip saranno nel foglio dati ATmega. Cerca a pagina 2 i pin MISO / MOSI / SCK / RESET. Il programmatore deve essere in grado di controllare la linea di reset. Ricorda di usare un resistore pull-up sulla linea di reset in modo che il tuo chip funzionerà dopo che il programmatore viene disconnesso.

Procurati un'intestazione 2x3 qui . O creane uno tuo usando le intestazioni breakaway.


2
Secondo, riceverò un programmatore con supporto per il debug. All'inizio di questo mese sono stato gettato nel profondo di un progetto PIC32 senza precedenti esperienze di basso livello. Anche con qualcun altro che scrive la funzionalità di bit banging di livello più basso, non voglio nemmeno pensare a quanto più difficile capire dove fossero i miei problemi se tutto ciò che dovevo vedere all'interno fosse un singolo LED rosso / verde.
Dan Neely,

Questo, una volta che hai strumenti professionali, non si può tornare indietro.
Matt Young

7

La differenza tra un Arduino e un ATmega328 nudo è solo due cose. Arduino Bootloader e le librerie Arduino. Puoi codificare un Arduino con C o C ++ senza usare nessuna delle librerie. Puoi anche usare assembly. Il bootloader consente di caricare il nuovo codice tramite seriale senza passare attraverso la (leggermente) più complicata programmazione in-circuit-seriale (fondamentalmente SPI).

Puoi usare le librerie di programmazione standard e avr-gcc con quasi tutti gli ide. Contrariamente a quanto altri potrebbero dire, codificare un Arduino è fondamentalmente come codificare un microcontrollore nudo, con alcune comodità aggiuntive a scapito di alcune prestazioni.


4
Ma puoi anche usare il bootloader e le librerie di Arduino con un ATmega328 nudo.
Ignacio Vazquez-Abrams

@ IgnacioVazquez-Abrams che lo trasforma in un arduino a ossa nude, natch.
Passerby

5

Compro i chip Atmega328P pre-caricati e li programma in-circuit con un cavo FTDI e avrdude, esattamente come programmare Arduino. Mi piace l'IDE Eclipse ma puoi usare qualsiasi ambiente tu preferisca: Atmel Studio, Arduino IDE, emacs o scalzo sulla riga di comando.

Questa scheda è in costruzione nel punto in cui è sufficientemente completa per essere testata con un programma Hello, utilizzando il cavo per la programmazione, l'alimentazione e il terminale. Avrà ancora bisogno del suo alimentatore - nel mio caso LM2936 regolatore di tensione a corrente quiescente ultra-bassa e un connettore della batteria - e qualsiasi altro componente di bordo e connessioni esterne di cui il progetto avrà bisogno:

NotDuino

Dato che hai un Arduino, potresti risparmiare un po 'di soldi e usare chip non programmati, usando Arduino per installare il bootloader. Le belle etichette a spillo blu aiutano a mantenere basso il mio tasso di insensatezza! Uso un cristallo a 16MHz ma se riesci a correre con l'oscillatore interno il tuo conteggio delle parti diminuisce di 3 (il condensatore xtal e 2).


2

Per passare da Arduino dove viene fornito l'hardware e il software è un overlay in linguaggio C, vorrei fare alcuni suggerimenti. Vedo che le persone hanno pubblicato alcune risposte utili ma sono stato dove sei e farei cose un po 'diverse.

  1. Scegli un debugger. I debugger ti offrono la possibilità di programmare il microcontrollore e il debug che include l'elaborazione "passo per passo", "punti di interruzione" che ti consentono di mettere in pausa il programma su una determinata riga di codice per verificare che cosa il codice sta facendo. ISP (In-Circuit Programming) è un'interfaccia seriale, utilizza 3 pin che è buono ma non fornisce la piena funzionalità che un principiante vorrebbe. L' interfaccia JTAG utilizza 4 pin che offrono funzionalità sostanzialmente complete in termini di utilizzo di punti di interruzione e cose. Le persone di solito si orientano più verso l'ISP perché è "relativamente" più facile da configurare, ma se mi chiedi JTAG non è difficile da configurare, ma dipende anche dalle preferenze personali. E c'è il debug Wire interfaccia che vorrei saltare in questa discussione perché preferisci usare l'ISP piuttosto che il debug wire.
  2. Acquista un debugger con funzionalità ISP e JTAG. Penso che comprerai una volta ma comprerai del bene che ti aiuterà in futuro se desideri cambiare il tuo design. Consiglio AVR Dragon o JTAGICE. Entrambi si collegano al PC tramite USB ed entrambi forniscono ISP e JTAG. JTAGICE è un po 'più costoso di AVR Dragon ma consiglio vivamente AVR Dragon.
  3. Scoprirai che la maggior parte dei microcontrollori Atmel ha funzionalità ISP ma non molti hanno JTAG. I microcontrollori piccoli come la serie AT90S2313 o ATTINY utilizzano la serie ISP in quanto di dimensioni ridotte. Ma se stai cercando non solo di lampeggiare alcuni LED, ma vuoi interfacciarti con uno schermo LCD o una tastiera o con quello che hai, ti consiglio di utilizzare un microcontrollore leggermente più grande. Se stai utilizzando un'alimentazione a 5 V, ti consiglio ATMega8 o ATMega16 o ATMega128 (il mio preferito). ATMega16 e ATMega128 hanno interfaccia ISP e JTAG.
  4. Per quanto riguarda IDE, utilizzavo Code vision e AVR Studio, ma raccomando di utilizzare Atmel Studio 6.0 o versioni successive che soddisfano tutte le vostre esigenze.

Ho alcune idee schematiche che ho imparato da solo in modo da avere un'interfaccia pulita e liscia per il tuo micro. Fammi sapere se hai bisogno di aiuto.


1

Consiglio onesto

Arduino è per i principianti, ci sono due modi per andare da qui

Modo 1: Comprendere come funziona un microcontrollore / processore (approccio preferibile)

Atmel 8051

Con questo intendo le architetture di apprendimento e il codice assembly (o bare metal) per il micro p / c. Se hai bisogno di un punto di partenza per questo, suggerirei Atmel 8051 che è un microcontrollore a 8 bit con l'architettura e il set di istruzioni di assemblaggio più semplici. Qualsiasi altro moderno processore a 32 o 64 bit ha una forma derivata di architettura da esso. Questo micro controller viene ancora utilizzato come parte dei miei corsi di laurea perché è un buon punto di partenza e molta letteratura è disponibile.

Oh e i kit per creare la tua scheda ISP sono venduti (kit completamente assemblati con processo, componenti di saldatura a una scheda kit e puoi costruire tu stesso la scheda di sviluppo richiede solo un paio di cavi e prese IC e RS-232)

Poiché è a bassa tecnologia, tutti i componenti saranno economici.

Modo 2: passa a un approccio hardware-software (meno preferibile)

Raspberry Pi Beagle bone nero

Questo è l'approccio per i fannulloni che si sono immersi in un po 'di assemblaggio e hanno "sfruttato" O le persone che vogliono passare a più software che hardware. Suggerirei di passare a un'altra scheda per hobbisti come Raspberry Pi o BeagleBoneBlack con processori ARM e iniziare a fare progetti nella loro creatività.


0

Puoi usare la scheda Arduino, senza usare le librerie sandbox e l'ambiente, puoi programmare tutto da solo. Se vuoi usare il loro bootloader via seriale / uart per programmare, questo funziona bene. Ma la maggior parte / tutte le parti avr possono anche essere programmate in un altro modo, con la parte tenuta in reset, il che significa che non è murabile. è abbastanza facile bit bit spi da un arduino o un altro microcontrollore o con un ftdi fuori di un certo sapore. sparkfun ha schede arduino e non arduino (la 32u per esempio) che l'intestazione spi è ovvia. e schede breakout ftdi che puoi facilmente bitbang usando la libreria ftdi o la libreria ftdi fornita con linux.

La documentazione per ciascuna parte mostra le opzioni di avvio e le opzioni di programmazione flash. sì, non è difficile acquistare solo alcune parti e creare la tua scheda di breakout. Non lo farei finché non avrai usato un breakout esistente o una semplice scheda di valutazione e poi lo clonassi, se necessario. Idealmente inizia con una parte con un oscillatore rc interno, fondamentalmente potenza, terra e pin di programmazione ...

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.