creazione di un frequenzimetro

Aperto da matteo_, 22 Ottobre 2021, 13:01:24

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

matteo_

ciao a tutti, volevo capire un attimo come costruire o programmare un frequenzimetro, diciamo che la logica e con un comparatore, dando un impulso accesso e spento, poi il micro controller in base agli impulsi, calcola la frequenza, ne ho visti su internet a pochi soldi, ho provato a vedere con arduino se si può far qualcosa, ha una risoluzione bassissima quindi riesce far poco, se io volessi usare altri integrati come arduino, ne esistono altri con più risoluzione? ne vale la pena a livello economico più tosto che comprarne uno già fatto?   


inviato iPhone using rogerKapp mobile


listener

Visto che vedo ti piace sperimentare, io ti consiglierei di buttare il prima possibile arduino che ha poco a che fare con le logiche reali dei microcontrollori. E prendere un pickit (forse circa 20 euro) e cominciare ad usare i pic Microchip (costano davvero molto poco). Vedrai che non ha niente a che vedere. Hai un sistema di sviluppo professionale, che nel caso potrebbe anche servire un giorno per lavoro. Programmi in C che è potentissimo, e visto che è fatto dalla stessa casa il codice è parecchio ottimizzato, è praticamente come scrivere in assembler con qualche riga in meno, e volendo puoi usare direttamente l'assembler, anzi molte configurazioni si fanno proprio in assembler impostando i vari registri, prendendoli dal datasheet, più in basso di così ci sta solo appunto l'assembler puro che al giorno d'oggi non sarebbe utilizzabile.
Un frequenzimetro lo faresti molto facilmente, basta contare gli impulsi su una porta per tot tempo, buttarli su una variabile, e visualizzarli a schermo. Ad esempio con un pic puoi fare qualcosa del genere, vediamo se lo trovo sono fermo da molti anni. Eccolo:

Ci stanno anche altri video con oscilloscopio e analizzatore di spettro, in campo poco oltre i 200Khz mi pare, ma con qualche adattamento all'ingresso e con un processore più veloce puoi fare cose molto avanzate.

listener

Dimenticavo, puoi farlo anche usando porte logiche, dipende cosa preferisci nel caso trovi tanti progetti di nuova elettronica, molto didattici, ma ad uso anche professionale. Usi ad esempio un contatore BinariDigitCode che poi passi ai driver a sette segmenti per pilotarli uno ad uno, c'è tutta la parte per pilotarli in multiplex, etcc. Tutte cose interessanti dipende cosa ti piace approfondire.

matteo_

#3
interessante, diciamo che volevo anche interessarmi anche ad altri utilizzi di micro controller, programmabili

si può fare frequenzimetri, misuratori di induttanze e tante anche altre cose al di fuori della radio

solo che tra il tuo, i raspberry pi pico, in controller del ST, altri ARM, gli fpga che alcuni ti togli un rene per comprarli ecc, gli comprerei tutti per comprenderli e capire su quale ambiente mi trovo meglio

quindi boh, magari provo questo visto il prezzo, ed mi informo bene al riguardo visto che è in C, o forse il raspberry pi pico che è in python

diciamo che è meglio anche stare dove ce più sviluppo, sopratutto di librerie, ok che mi piace la matteria, ma non ho le competenze di saper tutto, quindi servono anche le risorse digitali delle librerie  [emoji28]




inviato iPhone using rogerKapp mobile


listener

No aspetta. I Pic sono microcontrollori e sono strasupportati con librerie e un sistema di sviluppo professionale, il raspberry è un pc a tutti gli effetti, gli usi per impieghi diversi. Con il Pic ci fai un frequenzimetro, o un generatore di segnali. Il raspberry lo usi ad esempio per una fotocamera, o se ti servono impieghi ad alto livello. Certo un frequenzimetro puoi farlo anche con arduino o raspberry, ma ci sta il linguaggio interpretato molto lento nel primo, e tutta la baracca del sistema operativo nel secondo. Con il microcontrollore invece lavori direttamente con il processore, se leggi una porta lo fai ogni ciclo macchina, puoi pilotare e hai molte periferiche interne, generatori pwm, timer, bus i2c e spi indipendenti, convertitori ad, gestisci da solo gli interrupt, etcc.

matteo_

beh già il fatto che ci sono librerie va a favore, allora forse ci faccio un pensiero, ma il raspberry non i computer con i gpio e linux come sistema operativo, esiste anche questo in foto

mi sta incuriosendo anche il teensy, te lo metto sempre in foto, ci fanno anche gli sdr, ovviamente accoppiati con altri componenti



inviato iPhone using rogerKapp mobile


listener

Interessanti non li conoscevo. Visto il prezzo ci sta sicuramente, anzi probabilmente ne acquisterò qualcuno anche io. Però rimangono sempre dei simil arduino pompati, per cose a basso livello viene obbligatorio usare un microcontrollore.


Geremia

#7
Sei sicuro di quello che affermi ? Arduino che usa un linguaggio interpretato ?.
A me non risulta, anzi, usa un compilatore C derivato dallo GNU e, tra l'altro esiste anche il porting dell'RTOS (sistema operativo multitask di tipo preemptive) sull'ATMEGA328 e tutta la serie di microcontrollori Atmel.
Inoltre, nessuno ti obbliga ad usare la scheda Arduino, puoi usare lo stesso micro con il suo quarzo esterno e il canale SPI disponibile su un pettine 5x2 per la sua programmazione, potendo usare sempre l'ambiente Arduino per la scrittura del FW linkandogli le innumerevoli librerie esistenti. Il FW e' scritto in C o C++ object oriented, con classi di oggetti.
S = k * log W

listener

#8
Si userà pure il compilatore gnu, però tu nella paginetta scrivi sempre ad alto livello e ad oggetti, va per forza interpretato prima di mandarlo al processore. E' molto diverso che lavorare con il c della casa madre della microchip che traduce quasi tutte le istruzioni 1:1. Poi certo se usi direttamente il chip di arduino cambiato tutto, ma l'aproccio è molto diverso.


matteo_

#9
arduino è un avr, sul data degli atmel ti mostrano come programmarli, tanti chip, diversi, incompatibili con IDE, devi usare per forza AVR grezzo, ma alla fine della fiera, e solo un linguaggio di un interprete pensato per dar la possibilità anche al più ignorante in materia di riuscire a far qualche operazione tipo lampeggiare un led ecc

ma la cosa più bizzarra e che anche avr è un interprete

alla fine, va tutto in binario, ma ovviamente ci serve interprete per comunicare


python e la specie di C su arduino, sono i linguaggi più semplici

avr su microntroller di altri tipi dove non sono stati programmati i traduttori su IDE o te li fai te, o scrivi diretto in avr, impostano prima la cpu (la sua frequenza) e dopo altri parametri, non hai più i void ma hai altri modi di specificare tutto e anche i tempi, e non esiste il void loop, ma devi specificarli in maniera diversa

ma alla fine della fiera, e come aver un calcolo matematico da fare, puoi volerlo far te senza calcolatrici o altro e neanche senza semplificazioni, riesci, fattibile, ma quanto ci metti? e perché pendi la strada più difficile?

o capisci che, se hai le semplificazioni, e ottieni risultati il prima possibile semplificando processi che ripeti più volte ed usi la calcolatrice, ottieni lo stesso risultato e magari ti viene subito giusto in pochissimo tempo

dopo ovviamente e oggettivo, prova andar sull'Amiga e dimmi quanto ci metti a fare un operazione, a differenza di avere interprete su interprete automatizzato 


inviato iPhone using rogerKapp mobile

davj2500

Citazione di: listener il 23 Ottobre 2021, 14:38:25
Si userà pure il compilatore gnu, però tu nella paginetta scrivi sempre ad alto livello e ad oggetti, va per forza interpretato prima di mandarlo al processore. E' molto diverso che lavorare con il c della casa madre della microchip che traduce quasi tutte le istruzioni 1:1. Poi certo se usi direttamente il chip di arduino cambiato tutto, ma l'aproccio è molto diverso.

Ciao a tutti.

Il compilatore è un programma che legge un file scritto in un linguaggio ad alto livello (ad esempio il C) e lo traduce in una sequenza di istruzioni di codice macchina per il l'architettura di destinazione (es. un PIC, un PC, un ATMega32, ecc.). Fatto ciò una volta, il microprocessore del sistema di destinazione si trova nella memoria la sequenza di sue istruzioni che deve eseguire.
L'interprete, invece, è un programma che funziona sul sistema di destinazione e traduce al momento ogni comando, scritto nel linguaggio ad alto livello, in una serie di azioni da compiere.

I vari PIC, ATMega, STM-32, ecc. sono famiglie di circuiti integrati di varie marche (Microchip Technology, Atmel, ST Microelectronics, ecc), ma sostanzialmente sono "computer su un chip", cioè un singolo integrato che contiene la CPU, la RAM, la flash, le porte di I/O, convertitori A/D, convertitori D/A, timer, watchdog, DMA, ecc. In base al tipo di integrato che si sceglie, si hanno o meno varie funzionalità e prestazioni diverse.
Arduino è una scheda su cui viene montato uno di questi circuiti integrati uniti ad altre circuiterie che ne facilitano l'uso, come ad esempio il regolatore di tensione, dei pin-strip per agevolare la connessione o un convertitore seriale-USB per la programmazione.
Inoltre Arduino completa il quadro fornendo un ambiente di sviluppo molto semplice da utilizzare, corredato di librerie di contorno che consentono anche ai principianti di utilizzare molti dispositivi esterni.
Questi "microcontrollori", compresi quelli saldati sulle schede Arduino, sono tutti "professionali" in quanto nessuna di queste aziende produce microcontrollori "giocattolo". Stessa cosa vale per gli ambienti di sviluppo, quasi sempre basati su compilatori GCC che sono ormai lo standard de-facto anche negli ambienti professionali. Tra parentesi, le possibilità in termini di ottimizzazioni dei microprocessori contenuti nei microcontrollori sono così modeste che un compilatore fa presto a raggiungere il massimo che si possa fare.

Quindi, cosa scegliere tra tutte le schedine che esistono in commercio?
Ovviamente conviene andare su una famiglia che già si conosce per ridurre la curva di apprendimento.
Se si parte da zero, secondo me la scelta più logica è andare su un Arduino basato su STM-32. I vantaggi sono:
1) oggi come oggi la diffusione di Arduino è colossale e ciò significa un'enormità di risorse a disposizioe
2) le schedine Arduino sono open source e si trovano dalla Cina a prezzi stracciati (es. i ProMini con ATMega32 a circa 1€ l'uno)
3) Arduino è un ambiente di sviluppo e supporta un'infinità di microcontrollori: nello stesso ambiente potete scrivere codice con le stesse convenzioni per ATMega, per STM, per gli ESP8266 e praticamente per tutto quello che esiste; questo è un enorme vantaggio per via del fatto che uno è subito operativo su una nuova piattaforma senza doversi trovare un ambiente di sviluppo nuovo da imparare

Si tenga presente che per programmare un microcontrollore di qualunque tipo, per molte cose è sufficiente copiare gli esempi che si trovano in rete, ma spesso e volentieri è richiesta la corretta comprensione della logica del microcontrollore, il che comprende un certo tempo di apprendimento.

Per quanto riguarda il Raspberry PI, avendo esposte delle GPIO (cioè porte di I/O programmabili dall'utente) rientra in parte in questa categoria. È penalizzato dal fatto di avere un consumo energetico elevato, di non disporre di convertitori A/D, di essere relativamente costoso rispetto ad altre soluzioni e, utilizzando linux, di non avere un funzionamento real-time. È avvantaggiato dal fatto di avere un intero sistema operativo, la possibilità di essere controllato con tastiera e monitor, la rete ethernet a bordo e molto spazio di memorizzazione.
Si tenga presente che l'offerta di microcontrollori è molto vasta e per "sopravvivere" si deve restringere la scelta a due/tre prodotti di prestazioni crescenti da impiegare in base all'applicazione. Ad esempio, come "all-purpose" per applicazioni semplici (in termini di quantità di codice e RAM richiesta) la soluzione ottimale secondo me al momento è l'ATMega32 per via della sua enorme diffusione e quantità sterminata di librerie. Questo controllore però raggiunge rapidamente i suoi limiti a causa dei soli 32k di flash e 2k ri RAM,
Dove serve più potenza di calcolo è ottimo la serie "STM32F4", venduto in schedine denominate "black pill" (con su i pin, l'USB, il regolatore di tensione, ecc.), che oltre a supportare numerose porte di I/O e conversioni analogico digitale, ha anche la FPU per i calcoli in virgola mobile.
Vi sono anche gli ESP8266 e i più recenti ESP32 (molto più ricchi di porte di I/O), che possono contenere un protocol stack TCP/IP e lavorare in WiFi, oltre ad essere usati come comuni microcontrollori.

La creazione di un frequenzimetro è abbastanza semplice: la parte più critica è ottenere un'onda quadra dalla pulizia e ampiezza adeguata dal segnale in ingresso. Aiuta un trigger di Schmitt.
A questo punto si tratta di collegare un interrupt ad un pin di un Arduino qualunque e contare gli impulsi. Con un timer si verifica periodicamente il numero di impulsi e da questo si ottiene la frequenza.
Se la frequenza è troppo elevata per le capacità di conteggio del microcontrollore, esistono dei circuiti integrati "prescaler", o "divisori di frequenza", che ogni "N" conteggi emettono un impulso. Ad esempio con un prescaler che divide per 1000 e riceve un segnale a 1MHz, il microcontrollore riceverà un segnale a 1KHz.
Sui datasheet dei vari prescaler si trovano indicati i valori di moltiplicazione e la frequenza massima supportata.

Ciao
Davide

matteo_

#11
ciao Davide, grazie per la completa risposta, comunque si per carità di soluzioni ce ne sono, magari posso prendere un prescaler, pero essendo che vorrei far un unica spesa, volevo prendere qualcosa di economico e che magari posso fare anche altre cose, quindi qualcosa di più performante di Arduino, ma non è neanche detto che io ne compra altri, arduino ne ho 3, quindi alla fine prendere altri integrati, faccio prima a prendere un altro microntroler più evoluto, tipo il kit che mi hanno consigliato o gli altri due che dicevo nei messaggi precedenti, vediamo, per ora uso il tester

perché alla fine posso comprare un frequenzimetro da pochi soldi che arrivano anche ai ghz senza perdere tempo, obbiettivo è l'economia


inviato iPhone using rogerKapp mobile

Geremia

Listener, ma la conosci la differenza tra un programma interpretato e uno compilato ?. Credo proprio di no.
L'interpretato esegue una riga di istruzione ad alto livello convertendo ogni volta in una sequenza di operazioni, il prodotto del compilatore compilato invece e' un file in codice oggetto come sequenza di operazioni in linguaggio macchina che viene programmato sul micro una volta per tutte e quindi molto piu' veloce.
S = k * log W


listener

Forse non ci siamo capiti. Certo che la conosco la differenza tra un programma interpretato e compilato. Io cercavo di consigliare un inizio come si deve, imparando a fondo come funziona un microcontoller e un linguaggio ampiamente diffuso come il c. Arduino si programma in wired, io l'ho provato una volta e buttato nel cassetto, non ha assolutamente niente a che fare con la logica di un microc, in tutto a partire dalla sintassi. Perdi tempo ad usare quelli e appena ti serve qualcosa di serio sei fregato. A quel punto tanto vale usare i basicstamp, quelli erano realmente interpretati, ma almeno si avvicinavano maggiormente all'approccio reale.

davj2500

Citazione di: listener il 23 Ottobre 2021, 17:54:57
Forse non ci siamo capiti. Certo che la conosco la differenza tra un programma interpretato e compilato. Io cercavo di consigliare un inizio come si deve, imparando a fondo come funziona un microcontoller e un linguaggio ampiamente diffuso come il c. Arduino si programma in wired, io l'ho provato una volta e buttato nel cassetto, non ha assolutamente niente a che fare con la logica di un microc, in tutto a partire dalla sintassi. Perdi tempo ad usare quelli e appena ti serve qualcosa di serio sei fregato. A quel punto tanto vale usare i basicstamp, quelli erano realmente interpretati, ma almeno si avvicinavano maggiormente all'approccio reale.

Ciao Listener.

Arduino non si programma in "wired". Arduino fornisce un "framework" che si chiama "Wiring" che è composta da una IDE, un compilatore C/C++ ed una serie di librerie.
Il codice C/C++ che si scrive nella IDE può usare le librerie Wiring di Arduino o quello che vuoi tu.
In altre parole, da dentro la IDE di Arduino puoi scrivere in "C" (o in assembler) qualunque cosa in base al tuo livello di competenza.
La differenza rispetto agli ambienti "professionali" è che l'ambiente "Arduino" supporta in più la libreria "Wiring" che facilita la vita ai principianti, ma non pone alcun limite agli esperti in termini di codice che si possa scrivere.
Perché la sintassi di "Wiring" (che è la sintassi del C/C++) non sarebbe adatta ai microcontrollori?

Ciao
Davide

Geremia

Non capisco la programmazione "wired" ma non importa.
Tra l'altro puoi utilizzare l'IDE di Arduino solo come compilatore senza collegare al PC alcuna scheda, producendo cosi' il codice oggetto in formato .HEX che potrai utilizzare per programmare il micro Atmel che e' posto sulla tua scheda di sviluppo attraverso il canale SPI e un programmatore esterno come USBASP e un SW di programmazione.
Per il debug, e' tutta un'altra cosa, devi disporre di un ambiente tipo AVR STUDIO che si interfaccia con un debugger ICE che puo' avere due canali di comunicazione con il micro, l'SPI oppure il Debug Wire in questo modo potrai disporre di tutte le informazioni in tempo reale durante l'esecuzione del FW scaricato, potrai settare Breakpoint, visualizzare il valore delle variabili utilizzate e debuggare anche step by step il tuo FW.
Ovviamente l'IDE di Arduino non dispone di questo, d'altra parte e' un ambiente nato per approcciare i principianti alla programmazione dei microcontrollori. Una volta esistevano ICE con il "naso" che aveva esattamente la piedinatura del micro e che si sostituiva ad esso sulla scheda target e aveva al suo interno il medesimo micro da debuggare.
S = k * log W

listener

Non capisco perchè fare il processo a me, quando si tentava di spiegare concetti base a chi chiedeva. Forse uso un linguaggio troppo semplice, ma senza questo spesso il prossimo fa fatica a capire. Ok, wired o wiring, ma da quello che ricordo, con arduino ti trovi di fronte un ciclo chiuso che va a ripetersi all'infinito, non si scrive in c ma in linguaggio ad oggetti, e tante robe che con la logica sequenziale di un processore a parer mio proprio non c'azzecca.
Se parti con un microcontollore, sai che ogni riga di codice, corrisponde grosso modo a 1 forse 3-4 istruzioni macchina. Hai idea di cosa stai facendo e di cosa fa il processore.
Forse colpa mia visto il settore che seguo, ma continuo a pensare che gestire in prima persona un processore sia più semplice e sopratutto molto più efficiente. Senza contare che in un progetto finito una schedina arduino non ce la vedo proprio.

Geremia

#17
Scusa, ma come lo scriveresti un programma se non con un ciclo infinito tipo "round robin". Anche utilizzando uno scheduler sei obbligato a ad un ciclo infinito. Ti ricordi il Basic con l'ultima istruzione GOTO START ?.
Se il programma deve rispondere solo ad eventi esterni (ad esempio variazione di stato di un input che genera un interrupt o anche solo la continua lettura dello stato stesso), in ogni caso deve rimanere in un loop di attesa di tali eventi oppure metterlo in uno stato di dormiveglia per risparmiare i consumi (ad esempio) dal quale viene svegliato da una interruzione (timer, o esterna)
Per carita', non e' volere fare un processo a te, ci mancherebbe, ma e' che quando scrivi cose che non sono corrette, il non correggerti lascerebbe pensare a chi legge che quanto dici e' corretto. Scusa il gioco di parole e non avertene a male.
S = k * log W

listener

#18
Cosa ho scritto di sbagliato mi sfugge. Scrivo a dieci dita di getto e senza correttore, quindi finchè mi parli di errori ortografici anche gravi, doppie, etcc, ci sta tutto ma sicuramente non penso di scrivere baggianate.

Ovvio che un processore lavora su un ciclo infinito, andiamo non parliamo di cose banali. COme lo gestirei. Appunto usando uno scheduler, oppure sto in attesa che una periferica generi un interrupt e il main si limita al controllo, o anche semplicemente terminando il programma, dato che ne ho la possibilità, ci sono casi dove serve anche questo.
Non me la prendo a male, solo che si sta parlando di cose banali tranne che del succo del discorso, del resto non ho mica voglia di stare li a descrivere il miu curriculum quando si parla in modo colloquiale.
Voi consigliate un arduino, va bene anche per impieghi professionali, meglio un linguaggio ad oggetti e meno controllo sull'hardware, bohh, ok.
Io non me la sentirei per niente, questione di punti di vista. Non per questo bisogna controlalre ogni parola scritta dal prossimo cercando un errore in modo da screditarlo.


davj2500

#19
Citazione di: listener il 23 Ottobre 2021, 21:00:18
Cosa ho scritto di sbagliato mi sfugge. Scrivo a dieci dita di getto e senza correttore, quindi finchè mi parli di errori ortografici anche gravi, doppie, etcc, ci sta tutto ma sicuramente non penso di scrivere baggianate.

Ovvio che un processore lavora su un ciclo infinito, andiamo non parliamo di cose banali. COme lo gestirei. Appunto usando uno scheduler, oppure sto in attesa che una periferica generi un interrupt e il main si limita al controllo, o anche semplicemente terminando il programma, dato che ne ho la possibilità, ci sono casi dove serve anche questo.
Non me la prendo a male, solo che si sta parlando di cose banali tranne che del succo del discorso, del resto non ho mica voglia di stare li a descrivere il miu curriculum quando si parla in modo colloquiale.
Voi consigliate un arduino, va bene anche per impieghi professionali, meglio un linguaggio ad oggetti e meno controllo sull'hardware, bohh, ok.
Io non me la sentirei per niente, questione di punti di vista. Non per questo bisogna controlalre ogni parola scritta dal prossimo cercando un errore in modo da screditarlo.

Ciao Listener.

Io concordo con Geremia. Questo è un forum, cioè un luogo dove uno scrive e se un altro utente non è d'accordo, dice la sua, possibilmente argomentando la sua posizione. Se preferisci scrivere cose senza correre il rischio di smentita, forse è meglio un blog.
Tu hai sconsigliato Arduino e hai fornito delle motivazioni (però tu nella paginetta scrivi sempre ad alto livello e ad oggetti, va per forza interpretato prima di mandarlo al processore. E' molto diverso che lavorare con il c della casa madre della microchip che traduce quasi tutte le istruzioni 1:1.).
Non si tratta di "errori di battitura" cercati apposta per screditare, è proprio una affermazione profondamente errata nel suo significato.
Infatti:
1) il C++ esiste da trent'anni ed è un superset del C: questo significa che nella IDE di Arduino puoi anche "lavorare in C della casa madre";
2) scrivere "ad oggetti" non significa che "va per forza interpretato": il C++ viene compilato come il C e genera del codice identico; cambia solo il modo in cui viene presentato;
3) la libreria "Wiring" fornisce metodi che funzionano su numerosi microcontrollori diversi: non è una roba da dilettanti, ma è quello che fanno tutti quelli che vogliono evitare di riscrivere il codice ogni volta che cambiano l'hardware (es. vedi la HAL Hardware Abstracion Layer di STMicroelectronics).
4) la libreria Wiring è un aiuto in più ed ha i suoi limiti: chi è in grado di lavorare direttamente coi registri, può farlo, sempre dentro la IDE di Arduino. Chi è in grado di programmare in assembler, può farlo anche dentro l'IDE di Arduino.

La cosa utile sarebbe stata portare esempi di cosa si possa fare comprando una scheda "PIC" che non si potrebbe fare utilizzando una scheda "Arduino" (ovviamente di pari prestazioni, più o meno).
Infatti, secondo me, consigliare un PIC ad un principiante nel 2021, quando il mondo Arduino negli ultimi dieci e più anni ha avvicinato con soddisfazione ai microcontrollori milioni di principianti, è una bella assunzione di responsabilità che andrebbe motivata con qualcosa di più solido di un "io l'ho provato una volta e buttato nel cassetto".

Ciao
Davide

kz

se per un verso arduino è stato una benedizione per hobbisti e prototipatori per l'altro verso imprecisioni ed errori, quando non sono in malafede, si potrebbero far notare con toni più tranquilli.

listener

#21
Davide, ti rispondo solo perchè ti conosco da molti articoli pubblicati e non posso mettere in dubbio la tua serietà. Questo però si dovrebbe fare con tutti senza conoscerli, salvo smentite. Certo su un forum si sta per discutere, ma cerchiamo di tenere il tema un minimo del topic, e poi capirai anche tu che si possono solo dare consigli, non si può scrivere un libro intero ad ogni domanda, non sarebbe ne utile ne pratico.

CitazioneTu hai sconsigliato Arduino e hai fornito delle motivazioni (però tu nella paginetta scrivi sempre ad alto livello e ad oggetti, va per forza interpretato prima di mandarlo al processore. E' molto diverso che lavorare con il c della casa madre della microchip che traduce quasi tutte le istruzioni 1:1.).
Non si tratta di "errori di battitura" cercati apposta per screditare, è proprio una affermazione profondamente errata nel suo significato.

Visto che sai di cosa parliamo, basta semplicemente sostituire interpretato con compilato, per capire cosa volevo dire. Poi che forse non abbia scritto in modo tanto comprensibile ci può anche stare, ma io a semplificare più di così non riesco.

Citazione1) il C++ esiste da trent'anni ed è un superset del C: questo significa che nella IDE di Arduino puoi anche "lavorare in C della casa madre";

Parlavo di compilatore, che è stato scritto dalla casa madre, seguendo il progetto del processore, tante istruzioni vengono tradotte 1:1 o poco oltre, non mi pare poco. Geremia dice che arduino usa il gcc e non mi pare proprio la stessa cosa.

Le altre sono scontate non serve rispondere.

CitazioneLa cosa utile sarebbe stata portare esempi di cosa si possa fare comprando una scheda "PIC" che non si potrebbe fare utilizzando una scheda "Arduino" (ovviamente di pari prestazioni, più o meno).
Infatti, secondo me, consigliare un PIC ad un principiante nel 2021, quando il mondo Arduino negli ultimi dieci e più anni ha avvicinato con soddisfazione ai microcontrollori milioni di principianti, è una bella assunzione di responsabilità che andrebbe motivata con qualcosa di più solido di un "io l'ho provato una volta e buttato nel cassetto".

Eccolo! Il nocciolo della questione! Io le ho date le mie spiegazioni sul perchè scegliere un tipo di processore e casa produttrice, rileggi i post sopra.
-Economici.
-Sistema di sviluppo professionale, che potrebbe anche servire per lavoro. Sistema di sviluppo gratuito.
-Ampia diffusione.
-Programmatore economicissimo.
-Usi da subito un linguaggio che ti servirà finchè avranno vita i computer, e dalla sintassi ripresa da tanti altri linguaggi ad alto livello.
-Non usi un giocattolo, "una schedina", ma un vero microcontroller, con il solo sbattimento di saldare un quarzo e due condensatori, anzi puoi pure usare l'oscillatore interno e risparmiarti pure quello.
E aggiungo:
-nel 2021 dentro un sistema elettronico a microcontrollore non ci trovi un arduino ma è molto probabile ci trovi un Pic.
-La Microchip è uno dei maggiori produttori mondiali di microcontrollori e circuiti integrati.
E anche che sono così economici e versatili, che puoi usarli dal lampeggio di un led, con un 8 pin da pochi centesimi, fino a progetti parecchio complessi con le versioni più potenti.

Geremia

#22
Scusa se mi intrometto ma il compilatore non e' un prodotto della casa madre come dici tu. Sono terze parti che sviluppano e forniscono i compilatori per vari linguaggi. Per quanto riguarda il C io ho usato lo IAR, con licenza, che e' un compilatore utilizzabile per vari tipi di processore. Ma non esiste solo questo, ce ne sono tanti altri piu' o meno validi come ottimizzazione della compilazione.
Che poi la casa madre acquisisca un produttore di compilatori come  ad esempio la HI-TECH acquistata da Microchip nel 2009 e poi venda il compilatore con il logo Microchip, questa e' un'altra cosa. Giusto per essere precisi.
Di solito "la casa madre" come dici tu mette a disposizione l'Assembler che e' un set di istruzioni a basso livello, giusto per non scrivere in linguaggio macchina. Ma anche quello, per fornire il codice oggetto da caricare sul processore, deve essere compilato, scusa assemblato con un assemblatore, questo si fornito dalla casa madre gratuitamente.
S = k * log W

listener

Ora sono fermo da qualche anno , ma ricordo bene che la questione del compilatore la Microchip la vantava particolarmente, ovviamente sono partiti se non ricordo male dal gcc sistemandolo per i loro bisogni. Si parlava di differenze davvero minime tra assembler e c. Poi ci stavano pure i precisini, o per necessità, che andavano ad ottimizzare a mano, ma questa è un'altra storia.
Ero fermo da qualche anno, intanto ho fatto un lavoro completamente diverso, quindi qualcosa probabilmente può essere cambiata, può essere che oggi sia la normalità. Ma parlo di 5-6 anni, ok in elettronica e informatica sono un'eternità, ma almeno i principi base non penso siano cambiati. :)

Geremia

Io invece e' dal 1980 che ci lavoro. Quando ancora non c'erano i microcontrollori ma sul mercato esistevano due microprocessori l'8080 e 8085 Intel e per farli funzionare, dal momento che erano a bus esterno, dovevi inserire sul loro bus la RAM, la ROM (EPROM), il gestore di interrupt, la UART (USART), il generatore di clock. I PIC li conoscevo e ho lavorato con essi ma non mi piacevano perche' a suo tempo, avevano la memoria interna di programma segmentata. Poi usci' la ATMEL  che forni' una famiglia di microcontrollori con memoria non segmentata e ottime prestazioni. Da un po' di tempo l'ATMEL non e' piu' ATMEL ma e' stata acquistata da Microchip anche se il logo e' mantenuto.
S = k * log W