Go Down

Topic: [OT] PIC, 8051, MCU e CPU varie (Read 106047 times) previous topic - next topic

leo72


Ammazza che schifo! 1MIPS con 10MHz! :D

"ammazza che schifo"?!?  :smiley-sweat:
Stai parlando di una MPU nata 33 anni fa!  ;)

Quote

Cmq ribadisco: l'evoluzione successiva dell' Homo Arduinicum sono i PIC, partendo almeno dai PIC18.

I dsPIC33 mi intrigano parecchio. Sono a 16 bit ed in formato DIP...

PaoloP

Join the DarkSide, we have 16bit.  :smiley-mr-green: :smiley-mr-green: :smiley-mr-green:

leo72

Il "Light Side" non ce l'ha...

BaBBuino

Leo e pensa che la gestione del dspic33 è completamente trasparente. Pensavo ci fossero complesse istruzioni Assembly per sfruttare la potenza matematica del Core, ed invece è di una semplicità disarmante perché provvede a tutto il Compilatore.

Se vuoi fare, chessò, una funzione sinusoidale in PWM, con una tabella di seno, la fai allo stesso modo di una normale MCU, solo che viene eseguita 10 volte più velocemente!

Almeno per applicazioni amatoriali, un ds può essere usato con profitto, senza troppe complicazioni. Per esempio lo vedo bene nella gestione di librerie grafiche per display GLCD e/o TFT, visto che tutte le funzioni grafiche di disegno fanno uso di routine matematiche.

leo72


Leo e pensa che la gestione del dspic33 è completamente trasparente. Pensavo ci fossero complesse istruzioni Assembly per sfruttare la potenza matematica del Core, ed invece è di una semplicità disarmante perché provvede a tutto il Compilatore.

Che compilatore usi, tu?
So che Microchip distribuisce un compilatore free che ha come unico limite la non ottimizzazione spinta del codice. Il che, per un hobbista, è una mancanza assolutamente non avvertita.

BaBBuino

Microchip ha 3 compilatori:
C18 per la linea low e mid, PIC16 e PIC18 (i PIC16 li lascerei da parte perché spesso sono meno performanti di Arduino)
C30 per la linea high, PIC24 e dsPIC30-33
C32 per la linea high-end a 32bit, PIC32

Tutti sono gestiti dell'IDE unico MPLAB, che richiama il corretto compilatore in automatico, a seconda della MCU scelta in fase di progetto.

Ad un livello più semplice, diciamo molto vicino ad Arduino, c'è l' IDE di Mikroelektronica, con tutte le sue librerie già belle e pronte.

Cmq anche MPIDE è molto semplice, e mi fa strano che molta gente competente sia ancora rimasta ancorata all'hardware di Arduino. Con le tue competenze, in due mesi diventi un outsider anche sui PIC che, detto francamente, aprono prospettive pressoché infinite, si inizia ad imparare il mondo delle MCU vere.

BaBBuino

Molto interessante. Anche se, senza entrare in situazioni di massimo sfruttamento (il 90% dei progetti sottoimpiegano le attuali MCU), la scelta di una MCU, per un progetto generico, ha tra i suoi parametri anche la "simpatia" su una data architettura, e non la effettiva necessità di una qualche particolare periferica e/o modulo interno.

Leo potresti inventarti un nuovo thread per proseguire la discussione su questa linea, oramai OT, e spostare questi ultimi post.

astrobeed


Microchip ha 3 compilatori:
C18 per la linea low e mid, PIC16 e PIC18 (i PIC16 li lascerei da parte perché spesso sono meno performanti di Arduino)
C30 per la linea high, PIC24 e dsPIC30-33
C32 per la linea high-end a 32bit, PIC32


Alcune precisazioni in generale, prima di tutto i PIC non sono snobbati nel dal mondo professionale nel dal mondo amatoriale, sono le mcu più vendute ed utilizzate in assoluto in tutti e due i mondi, basta pensare che Microchip da sola detiene circa il 57% del mercato mondiale delle mcu, Atmel se non ricordo circa il 23% il rimanente distribuito tra tutti gli altri.
Microchip produce miliardi di chip all'anno, tra i vari modelli, la sola Samsung acquista da loro circa 1 miliardo di mcu all'ano, si nei vostri televisori, stampanti e smartphone samsung dentro ci sono delle mcu Microchip.
Attualmente i compilatori C ufficiali per i PIC sono XC8, tutte le serie e non solo i PIC18, e XC16 (PIC24 e dsPIC), i precedenti C18 e C30 sono obsoleti e non più aggiornati, questi compilatori sono disponibili in forma nativa per Windows, Linux e MAC OS, l'ide ora è MPLABX, basato su Netbeans, ed è multipiattaforma, l'ide di Microchip non ha mai avuto alcuna limitazione ed è sempre esistito esclusivamente in versione free per uso sia amatoriale che commerciale.
Ad avere limitazioni, esclusivamente sul livello di ottimizzazione, sono i compilatori di Microchip, comunque la versione free è utilizzabile anche per progetti commerciali, inoltre è usanza di Microchip regalare tool di sviluppo hardware e compilatori agli sviluppatori "meritevoli", ovvero a tutti quelli che con le loro applicazioni gli fanno vendere molti ic :)
La serie 16 dei PIC sebbene regolarmente prodotta e con nuovi modelli ogni anno è da considerarsi obsoleta e sconsigliata per nuovi progetti, continuano a produrli perché esiste una miriade di board che li usa e hanno ancora un grosso mercato.
Per i PIC32 (32 bit con core Mips) il compilatore XC32 è C++ a differenza degli altri compilatori che sono C ANSI.
Ultima nota, sebbene i PIC18, diretti antagonisti degli AVR più recenti, al massimo lavorano a 10 MHz (40 MHz interni tramite pll) sviluppano 10 mips reali perché la stragrande maggioranza delle istruzioni richiedono un solo ciclo macchina, solo alcune richiedono due cicli macchina, gli AVR anche con il clock a 20 MHz arrivano a stento a 10 mips reali perché oltre la metà delle istruzioni richiede due cicli macchina e alcune richiedono da tre a quattro cicli macchina.
Se provate un benchmark per i mips reali, scritto in ANSI C, su un pic 18 @10MHz e un ATmega 328 @20MHz (compilato tramite AVR Studio) otterrete un interessante risultato, il PIC segna 9.98  mips, il 328 segna 9.43 mips.


BaBBuino

Conoscevo le prestazioni "pari" dei PIC18 e degli AVR, anche se i 18 mi sono sembrati più flessibili, oltre al maggior supporto.

Ti ringrazio per le ulteriori precisazioni. Molti ancora rimangono ancorati alle vecchie versioni Cxx, senza sentire la necessità di passare alle nuove XC. Solo l'IDE mi pare abbia ricevuto sostanziali miglioramenti, ma era gioco facile, visto che il vecchio MPLAB è veramente spartano e scarno di funzionalità, ma per una progettazione "pronti-via" è ampiamente sufficiente.

Circa il Professionale, lamento il fatto che, discorrendo con vari professionisti del settore, quando gli parli di PIC storcono il naso, come fossero oggetti per Hobbisti, e mi pare che anche Lock, tra le righe, non ne sia entusista. Poi, conoscendo i numeri, sapevo che c'era una contraddizione nei termini.

Già che ci siamo, se i "crani" ne hanno voglia, si può estendere la discussione a un pò tutta la galassia di MCU che il mercato offre.

Per esempio, la ditta di firmware a cui si appoggia la mia Azienda, va matta per i Fujitsu, un altro collega mi riempe la testa dei suoi Renesas, un altro guai a chi gli tocca i suoi Freescale, e così via.

Come ho detto prima, la scelta di una MCU, di una particolare architettura, per un dato progetto, oltre che dalle prerogative tecniche del Microcontrollore (moduli interni, e/o tool disponibili) mi pare che sia fortemente influenzata da simpatie varie, che nulla hanno di fondamentalmente tecnico (un pò come disquisire se sia meglio una bella gnocca bionda o una bella gnocca mora, e poi arrampicarsi sugli specchi per difendere una scelta tra le due).

BaBBuino

P.S. Grazie Leo per il nuovo post! ;)

Dario Gogliandolo

Salve a tutti, sono molto interessato a questo argomento...
Intanto grazie a tutti per le preziose informazioni che continuate a dare ma ho ancora qualche dubbio...
Vorrei passare ai PIC ma non so niente su di essi o almeno sono rimasto al 16F84 che ho studiato abbastanza a fondo a scuola ma che di fatto non ho mai programmato se non in un simulatore.
Mi attirano in particolar modo i PIC32 per le elevate prestazioni ma non so se è il caso partire subito "sparati" con qualcosa di così complesso o se è meglio partire un po' più dal basso; è anche vero che se devo spendere soldi per attrezzatura (programmatore?) vorrei che fosse utilizzabile sia con PIC più semplici che con con qualcosa di fascia alta...
In conclusione come potreste consigliarmi di cominciare questo "cammino", considerando che sono appena arrivato nel mondo dei PIC?
Video demonstration of my Dashboard OBDII -> http://goo.gl/m8Pqp

astrobeed


Circa il Professionale, lamento il fatto che, discorrendo con vari professionisti del settore, quando gli parli di PIC storcono il naso,


Allora non sono professionisti del settore :)
Premesso che non esiste il micro/mcu ideale che va bene per tutto di sicuro Microchip offre un ampia di gamma di mcu che spaziano dall'uso generico a modelli verticalizzati per applicazioni particolari.
Personalmente uso Microchip quando non ho vincoli di progetto, in alternativa Atmel solo se mi viene imposto, non voglio aprire un flame Microchip vs Atmel perché non ha alcun senso proprio per il motivo che non esiste la mcu ideale, ci sono applicazioni dove Microchip offre mcu che vanno meglio e altre applicazioni dove le mcu Atmel vanno altrettanto bene.

Quote

Per esempio, la ditta di firmware a cui si appoggia la mia Azienda, va matta per i Fujitsu, un altro collega mi riempe la testa dei suoi Renesas, un altro guai a chi gli tocca i suoi Freescale, e così via.


Diciamo che gli "altri" per poter continuare a vendere hanno sfornato prodotti che possono risultare nettamente superiori a Microchip e Atmel, per contro sono prodotti di "nicchia" con costi elevati degli ic e altissimi per i relativi sistemi di sviluppo, va da se che in ambito professionale è un problema "relativo" spendere molte migliaia di Euro tra programmatore/debugger e software di sviluppo quando si parla di prodotti che verranno venduti in decine di migliaia di pezzi, il discorso cambia molto se la produzione è medio/piccola.
Personalmente per l'high level sono migrato verso gli STM32 di ST, costano poco gli ic, sono disponibili board per lo sviluppo a prezzi ridicoli, si possono programmare tramite ambienti free usando il gcc oppure tramite compilatori commerciali a costi contenuti tra i quali c'è il MikroC Arm che permette di scrivere software quasi senza leggere il datasheet, però è meglio farlo :)

astrobeed


Mi attirano in particolar modo i PIC32 per le elevate prestazioni ma non so se è il caso partire subito "sparati" con qualcosa di così complesso o se è meglio partire un po' più dal basso; è


I PIC 32 sono abbastanza complessi da gestire, come tutti i micro di questo livello, è meglio che parti con i pic della serie 18, p.e. il 18F4620 che trovi anche in case pdid 40 pin o la sua versione a 28 pin 18F2620, poi potresti passare ai PIC24/dsPIC che offrono performance notevoli, per ultimo ai PIC32.
Come programmatore prendi il Pickit 3, va bene per tutte le famiglie di PIC e fa anche da debuggur hardware, costa poco più di 30 Euro, evita come la peste i vari "programmatori" autocostruiti perché non sono affidabili e non hanno nessun tipo di protezione.

BaBBuino

#28
Sep 30, 2013, 07:43 pm Last Edit: Sep 30, 2013, 07:45 pm by BaBBuino Reason: 1
Mi associo a quanto suggerito da Astro, dal momento che ho calcato il percorso di PIC nella giusta sequenza.

I PIC 18F sono molto semplici da usare, specie se hai reminescienze del leggendario 16F84. I 18 non hanno limitazioni di memoria e di gestione delle pagine come i 16.

Ho iniziato subito con i 18, poi, dando uno sguardo ai 16 ho visto che sono fortemente limitati e ho fatto bene ad ignorarli.

Poi è importante una premessa: per fare una rapida parabola di apprendimento nel mondo delle MCU è DOVEROSA, anzi, assolutamente necessaria una notevole base di conoscenze di elettronica digitale, a partire dalle conoscenze teoriche a quelle pratiche su contatori, flip-flop e porte logiche.
Il fatto di avere una profonda formazione (grazie all'ottimo Professore, e successivo sviluppo selfmade) in questa branca, con un ottimo bagaglio di "figure mentali" relative all'elettronica digitale, mi ha permesso di entrare in questo mondo con estrema facilità.

Mancando questa base, diventa tutto in salita.

Le "figure mentali" che intendo, sono la capacità di contare in binario agevolmente, avere il colpo d'occhio su codici esadecimali, comprendere le larghezze di bus a 8 bit a 2 byte, a 4 byte, immaginarsi figurativamente cosa sia uno Stack, un registro a scorrimento e così via. Queste si formano solo con l'esperienza, nel masticare cointinuamente quanto appreso in teoria.

Se invece hai queste basi consolidate, allora è solo una formalità comprendere, almeno superficialmente, anche tutta l'architettura di una MCU e i suoi moduli.

Sarò di parte, ma chi ha formazione elettronica, ha molta più facilità ad apprendere il funzionamento intimo di una MCU rispetto ad un Ingegnere del Software (Informatico).

Compresi gli 8 bit, il salto naturale è ai 16 bit, e molte Case costruttrici si sperticano nel dichiarare che la migrazione è assolutamente indolore, anzi, promettono migrazioni "facili" tra 8 bit e 32.
Non corrisponde proprio al vero, però non è neanche del tutto falso. Una volta apprese le prerogative di un 8 bit, puoi transitare al 32 facendogli fare le stesse cose, guadagnando però in velocità di esecuzione.

Sostanzialmente, un programma per un 8 bit, gira anche su un 32 bit, cambia solo l'inizializzazione della MCU, ma il main() può essere identico.

Una volta tastato il terreno, ci si può spingere all'interno fino ai registri più reconditi, ma la tecnica sostanzialmente è la stessa, almeno finche non si passa a progetti veramente professionali.

astrobeed


Sostanzialmente, un programma per un 8 bit, gira anche su un 32 bit, cambia solo l'inizializzazione della MCU, ma il main() può essere identico.


Questo è più merito del compilatore che della MCU, in linea di massima se il software è scritto in C ANSI, praticamente un must con le mcu, tutto ciò che è elaborazione vera e propria rimane invariato indipendentemente dalla mcu/micro, quello che cambia, anche profondamente, è la parte del software che inizializza le varie periferiche hardware ed eventualmente il modo per utilizzarle, ovvero a quali registri accedere e come scrivere i relativi interrupt.
Microchip è molto amichevole nel passaggio dai PIC18 verso i PIC24/dsPIC33 perché quasi tutte le periferiche sono in buona parte retrocompatibili anche se hanno molti più registri da settare/utilizzare per le funzionalità avanzate che offrono.

Go Up