Domanda

Quale famiglia dovrei iniziare ad imparare? (Non ho mai fatto alcuna programmazione sul microcontrollore)

È stato utile?

Soluzione

Oggi AVR e PIC sono probabilmente i microcontrollori più comuni tra gli hobbisti. Entrambi hanno una vasta gamma di varianti di dispositivo ed entrambi possono essere utilizzati per ottenere risultati simili.

Per un principiante suggerirei AVR per vari motivi:

PIC è noto per la sua peculiare architettura. Molti amano PIC per questo, alcuni lo odiano. L'AVR è più semplice e non sembra causare altrettante opinioni estreme e polari.

Sia AVR che PIC sono usati in molte applicazioni commerciali serie. Tuttavia, non sono le uniche opzioni ovviamente. Il mio microcontrollore preferito sia per hobby che per lavoro commerciale è la famiglia C8051 dei Silicon Laboratories, in particolare C8051 F530 . Esiste un eccellente compilatore e assemblatore C gratuito per la famiglia C8051 chiamato SDCC .

Riepilogo: ci sono molte opzioni, ma per favore non lasciarti sopraffare. Basta sceglierne uno e iniziare a imparare con esso. I microcontrollori sono davvero sorprendentemente facili da padroneggiare quando decidi di iniziare!

Altri suggerimenti

Il mio capo ha acquisito le basi usando AVR entro una settimana senza esperienza precedente.

Suggerirei AVR. Ha superato di gran lunga PIC come piattaforma di microcontrollori preferita per progetti di hobbisti generali. In particolare, considera la piattaforma Arduino (e altri * duino), che fornisce un AVR di fascia alta in un fattore di forma facile da interfacciare e popolare.

Preferisco di gran lunga l'AVR al PIC, la cui architettura trovo un po 'disordinata. Forse sono solo io, e non ti disturberai se riesci a scrivere in una lingua di alto livello, molto probabilmente (qualche dialetto di) C.

Dato che sei nuovo ai microcontrollori, presumo che le prestazioni non siano il problema, quindi cercherò invece la disponibilità di strumenti di sviluppo: schede di prototipazione, IDE e strumenti di simulazione / debug. Personalmente mi è piaciuto molto AVR Studio (l'ambiente di sviluppo gratuito di Atmel).

Jason menziona l'MSP430 della TI, che in effetti è un controller eccellente, specialmente se utilizzi applicazioni a bassissima potenza. Ma non lo consiglierei a un principiante, poiché la configurazione è un po 'ingombrante. (Ricordo che la descrizione dell'oscillatore copriva oltre 20 pagine nel manuale dell'utente.)

Alcune persone hanno commentato la strana (e C ostile) architettura del PIC micro. Ciò vale per i PIC più piccoli, ma i chip a 16 bit (PIC24F, dsPIC30, ecc.) Hanno architetture molto chiare che funzionano molto bene con C.

La linea PIC24F ha la capacità di assegnare i pin alle funzioni (timer, A / D, I / O seriale) al volo, semplificando un po 'la progettazione. L'ambiente MPLAB per il debug e lo sviluppo è abbastanza carino.

Ho fatto alcune programmazioni PIC, soprattutto perché mi piaceva l'idea che il chip fosse solo un dollaro o due. Tuttavia, per un principiante, prendere una decisione esclusivamente sul prezzo è un'ottimizzazione prematura.

La programmazione in assemblatore è un'esperienza. Fondamentalmente devi imparare circa 100 concetti prima di poter lampeggiare un LED. (Timer watchdog, pin di reset, contatori / overflow a 8 bit, loop di ritardo, hex, binario, mascheramento di bit, interrupt, richieste di servizio di interruzione, porte IO, ecc.) È tutto molto educativo - ed è una bella sensazione avvicinarsi così tanto alla macchina - ma essere in grado di codificare qualcosa in C nasconderà parte di questa complessità in modo da poterti concentrare sui risultati. Per questo motivo direi di andare con l'AVR. (E credo che i prezzi siano ora più vicini ai PIC.)

Inoltre: se sei interessato a fare le cose (e non ti dispiace spendere ~ $ 30) dai un'occhiata a arduino . Un ragazzo che li vendeva nel mio negozio di elettronica locale stava dicendo che ne vendeva tonnellate a studenti d'arte. (Utilizza l'IDE del progetto Processing e compila il codice con avr-gcc.)

Aggiornamento: risolto il commento che Arduino esegue il codice interpretato. Anche aggiornato il prezzo approssimativo di Arduino.

Non capisco quale sia il grosso problema con Arduino, rovinerà la tua possibilità di capire cosa sta realmente accadendo. Programma regolarmente con AVR e PIC, praticamente non c'è molta differenza, non riesco a capire di cosa si tratta. Tuttavia, per un principiante stare lontano da Arduino, può essere semplice, ma questa è la trappola, non ti dà alcun concetto di architettura hardware e nessuna idea di ciò che sta accadendo dietro le quinte, le cose che i principianti devono imparare a essere un programmatore efficace. Quando ero un principiante, ho iniziato con un ATmega32 un programmatore USBasp da $ 20, AVR Studio (gratuito) e AVRDude (viene fornito con WinAVR) e ho seguito i tutorial introduttivi in ??AVR Freaks. Questo è tutto ciò che serve, Fatto !!!

P.S. Se vuoi davvero imparare a programmare i micro e avere il tempo di imparare l'assemblatore per il tuo micro e sarai 20 volte il programmatore C di qualcuno che ha iniziato a usare arduino.

Il mio voto va a PIC per l'estrema varietà di dispositivi disponibili. Ma devo dire che quando ho iniziato a usare i PIC non erano quasi nient'altro. Forse ora le cose sono cambiate.

Voto per TI MSP430 serie. Ho usato ampiamente i PIC (anche un po 'di chip Atmel) e di gran lunga la cosa più importante per me è un buon IDE di debug. TI ha fatto un ottimo lavoro su questo, e il loro compilatore C ++ funziona davvero bene. Puoi andare avanti con una scheda di valutazione per meno di $ 100 incluso un IDE + debugger USB. I PIC hanno un migliore & amp; periferiche hardware più diverse, ma MPLAB è un pezzo di merda e l'unico IDE C ++ per PIC è uno di IAR che è piuttosto costoso. (più di $ 2K)

Io / abbiamo scelto PIC principalmente perché c'è più hardware periferico allo stesso prezzo. E, soprattutto, non puoi nemmeno trovare AVR comparabili. Ho scelto una delle versioni gratuite legacy (iniziata con PIC18, migrata su dspic33)

L'IDE è gratuito, il compilatore (C) è gratuito nella versione per studenti (che disabilita l'ottimizzazione dopo il primo mese). I programmatori entry level sono anche abbastanza economici. Se hai un sacco di interruzioni, contatori e timer, c'è la possibilità che non avrai bisogno di ottimizzazione. Un programmatore direttamente da Microchip costa $ 30.

Si noti che le osservazioni sopra riportate sull'AVR che si rivolgono maggiormente allo sviluppo di HLL sono leggermente obsolete a meno che non si scelga realmente architetture legacy come PIC12 e 16.

Uno in genere programma le architetture PIC18 (8 bit) e 16 bit più moderne (24F, 30F e dspic33 che si basano sullo stesso core principale) in C. I 16 bit usano anche GCC. Ora ci sono anche 32 bitter basati su MIPS, ma competono di più con ARM nella scena dell'elaborazione audio / video. Stranamente, quelli moderni sono spesso più economici di quelli vecchi. Probabilmente sono prodotti in un processo più moderno che ha rese più elevate.

Un'altra nota: nel frattempo Microchip / PIC hanno acquistato Atmel / AVR, ma presumo che per i primi anni ciò non influirà molto sulle linee di prodotti.

Non vedo davvero l'ora che il 60 bit Ethernet sia abilitato a 16 bit che sarà rilasciato questa estate (prezzo di strada afaik appena sopra EUR 10)

Se vuoi solo sapere cos'è la programmazione MCU, iniziare da Arduino è una buona idea. È economico, con un IDE adatto ai principianti (basato sull'elaborazione del linguaggio di programmazione, che ha una sintassi simile con C).

Ma questo non ha risposto al tuo quesiton, perché Arduino è basato su AVR, non puoi sentire che c'è un MCU AVR dietro quel moderno IDE. :)

Ho avuto molto più successo con PIC mentre stavo appena iniziando. Ho cercato di ottenere un semplice kit di avvio da Arduino e non sono riuscito a ottenere un buon kit di base senza spendere più di $ 100-200 nichel e attenuare la configurazione insieme. Ho ricevuto un fantastico piccolo kit di base da PIC per circa $ 40 e ha tutto: IDE, programmatore, scheda di partenza con circuiti integrati per dimostrazioni ed esercitazioni. Un acquisto. Inoltre, l'ambiente PIC è stato molto semplice da configurare e da utilizzare. Ci stavo giocando entro un'ora.

La mia prima esperienza con i microcontrollori è stata con un OOPic-R . Mi ha permesso di fare semplici esperimenti robotici senza preoccuparmi troppo del codice. Il flusso di programmazione orientato agli oggetti rende tutto veloce e facile da programmare.

Di recente, ho provato un'altra varietà di PIC, lo sporco PICAXE . L'interfaccia di programmazione inclusa è semplicissima da utilizzare. Inoltre, per interfacciare fisicamente il PICAXE, è sufficiente una porta RS-232 per programmarlo e due pin sul chip (non è necessario eseguire il cambio di livello). Ho incorporato PICAXE in contenitori molto piccoli (chip SMD e DIP disponibili) e ha funzionato abbastanza bene.

Non ho esperienza con la programmazione di microcontrollori in assembly. Se vuoi provarlo, l'AVR potrebbe essere più adatto a causa della sua più ampia comunità di utenti.

Per quanto ne so, il modo più economico per programmare un AVR utilizzando gli strumenti di ATMEL è ATMEL AVR ISP mkII per 35 $. Puoi trovare programmatori di terze parti per 10-15 $.

Vorrei fare la mia scelta in base alla disponibilità di un cross-compilatore C. In passato, ciò avrebbe reso AVR la scelta. Non sono sicuro di quale sia lo stato adesso.

Ho programmato un PIC in assemblatore e non è stato molto divertente. C è molto più bello in molti modi.

Una delle migliori funzionalità di AVR è la community nei forum su www.avrfreaks.net. Avrai un sacco di ingegneri elettronici esperti in giro, disposti ad aiutare i neofiti ad andare avanti.

Direi che trovo il microcontrollore 8051 il più semplice e Atmel ha ideato microcontrollori con così tante funzioni integrate .... ma comunque le persone stanno preferibilmente usando gli AVR ... la mia mano salirebbe con il Famiglia 8051 (se trovata comoda) altrimenti l'AVR ...

Adoro AVR. è facile da programmare e risorse disponibili. ci sono poche community come Arduino ci lavora.

Qualche altra dicussione sulla superiorità di AVR, sull'altro Stack Overflow: http://embeddedgurus.com/stack-overflow/2009/04 / pic-stack overflow /

  

La popolarità dei PIC a 8 bit mi confonde. L'architettura è terribile -   lo stack di chiamate limitate è solo la prima cosa terribile. Getta in   necessità di paging e banking insieme al singolo vettore di interrupt   e hai un incubo di un modello di programmazione. Sarebbe una cosa   se questa era la norma per i dispositivi a 8 bit - ma non lo è. L'AVR   l'architettura soffia via il PIC, mentre anche l'HC05 / HC08   strade davanti al PIC. Data la scelta penso che avrei anche preso un   8051 sul PIC. Non vedo alcun vantaggio in termini di costi, imballaggio   vantaggi (Atmel ha appena rilasciato un AVR SOT23-6 che è essenzialmente   set di istruzioni compatibile con i loro dispositivi più grandi) o periferico   impostare vantaggi. In breve, non capisco! Per inciso, questo non è un   accusa di Microchip: sono un'ottima compagnia e mi piace molto   molti altri loro prodotti, il loro sito web, il supporto tecnico e così via   (forse è per questo che il PIC è così ampiamente usato?)

Ho iniziato con un Motorola M68HC11, era abbastanza semplice. Penso che avrai la stessa esperienza con qualsiasi controller 8Bit.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top