Home Forum MICROCONTROLLORI Simulatore per atmega328

Questo argomento contiene 18 risposte, ha 8 partecipanti, ed è stato aggiornato da  Antonio Mangiardi 3 anni, 7 mesi fa.

Stai vedendo 15 articoli - dal 1 a 15 (di 19 totali)
  • Autore
    Articoli
  • #57396

    Vicus
    Membro

    Salve, mi stavo chiedendo se esista un simulatore per provare i programmi una volta scritti. In particolare a me interessa molto la parte riguardante i registri e le periferiche ovvero tutti quegli aspetti che difficilmente o solo con estenuanti test si psso fare un un micro vero. Nei datasheet si trova quasi ma è quel quasi che molto spesso da fastidio, per esempio mi è capitato di dover usare il timer1 che ricordo essere a 16bit con la funzione capture mode e di dover quindi settare i registri che non sono pochi e di non sapere quando esattamente il timer sapebbe partito o le funzioni attivate. Con un simulatore invece riuscirei asapere esattamente quello che succede e in questo modo capire se una assegnazione ad un rigistro sia meglio farla prima o dopo un altra. Parlando di micro così semplici non dovrebbe essere difficile poi essendo molto diffuso tra le comunità di appasssionati mi son stupito non esista già. L’unica cosa un tantino complicata sarebbe far interagire il programma con gli ingressi.

    Per caso esiste un qualcosa che simuli l’esecuzione di un programma?
    Grazie.

    #68521

    Alex87ai
    Membro

    Allora, ti rispondo subito…di software che fanno ciò che chiedi ce ne sono, purtroppo a pagamento nelle versioni full però è sempre possibile prenderne visione scaricando le relative versioni demo o trial. Detto ciò, passo ad indicartene essenzialmente due e che sono “Proteus” della Labcenter e “Virtualbreadboard” che ti permettono di fare una simulazione in tempo reale del codice scritto per il tuo micro e in più ti danno la possibilità di impostare breackpoint nel codice e di visionare variabili e registri come se stessi utilizzando una vera e propria funzione di debug del codice, fatto però su un hardware non fisico ma simulato. Il forte di questi software sta proprio nella possibilità di simulare l’hardware e di testarne il funzionamento tramite strumenti virtuali come oscilloscopio, generatore di funzioni, generatore di pattern, voltmetro, amperometro, frequenzimetro, analizzatore di spettro e tutto ciò che si può trovare in un laboratorio di un professionista elettronico. Utilizzarli è davvero un gioco da ragazzi e se VirtualBreadBoard” nasce come software solamente di simulazione del circuito (al massimo hai il 3D dei componenti montati sulla breadboard virtuale appunto), Proteus nasce al contrario come software completo di CAD/CAE, cioè lo schematico che realizzi e simuli può essere trasformato in PCB tramite un tool dedicato, e il tutto nella maniera più professionale possibile. Quindi con Labcenter Proteus disegni lo schematico, lo simuli osservando tutte le grandezze che ti pare, compresi registri, variabili, memoria programma e memoria dati dei tuoi microcontrollori (tratti da un’ampia libreria di componenti) e poi passi alla realizzazione del PCB e relativa esportazione dei file Gerber utili per la fresatura dello stampato…Più di così penso che un software di progettazione elettronica non possa darti. Ultimo dettaglio sempre relativo a Proteus è la possibilità di vedere in 3D lo stampato completo di componenti.
    Come avrai ben capito, tra i due software che ti ho citato privilegio molto di più Proteus perché è quello che adopero maggiormente reputandolo uno strumento professionale senza che questo sia sinonimo di complessità di utilizzo. Al contrario, VirtualBreadBoard è più un software didattico e proprio in virtù di questo ha nelle sue librerie di componenti anche la scheda Arduino, tanto conosciuta in tutto il mondo come il primo progetto Open Source che sia riuscito ad entrare nel cuore di progettisti, hobbisti, designer. La scheda Arduino2009 monta proprio i microcontrollore da te citato e con la sua versione virtuale è possibile interagire in modalità debug come precedentemente ho descritto oppure tramite un editr di testo che interfacciandosi al compilatore C dei micro Atmel permette scrivere e verificare il codice all’interno di un unico ambiente, quello di VirtualBreadBoard appunto.
    Esisterebbe un altro strumento software simile a quelli che ti ho già descritto, si chiama “Tina” della “DesignSoft” ma l’ho provato una volta nella versione demo e sia come grafica che come interfaccia per la simulazione e l’interazione con lo schematico non mi è piaciuto granchè. Certamente molto meglio Proteus da questo punto di vista.
    Spero che sia stato esauriente ma provare certi software è molto meglio che leggerne la recensione…!! Però nell’eventualità in cui non li conoscessi, ti ho fatto una panoramica di ciò che è disponibile sul mercato! ;)

    #68522

    MikiTux
    Membro

    Premesso che il mio sito – alias http://elettrolinux.com – al momento è ancora altamente incompleto (mancano veramente un centinaio di altri programmi, tra open source, free e commerciali da inserire nelle diverse categorie nonché i pacchetti nel repositorio, almeno per chi come il sottoscritto utilizza Slackware da un decennio come distribuzione GNU/Linux) potrei suggerirti di darci almeno un’occhiata.

    Previsto nelle prossime settimane un forum dedicato e un blog associato.

    Bye 8-)

    #68523

    Emanuele
    Keymaster

    Utilizzando AVRStudio, download gratuito dal sito Atmel, puoi smulare il microcontrollore. In particolare è utile per tutte quelle routine matematiche e di temporizzazione, ma anche per simulare il flusso di programma.

    Per quanto riguarda l’interazione del simulatore con l’esterno, gli I/O virtuali appunto, posso darti la mia esperienza con Microchip Mplab.
    Si possono creare degli “stimoli” simulando gli ingressi esterni ed anche alcuni protocolli, come la seriale RS232!

    Per AVRstudio, pur avendoci lavorato in alcuni progetti, non ho mai usato il simulatore, e nemmeno gli “stimulus”.
    Ma ci sono e… se li usi, ricordati di postare qui la tua esperienza.

    #68527

    Alex87ai
    Membro

    Per MikiTux…ho navigato un pò nel tuo sito e devo dire che è un ottimo riferimento per programmi e applicativi di elettronica che girano sotto Linux…devo dire però che dei programmi che utilizzo sotto windows, come ad esempio proteus che ho citato precedentemente, non c’è una degna corrispondenza software che giri in piena compatibiltà con linux, e quindi sarei costretto a mantenere due sistemi operativi sulla stessa macchina o più agevolmente creare una macchina virtuale per far girare windows e relativi software direttamente su linux…comunque, se la tua missione di creare una lista aggiornata di applicazioni linuxiane andrà avanti, sarò tra quelli che seguirà assiduamente il tuo sito! ;)

    #68529

    fra83
    Membro

    Condivido in pieno quanto detto da Alex87ai, io uso Proteus da un po’ con i PIC della Microchip, ci sono essenzialmente due modalità:
    – puoi inserire nel micro che hai nello schematico il file compilato .hex o . cof e far partire la simulazione
    -oppure puoi impostare proteus come debugger nell’ambiente IDE relativo al tuo micro, la Microchip permette questo, l’Atmel non lo so’

    La cosa interessante di proteus sono gli strumenti virtuali come oscilloscopio multitraccia e 3 validi analizzatori di protocollo seriale: rs232, I2c e SPI.

    Spero di esservi stato utile

    #68530

    Emanuele
    Keymaster

    Allergia da simulazione, dipendenza da emulazione!

    Personalmente non ho mai amato i simulatori, li ho usati solo alcune volte per testare delle routine RS232 o per verificare dei tempi (timer e cicli macchina). Niente di più.

    Quello che amo invece è testare direttamente l’applicazione. Incircuit debugger, poi che sia jtag o altro è uguale, l’importante è poter “vedere” direttamente le conseguenze del proprio assembler (o C) sulla scheda definitiva (o prototipo).

    Certo un minimo di simulazione a volte serve, soprattuto mentre si aspetta chi realizza i circuiti stampati, ma appena il prototipo è pronto, via, si va subito in emulazione/debugger. Addirittura, mi sono trovato spesso a scrivere grandi quantità di codice (parlo in assembler) direttamente con l’in-circuit collegato e quindi verificare subito le routine ed il programma.

    I simulatori li ho sempre visti utili più in un’ottica educational. Anche con Proteus, ho “giocato” anni fa, con una versione demo, ma non lo mai usato professionalmente…

    Come dicevo sopra:
    allergia da simulazione e dipendenza da emulazione OPPURE
    anche voi fate cosi?

    #68533

    MikiTux
    Membro

    Devo dire che Proteus, insieme ad un altro paio di software house (una delle quali proprio per i PIC), sono tra le poche che ancora non hanno software decente (o non lo hanno per nulla) per GNU/Linux.

    Oramai i maggiori produttori quali, Altera, Freescale, embeddedARM, Matlab-Simulink, NI con LabvieW e molte altre hanno i rispettivi software anche per GNU/Linux. Ultimamente si è aggiunta anche la ST con una distribuzione dedicata! ^_^
    Per ATMEL c’è AVRSTudio così come ti è stato suggerito qualche post più sopra e presente nel mio sito oramai da due anni:

    http://elettrolinux.com/Integrated-Development-Environment/avr32-studio-ide-for-developing-avr32-applications.html

    E proprio riguardo al mio sito, l’obiettivo è riportare tutti i software (e anche pacchettizzarli per la distribuzione Slackware, che uso da un decennio :-) ) che interessano i settori dell’Elettronica&C e tutto ciò che ci ruota attorno: quindi simulatori, CAS, T-CAD/CAM etc ma anche link a progetti (open HW&SW) esterni and so on.

    Prossimamente ci sarà anche un blog (in Italiano e Inglese) e un Forum. :-) …tempo permettendo, considerando che sono solo io a lavorarci sopra, in poco più di due anni sta uscendo un bel sito …sito che sarà soggetto a restyling nelle prossime settimane con il passaggio a Joomla! 1.6.

    Bye 8-)

    #68534

    Vicus
    Membro

    Ma a volte la simulazione conviene. Nel mio caso specifico i vantaggi sono molti e a volte è l’unico modo che avrei per testare determinate cose. Sono semplicemente un appassionato anche se alla fine, una volta completato il progetto tenterei lo stesso di guadagnarci qualcosa, non dispongo di un laboratorio attrezzatissimo. Giusto quei due tre strumenti per fare misure e prototipi semplici. Io vorrei usare un atmega328 che non ha jtag e inoltre vorrei evitare di scrivere il doppio del codice solo per inserire righe di debug che ti possono aiutare ma a volte no. Per l’applicazione che sto sviluppando è assolutamente necessario che determinate tempistiche siano rispettate, è in pratica una applicazione in realtime che lavorando a diversi cicli per secondo e senza nemmeno un oscilloscopio è difficile determinare se certi eventi siano generati nel modo corretto. Un altro indiscutibile vantaggio è quello del tempo perché oltre ad evitare come già detto di scrivere molte righe di codice inutilmente risparmi nel tempo di riscrivere la flash che ha pure un numero di riscritture limitato anche se alto. Con un simulatore che poi verrebbe usato più che altro come debugger puoi eseguire una riga di codice alla volta e verificare per esempio che non vi siano richieste di interrupt sovrapposte o cose del genere. Un altro vantaggio risiede nella possibilità di generare ingressi specifici come per esempio una comunicazione seriale, un segnale analogico o altro che senza gli strumenti adatti non si riuscirebbero a fare. Peccato che come sempre e come è lecito che sia la maggior parte di questi strumenti sono a pagamento ed uno come me non ne possa usufruire. Anche se qualcosa si sta muovendo: per esempio la Linear distribuisce gratuitamente un simulatore di circuiti elettronici con cui si riesce a fare cose interessanti. Non esiste una versione nativa per sistemi gnu/linux però con wine non da problemi. Grazie a MikiTux ho dato una occhiata anche se rapida a avr32 studio e mi pare un software che sviluppato appositamente per micro a 32 bit. Mentre avr studio che va bene a anche per quelli a 8 bit no. Grazie a tutti comunque per i consigli, son sicuro che se avrò ancora bisogno potrò chiedere qui il vostro aiuto.

    #68536

    linus
    Membro

    secondo me servono proprio per testare i proprio programmi e fare una prima fase di debug del programma scritto, inoltre servono per ottimizzare il proprio programma facendo eseguire alcune routine prima di altre o viceversa. Fra l’altro, vedi Multisim si è evoluto in tutti questi anni permettendo una simulazione più vicina alla realtà, negli ultimi hanno messo anche le foto della strumentazione di misura, tante che anche la National distribuisce un proprio software di emulazione dei circuiti, ciò è un bene nel campo open source poichè porta molti appassionati ad avvicinarsi concretamente allo sviluppo di circuiti elettronici, comprendendo le reazioni dei vari componenti nel proprio circuito. Per questi motivi sono propenso ad utilizzare i PIC della Microchips, poichè non sempre ognuno di noi ha le qualità di buon programmatore e/o buon progettista di circuiti elettronici. Tra le altre cose, ciò ti permette di ridurre i tempi di progettazione e realizzazione del circuito.

    #68537

    Alex87ai
    Membro

    Abbiamo dimenticato però di citare forse la vera chicca di Proteus: la possibilità di simulare hardware connesso alla porta USB e analizzarne il comportamento con tanto di Usb Virtual Analyzer. Praticamente è un coonettore Usb virutale (al quale però corrispondono i vari footprint per l’esportazione dello schematico su PCB) che in fase di simulazione permette di connettere, ad esempio, un PIC18F2550 alla porta USB e di analizzare il flusso del descrittore implementato…se non è stupefacente questo non so cosa possa esserlo…Io ad esempio ho avuto modo di realizzare interfacce Usb proprio con i microcontrollori PIC e di doverne testare il firmware in tempo reale, al fine di capire se, almeno a livello behaviural (comportamentale), il circuito facesse ciò che mi aspettavo. Poi ho realizzavo in VisualC l’interfaccia grafica per stimolare da PC l’accensione o lo spegnimento di carichi connessi alle schede o per monitorare lo stato degli ingressi, sia digitali che analogici convertiti. La risposta al controllo è rapidissima ed è come stare a lavorare con l’hardware montato fisicamente. Proteus è pubblicizzato ormai su tutte le riviste di elettronica italiane e straniere (io ad esempio l’ho scoperto leggendo uno spazio pubblicitario sulla rivista EPE magazine) come software di progettazione e simulazione professionale e all’avanguardia, e non possiamo prenderla come unica propaganda pubblicitaria perchè i meriti per poter essere classificato come software di alta fascia ce li ha tutti.
    Altra feature molto interessante (che non so se hai avuto modo di testare) è la possibilità di simulare il componente ENC28j60 sfruttando la porta ethernet del proprio PC: si inserisce nello schematico l’ENC28j60 (opportunamente connesso ad un microcontrollore su cui gira lo stack protocollare TCP/IP, ovviamente) e si da in run la simulazione. Se all’interno del nostro microcontrollore gira un web server o la gestione per un server ftp, connettendo il pc ad un router tramite cavo ethernet e richiamando l’indirizzo IP del server dal browser di un altro computer sempre connesso alla stessa rete (ovviamente), si riesce a visualizzare il contenuto della pagina web potendo quindi constatare l’effettiva funzionalità del firmware. L’unica cosa che ho notato nell’utilizzare questo componente è che l’interagibilità con l’esterno è un po’ lenta rispetto alla realizzazione hardware reale, ma non così tanto da cestinare l’idea di adoperare Proteus anche per simulare applicazioni monitorate o gestite tramite pagine web.
    Poi non possiamo dimenticare tutti i componenti speciali come le schede SD, i display LCD grafici simulati egregiamente (alcuni con tanto di touch screen perfettamente funzionante in fase di simulazione) e addirittura ho trovato su internet il modello del display grafico del nokia 3310, ultimamente tanto recuperato ed utilizzato in progetti molto interessanti come un mini oscilloscopio digitale oppure un piccolo analizzatori di spettro audio (su Youtube di video che mostrano applicazioni di questo genere ce ne sono abbastanza, come anche risulta abbondante la documentazione e i progetti presenti in rete).
    Insomma, neanche fossi un promoter del software Proteus, ma se lo pubblicizzo con tanta enfasi è perché molto probabilmente mi sono trovato così bene nell’utilizzarlo che molto probabilmente con potrei più farne a meno…è completo, versatile, semplice da imparare ed apprezzare…ho detto tutto…davvero un ottimo prodotto! ;)

    #68538

    Alex87ai
    Membro

    Continua così perchè devo dire che già adesso mi è sembrato davvero un ottimo lavoro e ben organizzato…è importante avere sotto mano un riferimento dove recuperare risorse, in questo caso software di elettronica che girano sotto linux…Hai visto il grande successo riscosso da Elettronica Open Source, il primo polo informativo italiano utile a tutti gli appassionati di elettronica e tecnologia…andando avanti così, e supportato da qualche collaboratore, può diventare un progetto dalle dimensioni impensabili….:)… Tornando al discorso Linux vs Windows, non ti nascondo che ho provato più volte a svincolarmi da Windows e passare totalmente alle distribuzioni Linux, ma mi è sempre stato impossibile poiché, come si è già detto in precedenza, ci software house che ancora si ostinano a far crescere le loro radici nel terreno Linuxiano, e siccome a mio avviso quelli da loro prodotti sono software di supporto alla progettazione davvero potenti a dei quali un progettista elettronico non ne può fare a meno, allora non si può fare a meno neanche di Windows, purtroppo…non mi prolungo oltre sul perché del mio precedente “purtroppo”…penso che le motivazioni siano più note a te che a me…;) A presto e buon lavoro con il sito, sono sicuro che saprai stupirci con effetti speciali…:)

    #68539

    Alex87ai
    Membro

    Io ho utilizzato tantissimo Multisim durante gli ultimi 3 anni frequentati all’ITIS e allora era della WorkBenck e non era ancora stata assorbita dalla National. Le prime vesioni non supportavano però la cosimulazione di microcontrollori, quindi gli strumenti a cui si faceva ricorso per la realizzazione di progetti con i PIC, ad esempio, erano MPSIM di MPLAB oppure i simulatori della Oshonsoftware, quest’ultimi funzionanti ma troppo lenti nel debuggare codici troppo lunghi…non so se con le ultime versioni qualcosa sia cambiato, non li provo da allora…Multisim però lo vedo ancora un pò troppo povero dal punto di vista della simulazione con i microcontrollori (se non erro simula solo il PIC16F84 e nient’altro…è più uno strumento di carattere didattico sotto questo aspetto…mentre per la simulazione di circuiti di altro genere, devo ammettere che ha una sua professioanlità…Rispetto a Proteus non ci sono proprio paragoni…sempre meglio Proteus!! ;) (tra l’altro la licenza di Proteus dovrebbe essere pure più economuica rispetto a quella di Multisim)

    #68546

    pinkchow
    Membro

    Io sinceramente sono propensa alla crescita e all’utilizzo massivo di software di simulazione elettronica, soprattutto quando si ha a che fare con circuiti comprendenti microcontrollori su cui gira del firmware che si vuole testare pur non disponendo dell’hardware reale definitivo. Nell’ambito di ricerca e sviluppo, le simulazioni preventive di un sistema o di un hardware (nel caso dell’elettronica) sono i primi passi per la progettazione. È ovvio che ciò che va in simulazione non è detto che parimenti vada anche nella realtà, perché possono sussistere tanti di quegli effetti parassiti o indesiderati che il simulatore non considera minimamente ma che ci sono e che possono seriamente pregiudicare il corretto funzionamento del nostro circuito rispetto a quanto atteso. Quindi, dal punto di vista della garanzia di funzionamento del circuito, emulare è molto più costruttivo che simulare e su questo non posso darti torto. Però se ci pensi bene, parte del merito della riduzione del time to market che coinvolge un nuovo progetto è proprio da riconoscere ai software di simulazione che in maniera interattiva e anche abbastanza elegante danno i primi risultati, anche se approssimati, per procedere con le fasi successive di progetto. Pensa ad esempio alla progettazione su FPGA, oppure meglio ancora alla progettazione di ASIC (in ambiti di ricerca universitaria, ad esempio)…la prima fase è proprio quella di darne una descrizione logica e comportamentale dalla quale ricavare informazioni circa la correttezza dell’algoritmo implementato tramite proprio delle simulazioni (pensa ad esempio alla progettazione di un ALU di cui se ne descrive l’hardware in linguaggio VHDL)…successivamente, le fasi di progetto prevedono il piazzamento delle varie celle standard o addirittura dei singoli transistori e subito dopo aver definito la fase di place, si passa a quella di route nella quale si creano le connessioni fisiche e ancora una volta, tramite simulazioni, si estraggono i parassiti e se ne fa un’analisi circuitale tenendo conto anche di questi effetti che teoricamente, sulla carta, non compaiono ma che sappiamo bene essere reali ed esistenti. Quindi, in definitiva, tutte le fasi di progetto di un ASIC sono accompagnate da simulazioni, anche perché fino a quando non si inviano le maschere alla foundry e non si riceve il circuito integrato dopo mesi e mesi di attesa, di hardware sotto mano non si ha niente.Diciamo che forse l’esempio dell’ASIC rappresenta un po’ il limite estremo dell’utilità di un sistema software di simulazione, però se consideri che l’affidabilità di progetti anche di milioni di dollari (le maschere non sono per niente economiche, come pure il processo fotolitografico adottato per ricreare il layout sul die di silicio) è lasciata totalmente ad un processo di progettazione completamente di carattere simulativo, allora perché per i sistemi embedded che vedono l’utilizzo di microcontrollori non diamo la giusta fiducia ai software di simulazione? Dal punto di vista dei modelli, col passare degli anni, tali software tendono a migliorarsi via via sempre più, forse anche grazie alla concorrenza instaurata tra le varie software house…Aumentano le features e con queste anche le possibilità di simulare circuiti sempre più complessi senza per questo, a mio avviso, perdere in affidabilità e attendibilità…io ho detta la mia! Voi la pensate allo stesso modo?

    #68550

    MikiTux
    Membro

    E’ vero che i software per la simulazione tipo Proteus&C sono di una “certa proporzione”, ma sono anche costosi e allora vien da chiedere: quanti di voi li hanno regolarmente acquistati con la licenza?

    In più c’è da tener in considerazione un altro fattore: si acquista un programma di quelle proporzioni, ma quanti saranno in grado nel loro lavoro o hobby di sfruttarlo a fondo?

    Per fare un parallelismo è come avere un editor di testi/documenti quale può essere Microsoft Word però, a parte gli scrittori e/o simili, chi lo usa veramente in tutte le sue peculiarità? …ipotizzando che usiate per i documenti programmi come Word (ad esempio io uso TeX/LateX, il paradigma WYSIWYG – What You See Is What You Get – a me non è mai piaciuto, preferisco il WYSIWYM – What You See Is What You Mean) al massimo lo utilizzate in un 5%10% delle sue potenzialità …quindi questa rincorsa al programma che fa di tutto e di più la trovo poco pratica.

    Inoltre: vi ricordo che questi simulatori, andando a stringere, hanno in più la loro interfaccia grafica e basta. Il “motore” rimane sempre un like-Spice (più o meno proprietario e comunque derivato dallo storico Spice della Berkeley).

    Bye 8-)

Stai vedendo 15 articoli - dal 1 a 15 (di 19 totali)

Devi aver eseguito l’accesso per poter rispondere a questa discussione.