Microcontrollori PIC, microcontrollori Atmel, microcontrollori ARM, Freescale, Texas Instruments, STM, Renesas, NXP etc. A 8bit, a 16bit ed a 32bit! In questa categoria troverete progetti sui microcontrollori, firmware per programmare microcontrollori e tutorial. Ci sono anche articoli su Arduino e DSC, i microcontrollori con a bordo funzioni DSP e molto altro!
Dalla sua scoperta, l’energia elettrica si è velocemente diffusa ed imposta nella vita di tutti i giorni arrivando alla portata di tutti e sostituendo quasi completamente tutte le altre forme di energia comunemente usate, arrivando fino ai combustibili fossili usati dalle nostre automobili. L’arrivo dell’energia elettrica a casa di tutti, ha portato alla nascita di nuove problematiche e rispettive soluzioni per la produzione, la distribuzione e la regolarizzazione ed è proprio in quest’ambito che nel corso degli anni sono stati creati ed installati contatori, dai primi modelli analogici fino ai nuovissimi digitali, in modo da conoscere e misurare i consumi …
Gli AVR e la gran parte dei microcontrollori, dispongono di una caratteristica conosciuta come Interrupt. Come il nome stesso implica, l’interrupt permette agli eventi esterni (come un input da utente o dall’unità periferica dell’AVR) di bloccare il programma principale, di eseguire l’ISR (Interrupt Service Routine) e solo dopo riprendere il programma dove si era interrotto. Gli interrupt sono estremamente utili per gestire input irregolari (come il cambio di un pin) o per eseguire “background tasks” come il lampeggio di un LED nel caso di un timer overflow. Per questo esempio stiamo usando un MEGA16. Partiamo da un semplice programma per l’utilizzo dell’interfaccia per la comunicazione …
E' noto che per utilizzare un LCD, tutti i pin connessi al modulo alfanumerico devono essere impostati come uscite, mentre per il pilotaggio di una tastiera solo i pin connessi alle colonne devono essere impostati come uscita e quelli connessi alle righe devono essere ingressi. Questi ultimi devono essere connessi anche ad un pull-up resistivo che può essere costituito da resistori esterni da 10K o dal pull-up interno del microcontrollore (se disponibile). L’accorgimento per gestire entrambi i dispositivi è piuttosto elementare: durante la gestione della tastiera si mantiene a livello basso il pin Enable del modulo LCD in modo da …
La macro _Waiste_us il cui codice sorgente è riportato nel listato 1, consente di generare con precisione un ritardo da un minimo di 1000000/F_CPU (F_CPU è la frequenza in Hz a cui lavora il micro) fino ad un massimo di 25.769.803.779/F_CPU_in_MHz. ;****************************************************************************** .equ F_CPU = 3579545 ;Hz .Macro _Waiste_us ;n .set Fraction = @0*F_CPU/1000000 .set Fraction = Fraction * 100 .set Fraction = @0*F_CPU/10000 - Fraction .if Fraction >= 50 .equ Cycles_Needed = (@0 * F_CPU /1000000)+1 .endif .if Fraction < 50 .equ Cycles_Needed = (@0 * F_CPU /1000000) .endif _Cycle_Waister Cycles_Needed .endmacro .macro _Cycle_Waister .If @0 == 1 nop .EndIf …
Utilizzando un dspic 30F4013 è possibile realizzare un analizzatore di spettro con display grafico. Il codice sorgente è riportato nel listato 1 ed è scritto per il compilatore mikroPascal di mikroelektronika. Il programma usa il canale 10 per l’acquisizione del dato analogico. In figura 1 il risultato visualizzato sul display grafico. program spectrum_analyzer; uses FFTLib, BitReverseComplex, TwiddleFactors; var Samples : array[512] of word; absolute $1800; // Y data space Written : array[128] of word; freq : word; txt : string[5]; procedure InitAdc; begin ADPCFG := 0; ADCON1 := $00E0; // internal counter ends conversion ADCHS := 10; // connect RBxx/ANxx …
Il codice generato dal compilatore dipende molto dalla bontà del compilatore stesso, ma anche dal microprocessore impiegato. In questo articolo si vuole mettere in evidenza il codice generato da ARM ricorrendo ai due diversi operatori incrementali e decrementali. In ogni caso, per le nostre valutazioni ci siamo basati sull’ambiente cross arm-elf-gcc, nella versione 2.95.2. Questa distribuzione utilizza l’ambiente di lavoro GNU C compiler, gcc, ed è liberamente disponibile. In ogni caso, le considerazioni che seguono valgono indipendentemente dall’ambiente di cross-compilazione. Cicli con operatori incrementali Il listato 1 mostra un esempio di una routine scritta in C che incrementa una variabile locale con il contenuto di un array, di 128 …
PWM è l’acronimo dei termini inglesi Pulse Width Modulation, modulazione della larghezza dell’impulso. Si tratta di una tecnica che consente di variare la potenza applicata ad un carico, mantenendo costante l’ampiezza della tensione erogata sull’utilizzatore e “variando” la durata degli impulsi applicati al carico stesso. Il carico viene quindi sottoposto ad un treno di impulsi, opportunamente calibrato e calcolato. È indubbiamente un metodo piuttosto complicato, ma permette di ridurre al minimo la dissipazione di eventuali transistor di potenza utilizzati, in quanto vengono utilizzati come semplici interruttori e non da regolatori di corrente. Definendo opportunamente la larghezza degli impulsi è possibile ottenere …
I microcontrollori uPSD della ST microelectronics sono una delle innumerevoli varianti realizzate su core 8051 ed immesse sul mercato molti anni fa. In questo caso ST ha integrato in un unico package il core 8051 e una periferica PSD. Unendo questi due componenti ha ottenuto dei dispositivi che integrano in un package QFP due memorie flash una memoria ram e due PLD. La doppia flash semplifica anche la realizzazione di un driver IAP (In Application Programming) per l’aggiornamento del firmware applicativo. Verranno inizialmente presentate le caratteristiche dei diversi moduli del uPSD, successivamente si esamineranno i software per la loro …
In questo articolo si introdurrà il concetto di regolatore boost operante in modalità discontinua, implementato tramite microcontrollore PIC16C78X. In particolare, si realizzerà un elevatore di tensione da 9VDC a 170VDC. Tale valore è perfetto per fornire potenza, ad esempio, ad un tubo Nixie a tre cifre. Si tratta di un componente elettronico nato nella metà del ventesimo secolo ed usato per visualizzare informazioni digitali. Ovviamente, tale dispositivo risulta oggi obsoleto, poiché sostituito dai più efficienti display LED ed LCD, ma costituisce un ottimo banco di prova per un regolatore boost. Si esamineranno quindi le formule di progetto e si comprenderà …
In un qualsiasi microcontrollore la tensione di alimentazione deve essere stabile e costante entro i limiti specificati dal costruttore. Se l’alimentazione scende al di sotto di un valore di soglia minimo, le istruzioni non vengono eseguite correttamente ed i registri interni del micro possono perdere la loro consistenza. Per prevenire questo inconveniente la maggior parte dei microcontrollori prevede un ingresso di reset che può arrestare l’esecuzione del programma per poi riprenderla successivamente garantendo la consistenza del contenuto dei registri. Per il controllo del livello della tensione di alimentazione ed il conseguente pilotaggio del pin di reset, esistono delle tecniche circuitali …
È online EOS Top12 di settembre la nostra raccolta dedicata all'Elettronica e alla Tecnologia! Nel numero di questo mese troverete molti articoli e progetti interessanti: Flip & Click, un'innovativa scheda per la prototipazione rapida compatibile con Arduino e programmabile in Python; come prevenire i terremoti; controllare i droni attraverso la mente; un alimentatore da laboratorio regolabile 45 W; i valori della ricerca tecnologica, ingegneri VS scienziati; getting started con Flip & Click; MEMS; cucinare gli arrosticini con Flip & Click; indirizzamento per la gestione dei sistemi di alimentazione; convertitori DC-DC per applicazioni railway; applicazioni USB con PIC18Fx455/x550; il controller …
Come allestire un framework per consentire l’esecuzione di più task in parallelo su un PIC16F877 Disporre di uno scheduler per un PIC16F877 è sicuramente utile in quanto rende possibile l’esecuzione di più tasks in parallelo ottimizzando così le performance del micro. L’approccio, implementato nel listato 1, è il seguente: Inizializzazione di TIMER1 per generare un interrupt ogni milli-secondo; ad ogni interrupt vengono aggiornate alcune variabili gestibili anche dal programma principale per determinare gli intervalli di esecuzione delle applicazioni. Il listato 1 consente di eseguire task ad intervalli multipli di 1ms, 10ms, 100ms o 1 secondo. Nel programma principale vengono conteggiati i …
Microcontrollori PIC e compilatori C di Hi-Tech: come ottimizzare il codice per massimizzare la velocità di esecuzione in applicazioni embedded. Come effettuare una conversione RS232/DMX con AVR. Suggerimenti generici Spesso, nelle applicazioni embedded, è necessario ottimizzare il codice per ottenere le massime prestazioni in termini di velocità di esecuzione. Una delle cause di rallentamento nell’esecuzione del codice usando microcontrollori PIC, è la commutazione dei banchi di memoria. In fase di inizializzazione è buona norma dunque inizializzare prima le variabili e i registri nel banco 0, quindi quelli del banco 1 e così via. Ecco di seguito altri suggerimenti utili: Nelle espressioni …
Lo sviluppo di sistemi embedded basati sul protocollo di comunicazione USB sono sempre più diffusi e tendono a soppiantare altri tipi di comunicazioni come quella seriale. A differenza di quest’ultima, la trasmissione dati tramite l’Universal Serial Bus può essere abbastanza difficoltosa per il progettista che voglia sviluppare da zero l’intero protocollo. Le specifiche USB 2.0 sono, infatti, un documento di oltre 650 pagine. Fortunatamente molti produttori di microcontrollori hanno cercato di facilitare il lavoro del progettista, realizzando dispositivi che gestiscono interamente il protocollo USB, rendendolo molto semplice ed intuitivo nell’uso, come fosse una semplice interfaccia seriale. Un modo per …
Costruiamo un generatore di onda sinusoidale e quadra con sintesi digitale e frequenza da 1 Hz fino a 40MHz con il modulo AD9850, un microcontrollore PIC e un encoder. Con pochi componenti si può realizzare senza troppe difficoltà un generatore che può essere molto utile sia per arricchire la strumentazione di un appassionato di elettronica sia per il radioamatore, infatti, la frequenza generata ha la stabilità e l’accuratezza tipica di un oscillatore a quarzo e può essere usata anche in un apparato radio come VFO (Variable Frequency Oscillator). Da una descrizione teorica del funzionamento della sintesi digitale DDS usata nel chip AD9850, …
È uscito il nuovo numero di Firmware! Scopriamo insieme gli articoli di questo mese: innanzitutto la copertina è dedicata alle tecniche di design per ridurre l’esposizione RF negli smartphone. Abbiamo poi proseguito con: standard OTN (Optical Transport Network); Tool Command Language per il controllo di simulazioni HDL; Qi, uno standard per il trasferimento di potenza wireless; Intel e Altera, le ragioni di una acquisizione; FPGA con Cortex-M1; interfacciamento uomo-macchina. Buona lettura! La copertina di Firmware n. 127 Il sommario di Firmware n. 127 Tecniche di design per ridurre l’esposizione RF negli smartphone Lo standard OTN (Optical Transport …
CONVERSIONE SERIALE/DMX CON AVR Ecco come realizzare un convertitore da seriale verso il protocollo DMX tipicamente usato nel campo del controllo dei sistemi di illuminazione. L’hardware è piuttosto semplice: un AVR (90S2313) il cui UART (PD0 e PD1) sono connessi ad un MAX232, mentre il PB0 connesso ad un MAX485. Il sistema funziona con un cristallo da 4MHz e l’UART dovrà essere impostato su 19200bps, 8 bit dati, 1 stop bit e nessuna parità. Connettendo il sistema ad un PC via RS232 il protocollo di comunicazione consiste nei seguenti passi: Il PC invia all’AVR il byte 0xFF (comando START); Quindi viene …
Il microcontrollore Freescale (ora NXP) MCF5213 è dotato di un controller DMA a 4 canali per velocizzare le operazioni di accesso diretto alla memoria. MCF5213 rappresenta una famiglia di microcontrollori a 32 bit ad alta integrazione basata su un'architettura ColdFire e core V2 di Freescale Semiconductor (ora NXP). Ecco una descrizione dettagliata del modulo con i relativi segnali, registri e modalità di trasferimento dati. Introduzione I micro di questa famiglia dispongono di SRAM interna fino a 32KB e 256 KB di memoria Flash oltre a quattro timer a 32 bit in grado di inoltrare richieste in DMA, un controller DMA a …
Come molte altre attività di un comune flusso di sviluppo HW o SW, anche la simulazione di un circuito HDL può essere condotta sia tramite approcci più manuali, che richiedono il costante controllo da parte dell’operatore, sia tramite approcci più automatici, basati su strumenti che minimizzano la necessità di intervento umano e comportano molti altri vantaggi. Controllare una simulazione HDL tramite script vuol dire, infatti, poterla lanciare in qualunque momento senza costi che non siano il tempo macchina, poter documentare in un formato univoco ed eseguibile la sequenza di operazioni che descrive il test e poterne quindi tracciare eventuali …
Il multicontrollore Propeller è un dispositivo della Parallax inc. contenente otto processori RISC a 32 bit e può gestire direttamente un’uscita video VGA, videocomposito, una tastiera, un mouse. Ben otto processori RISC a 32 bit indipendenti, tutti uguali, sincronizzati dallo stesso clock che può arrivare alla frequenza massima di 80MHz. Gli otto processori, chiamati COG, condividono le risorse comuni del Propeller quali registri di I/O e timer, mentre l’accesso alla memoria RAM/ROM avviene tramite un HUB che sincronizza le richieste dei singoli COG. Per questo motivo, per definire il Propeller, è più appropriato il termine multicontrollore. Introduzione I vantaggi di questa architettura sono molteplici. …