Domanda:
Quale lingua usano i microcontrollori oltre al C?
user2635745
2013-09-08 01:25:29 UTC
view on stackexchange narkive permalink

Voglio iniziare a creare dispositivi e leggo di microcontrollori e altre cose su Internet. Mi chiedo se ci siano altri linguaggi con cui programmare microcontrollori oltre a C.

In generale, utilizzerai C o Assembly per programmare un MCU. Tuttavia, potrebbero esserci compilatori per altri linguaggi in grado di produrre eseguibili per l'MCU scelto. Alcuni strumenti educativi forniscono compilatori BASIC, ad esempio.
Se hai appena iniziato, dai un'occhiata ad Arduino che è un framework molto semplice per eseguire i dispositivi ATMega. Molto facile da usare.
Potresti provare PICAXE (utilizza alcuni dispositivi PIC Microchip). Lo programmi con BASIC, che è più facile da capire rispetto al C quando sei appena agli inizi.
Gustavo Litovsky, so che inizierò con arduino, grazie.
Quale scheda arduino è la migliore per i principianti?
@user2635745 Va bene qualsiasi scheda, ma per un principiante consiglierei qualcosa come lo starter kit: http://arduino.cc/en/Main/ArduinoStarterKit. Viene fornito con semplici tutorial e tutte le parti extra (pulsanti, LED, ...) necessarie per costruire dei bei progetti.
Cinque risposte:
us2012
2013-09-08 01:33:50 UTC
view on stackexchange narkive permalink

I chip non usano affatto C direttamente. Hanno set di istruzioni che variano notevolmente tra le diverse architetture.

Come astrazione di livello molto basso di questi set di istruzioni, la maggior parte dei produttori fornisce un assemblatore, attraverso il quale puoi tradurre i programmi scritti nel relativo linguaggio assembly (che è più o meno una forma più leggibile dalle persone ) in formato binario che puoi caricare sul tuo chip.

Al livello successivo, ci sono linguaggi come C. C è di gran lunga il linguaggio più dominante per la programmazione di microcontrollori a questo livello. Per alcune architetture, troverai anche lo strano compilatore Pascal, BASIC o forse Fortran.

In teoria, l'unica cosa di cui hai bisogno per usare un dato linguaggio su una data architettura è un compilatore adatto (sebbene alcuni , come Java, C # e così via, di solito dipendono dagli ambienti di runtime e per la maggior parte degli UC sono proibitivamente assetati di risorse). In pratica, non ci sono molti compilatori disponibili.

Direi che basic è più comune di fortran, ma non ho alcuna prova particolare per questa convinzione.
Probabilmente hai ragione. Sembra che ci siano versioni di BASIC là fuori per la maggior parte delle architetture, modificherò la mia risposta di conseguenza.
Ricevo istruzioni con il microcontrollore?
Tutti i microcontrollori vengono forniti con schede tecniche e una qualche forma di toolchain, disponibile sul sito Web del produttore. Tuttavia, se sei un principiante, questo materiale potrebbe essere travolgente per te. Cerca un kit che sia esplicitamente rivolto ai principianti. Un Arduino è una scelta ragionevole, ci sono molti tutorial per principianti e forum della comunità là fuori.
tcrosley
2013-09-08 04:15:17 UTC
view on stackexchange narkive permalink

Come abbiamo detto us2012, un µc non esegue affatto il linguaggio C. Funziona invece con il linguaggio macchina che è una rappresentazione binaria del set di istruzioni di µc, con campi per un codice operativo (cosa fare) e specificatori di registro e / o indirizzi (da dove vengono recuperati e / o memorizzati i dati). Il linguaggio assembly è una rappresentazione simbolica di questo linguaggio macchina binario.

Nel caso del linguaggio C, queste istruzioni macchina sono generate da un compilatore C, che quasi sempre gira su un computer separato da µc (un'eccezione è Linux incorporato, che include il compilatore gcc, che esegue su un µc con risorse sufficienti per eseguire un compilatore).

Quando il compilatore viene eseguito su un PC, questo è noto come cross-compilazione. Ogni file sorgente separato contenente le istruzioni in linguaggio C viene compilato separatamente e l'output di ciascuno viene combinato in un unico file scaricabile dal programma linker. Questo file scaricabile contiene le istruzioni in linguaggio macchina menzionate sopra e può essere eseguito direttamente su µc.

Se vuoi eseguire una lingua diversa su µc, avrai bisogno di un compilatore diverso per quella lingua. Tuttavia ci sono un certo numero di linguaggi che non sono compilati in codice macchina, ma invece sono compilati in bytecode; questi non possono essere eseguiti direttamente da µc ma devono invece essere eseguiti da un interprete in esecuzione su µc (una variazione è compilare i bytecode in linguaggio macchina la prima volta che vengono eseguiti dall'interprete).

Brian Drummond
2013-09-08 15:09:38 UTC
view on stackexchange narkive permalink

Un altro linguaggio candidato per la programmazione di microcontrollori è Ada. Offre ottime strutture per la programmazione di basso livello, oltre a una migliore rilevazione di alcuni tipi di errore prima di arrivare alla fase di esecuzione del programma, che trovo mi aiuti a sviluppare notevolmente più velocemente rispetto a C. L'eseguibile risultante può essere altrettanto piccolo come C, non così sorprendente quando ti rendi conto che la maggior parte del compilatore Gnat Ada è lo stesso ottimizzatore e generatore di codice del più comune compilatore C (gcc).

Un altro vantaggio è che il codice può essere molto di più leggibile di C; un altro modo per rendere i problemi più facili da eliminare.

Oltre ai microcontrollori più piccoli, offre anche buone funzionalità orientate agli oggetti e multitasking; l'equivalente di un RTOS è integrato nella lingua.

Due aspetti negativi:

Ada ha una reputazione immeritatamente scarsa ereditata da una versione di 30 anni che difficilmente incontrerai oggigiorno: tu può sentire reazioni piuttosto emotive contro di esso. Ada-2005 è un linguaggio molto diverso ...

E non tutti i microcontrollori hanno un compilatore e una toolchain Ada. Due popolari che lo fanno, sono Atmel AVR (così puoi programmare le tue schede Arduino in Ada) e la serie Texas Instruments MSP430. Sono disponibili anche build Gnat per molte varietà di processori ARM, inclusa la distribuzione Debian Raspberry Pi.

Qualsiasi altro target di GCC può potenzialmente supportare Ada, anche se la creazione di GCC di solito non è un progetto banale ...

http://playground.arduino.cc/Code/AVR-Ada - Nuovo progetto nella mia lista di cose da fare: programma l'esempio lampeggiante su un ATtiny con Ada.
Fondamentalmente, se riesci a far funzionare gli strumenti installati, il progetto vero e proprio è facile! Se costruisci da zero, assicurati di avere AVR-Ada 1.2.x basato su gcc4.7 o successivo. gcc4.5 aveva un bug che impediva il funzionamento dell'approccio più elegante ...
@BrianDrummond, Ho cercato di impostare me stesso con una toolchain Ada per AVR, ma tutti quelli che posso trovare sono repository github defunti o non sono più supportati o disponibili dai fornitori.Conosci qualche toolchain del compilatore Ada corrente per i micro AVR?(preferibilmente gratuiti o open-source)?
Macke
2013-09-08 11:08:44 UTC
view on stackexchange narkive permalink

Come dicono le altre risposte, la maggior parte degli UC viene fornita con toolchain che supportano il C e altri linguaggi simili, perché i linguaggi più grandi, specialmente quelli con garbage collection, sono molto affamati di risorse.

Ma, nello spirito della Legge di Atwood: "Alla fine tutto sarà portato su Javascript", ti do Espruino, "Il primo microcontrollore JavaScript al mondo per principianti o esperti.":

enter image description here

Nota divertente: questo UC non esegue Java in modo nativo. È un UC standard che sembra avere un interprete Java precaricato in Flash. UC esegue il "codice macchina", proprio come qualsiasi altro UC.
Questa è una risposta non meno di quelle che menzionano gli interpreti di base. Per quanto riguarda il dispositivo stesso, è il tipo di progetto che vivrà o morirà grazie alla capacità del suo stack software, e sembra che ci sia una versione non supportata che si può provare a far funzionare sulle schede di scoperta che sono già disponibili e più economico della proposta kickstarter.
@ChrisStratton Non ho detto che fosse "meno di una risposta", non l'ho votata negativamente. L'ho chiamata una "nota divertente". Non essere così polemico. Inoltre, se inserisci At-Username quando rispondi, la persona a cui stai rispondendo riceverà una notifica. Altrimenti, i tuoi commenti potrebbero facilmente essere trascurati.
@David Kessner: Si tratta di "JavaScript", non di "Java". Entrambe sono lingue abbastanza diverse.
ridecontrol53
2013-09-08 19:32:46 UTC
view on stackexchange narkive permalink

Come uno degli altri utenti ha commentato sotto la tua domanda, Arduino è molto popolare e versatile in termini di progetti e usi. Ha un proprio linguaggio che è molto simile al C ... per esempio, dichiara librerie, variabili e effettua chiamate di funzioni. Tuttavia, ha alcune delle sue funzioni intrinseche per le quali dovrai imparare la sintassi.



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...