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!

Gestione interrupt del TMR0 e PIC16F84

Un esempio di uso e gestione del timer0 per la realizzazione di un controllore di impulsi. Il listato1 mostra l’utilizzo dell’interrupt del TMR0 per il conteggio di impulsi “squadrati”: il programma è costituito da: una fase di acquisizione degli impulsi, una di conversione del numero binario in una forma adatta alla visualizzazione (sui tre display a sette segmenti) e una fase di visualizzazione. Il numero decimale corrispondente al numero degli impulsi si suppone a tre cifre e il codice binario di ognuna di queste viene salvato in tre registri (UNI, DECI, CENTI); tale codice viene sommato al Program Counter per ottenere, da una tabella,  il codice per il display. La fase di acquisizione mostra l’uso dell’interrupt del …

La distorsione armonica nei data converters

L’interpretazione del segnale prodotto da un data-converter (numerico o analogico a seconda che si tratti di un ADC o di un DAC) può risultare talvolta complicata dalla presenza di una serie di disturbi di entità quasi confrontabile con quella del segnale utile e sovrapposti ad esso. Uno dei fenomeni in grado in determinare tali disturbi è la distorsione armonica, dovuta agli ineliminabili effetti di non linearità introdotti da qualunque circuito analogico subito a monte dell’ADC o subito a valle del DAC. In questo articolo, discutiamo il problema della distorsione armonica nei data-converters: per ciascuno dei casi A/D e D/A, …

Interfaccia smartcard nell’ST7SCR microcontrollore di ST

Il microcontrollore ST7SCR di ST Microelectronics è dotato di un'interfaccia per smartcard e in questo articolo faremo una descrizione dettagliata del suo funzionamento e dei registri coinvolti per poterla utilizzare al meglio. I dispositivi ST7SCR e ST7FSCR sono membri della famiglia di microcontrollori ST7 progettati per applicazioni USB. Tutti i dispositivi sono basati su un common standard di settore Core 8-bit, con un set di istruzioni ampliate. Architettura L’interfaccia smartcard (CRD) del micro ST7SRC è elettricamente compatibile e certificata con gli standards ISO7816, EMV, GSM, WHQL e supporta smartcard tipo memory cards e microprocessor cards. In figura 1 lo schema …

Gestione Timer/Counter su AVR

Affinché si possa generare un RTC è necessario un elemento di sincronizzazione per il tempo. Per tale scopo, è possibile usare uno dei Timer/Counter presenti nell’AVR che, nel caso del TTiny13, è unico e identificato come Timer/Counter0. Questo contatore può essere pilotato mediante un prescaler: cambiando il valore del prescaler si possono ottenere incrementi del contatore ad ogni ciclo di clock del sistema, ogni 8 cicli, ogni 64 e così via, fino a un massimo di un incremento ogni 1024 cicli. Per ottenere l’RTC il contatore viene incrementato dal timer/counter clock che a sua volta è stato inizialmente generato dal clock di sistema. I due segnali di clock vengono divisi per opportuni fattori mediante un prescaler. In …

Traslazione dei livelli logici

All’inizio dell’era digitale, la logica TTL e quella CMOS a 5 Volt erano le più diffuse. Tutti i dispositivi adottavano questi due standard e la realizzazione dei circuiti, uniti alla questione dell’interfacciamento,  non comportava alcun problema. Anzi, la semplicità e soprattutto  la tipologia di logica positiva prevista (0 Volt per L e 5 Volt per H) consentivano di collegare direttamente le varie porte, senza prevedere alcun tipo di adattamento. Con lo svilupparsi dei metodi  di integrazione, del risparmio energetico e della velocità dei dispositivi, inevitabilmente anche i livelli logici previsti da questi, hanno subito modifiche sostanziali, soprattutto  per ciò che concerne …

CRC su USB e algoritmo di SWAP in C

La specifica USB utilizza il classico CRC (Cyclic Redundancy Checksums) per garantire l’integrità dei pacchetti dagli errori di trasmissione. I pacchetti previsti dallo standard USB sono quattro: token, data, handshake e special. Ogni pacchetto è diviso in campi di 8 bit (o multipli di 8) ciascuno. I bit sono inviati sul bus dal bit meno significativo al più significativo. La specifica USB utilizza due polinomi differenti per il calcolo del CRC: uno per i token e l’altro per i dati. La tabella 1 pone in evidenza i vari pacchetti in relazione ai gruppi presenti nella specifica. Implementazione CRC per USb Il generatore  utilizzato  per i token deve essere conforme al polinomio: X5 + …

Scheda di controllo remoto ad infrarossi con protocollo RC5 e microcontrollore PIC

In questo articolo vedremo come sarà possibile comandare mediante un telecomando ad infrarossi con il supporto del protocollo Philips RC5, uno o più carichi a distanza. Inizieremo con l'analisi del protocollo per poi passare allo sviluppo di una scheda madre con a bordo un PIC 16F876 che si occuperà della decodifica del segnale e del controllo dei pin d'uscita in funzione del pulsante premuto. Nell'articolo successivo invece, analizzeremo lo sviluppo di una scheda di interfaccia con a bordo dei TRIAC, la quale collegata alla scheda "Main Board" di cui parleremo oggi, consentirà il controllo a distanza di carichi a 220 Volt. Il …

Algoritmo di controllo dell’oscillatore DCO per microcontrollore MSP430

Un algoritmo di controllo e regolazione dell’oscillatore interno DCO del microcontrollore Texas Instruments MSP430: le sue prestazioni lo rendono particolarmente adatto ad applicazioni quali strumentazione di misura, sensoristica intelligente  ed elettronica di consumo. Le periferiche sono state progettate  per richiedere il minor supporto software possibile. L’algoritmo è stato scritto interamente in linguaggio C ed è suddiviso in due funzioni: il ciclo di taratura del DCO e il controllo della stabilità dell’oscillatore nel tempo. Introduzione Il microcontrollore  MSP430 di Texas Instruments, è un RISC a 16 bit con architettura von Neumann (figura 1). Di seguito le principali caratteristiche del micro: 1KB-120KB di …

I micro ColdFire® di Freescale a 32-bit

La gamma di microcontroller Freescale (ora NXP) a 32 bit per la connettività single-chip si propone come la soluzione ideale per i progettisti che necessitano delle elevate performance dei micro a 32 bit. Freescale Semiconductor ha presentato nel lontano 2006 la  gamma di prodotti basata sul core 68K/ColdFire®  per il controllo delle applicazioni industriali che variano dalla raccolta remota di dati, alla sicurezza, dalla domotica  fino al monitoraggio ambientale. Facciamo una panoramica su questi prodotti che hanno portato tanto successo a Freescale, e continuano a farlo ancora oggi. La gamma MCF522xx La Figura 1 rende l’idea di quelli che sono stati i …

Il modulo CCP nei microcontrolori PIC

Il modulo CCP dei PICMicro® è davvero una miniera inesauribile di funzioni. Si tratta di un dispositivo integrato sui PICMicro, il cui interfacciamento con l’esterno è realizzato tramite il pin CCP. In questo articolo esamineremo le principali applicazioni pratiche in cui si possono sfruttare le tre modalità di questo modulo: Capture, Compare e PWM. Il CCP è utilizzato in generale per effettuare misure o per il controllo di dispositivi mediante segnali modulati PWM. CHE COS’È IL MODULO CCP DEL PIC? Il modulo è programmabile via software per operare in una delle tre seguenti modalità: Capture (input). Il contenuto del Timer1 viene …

Pilotaggio di un mosfet di potenza con un microcontrollore

In questo articolo viene presentato un circuito semplice ed economico per pilotare con un microcontrollore un transistor Mosfet di potenza che può essere utilizzato con impulsi PWM o come relè statico in corrente continua. Esso funziona fino a circa 60 kHz e permette un completo isolamento con livelli d’ingresso a partire da 3,3 V. Lo scopo di questo articolo non è quello di spiegare nel dettaglio il funzionamento di questi semiconduttori ma di studiare un'economica e semplice interfaccia per connetterli con sistemi tipo Arduino o PIC. Dopo un’introduzione teorica sul funzionamento dei transistori Enhancement Mode Mosfet e sulle caratteristiche …

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 …