Microcontrollori & FPGA:

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!

Microcontrollori con USB Host

Il mercato delle soluzioni tecnologiche basate su dispositivi intelligenti, quali microprocessori e microntrollori, si è arricchito, da una decina d’anni, di nuovi dispositivi hardware integrati. L’interfaccia USB, con il suo standard, rappresenta senza dubbio una grossa novità. Grazie a questa nuova tecnologia la caratteristica denominata plug&play è diventata una solida realtà. Negli anni questa tecnologia ha soppiantato i tradizionali standard seriali per l’enorme facilità di colloquiare con dispositivi periferici quali stampanti, tastiere, mouse, memorie a velocità superiori. Certamente il bus USB rappresenta una grossa novità e fornisce un seguìto commerciale non indifferente ed è altrettanto vero che la disponibilità di un USB …

Come prevenire le manomissioni dei contatori elettrici

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 …

Elettronica News Dicembre 2016

Le news di questo mese riguardano importanti aggiornamenti in vari campi dell’elettronica con una interessante acquisizione nel mercato del software EDA (Electronic Design Automation).  Intersil ha annunciato il primo controllore DC/DC bidirezionale a 6 fasi per sistemi di alimentazione a 12-48 V in ambito automotive, garantendo sensibili riduzioni delle emissioni con un deciso risparmio di carburante. La Linear Technology ha immesso sul mercato un nuovo dispositivo DC-DC sincrono buck-boost per applicazioni nei sistemi automotive, industriali, telecom e sistemi alimentati a batteria. Infineon Technologies ha annunciato aggiornamenti della famiglia di iMOTION Modular Application Design Kit (MADK) per applicazioni nel campo …

Come abilitare la ricezione degli interrupt da USART

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 …

Una tastiera LCD sulla stessa porta

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 …

Una macro per la generazione di ritardi di estrema precisione con Atmel AVR

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 …

Elettronica News Novembre 2016

Le news di questo mese riguardano importanti aggiornamenti in vari campi dell’elettronica con interessanti acquisizioni che coinvolgono Qualcomm e Murata, portando con se nuove prospettive nel mercato della comunicazione (mobile), automotive e medicale. CUI ha annunciato l’ampliamento della propria gamma di connettori USB 2.0 e 3.0 disponibili in diverse versioni. MicroEJ e Micrium Software, parte della Silicon Labs, hanno annunciato l'integrazione della piattaforma applicativa MicroEJ OS per offrire un miglior sistema di sviluppo mixed C e Java per i progettisti di software nell'ambito dei microcontrollori e microprocessori embedded. XP Power ha annunciato una nuova famiglia di alimentatori AC-DC a …

Analizzatore di spettro con dsPIC

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 …

Ottimizzazione del codice con ARM

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 …

Uso del PWM per la realizzazione di un DAC

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 …

Progettare con i microcontrollori uPSD

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 …

Regolatori boost con PIC16C78X

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à …

Tecniche hardware per la gestione del Brown-out reset sui microcontrollori di fascia medio-bassa

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 …

EOS Top12 – Settembre 2016

È 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

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 …

Ottimizzazione del codice

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 …

Applicazioni USB con PIC18Fx455/x550

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 …

Generatore di onda sinusoidale e quadra da 1Hz a 40MHz

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, …

Firmware n. 127 con RF, OTN, Qi, FPGA e molto altro!

È 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. Il download è disponibile nei formati PDF, ePub e mobi... buona lettura! La copertina di Firmware n. 127   Il sommario di Firmware n. 127   Tecniche di design per …

Conversione seriale/DMX con AVR

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 controller DMA nel Freescale MCF5213

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 …

Tool Command Language per il controllo di simulazioni HDL

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 …

PARALLAX PROPELLER: 8 microcontrollori a 32 bit in un unico package

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. …

Lo sviluppo di FPGA con Cortex-M1

ARM Cortex-M1 a 32 bit è il primo processore progettato per l'impiego in FPGA. E' stato integrato nel software di progettazione Quartus II di Altera, configurabile come un componente nello strumento SOPC Builder. SOPC Builder è incluso nel software Quartus II ed è un potente strumento di sviluppo che consente di definire e generare un system-on-a-programmable-chip (SOPC) in meno tempo rispetto all'utilizzo di metodi di integrazione manuali tradizionali. Il processore Cortex-M1 viene fornito nel tool SOPC Builder con la proprietà intellettuale (IP), per consentire agli OEM di integrarlo rapidamente con le altre componenti del sistema. Il processore Cortex-M1 beneficia …

Real time clock SPI con PIC16F628

DS1305 è un Real Time Clock con porta I2C. Ecco come utilizzarlo con un PIC16F628 e come monitorarlo attraverso una connessione seriale RS232. REAL TIME CLOCK SPI CON PIC16F628 Lo schema di figura 1 mostra la connessione tra il modulo RTC ed il   PIC, connessione effettuata mediante interfaccia SPI a tre fili. Per questa applicazione è possibile utilizzare anche un DS1306. Il PIC legge i dati dal DS1305 e li invia ad un PC attraverso una connessione RS232. La linea DTR della porta seriale è utilizzata per resettare il PIC ed avviare quindi il programma. La conversione dei livelli TTL/RS232 …