• Non ci sono risultati.

2. Soluzioni sviluppate con il progetto ditesi

5.3 Scheda per il controllo periferiche con microcontrollore

5.3.2 Il Microcontrollore ATmega128(L)

a 8 bit a basso consumo, basato su , basato su un’architettura RISC. Possiede 128 kB di memoria flash per la programmazione, 4 kB di EEPROM, 4 kB di memoria SRAM, 53 linee di I/O general purpose, un real time counter (RTC), 4

Timer/Counters con modalità “compare match” e

“PWM”, 2 USART, un’interfaccia TWI, un convertitore A/D 10 bit ad 8 canali,

un’interfaccia SPI con possibilità di operare in diverse modalità, e un’interfaccia JTAG per il debug e la programmazione. Il modello di ATmega128 scelto 128(L) differisce del modello 128 per due caratteristiche: opera con una tensione di alimentazione

compresa da 2.7 ai 5.5 V (questo ci permette di avere un’alimentazione compatibile con il sensore di accelerazione) e ha una frequenza massima di lavoro pari a 8MHz a

differenza del 128 che arriva fino a 16MHz.

L’ATmega128(L) può essere programmato in diversi modi: è possibile effettuare il download del firmware in maniera seriale (per mezzo dell’interfaccia SPI, cioè come avviene nel prototipo realizzato, o JTAG) o parallela. Inoltre è possibile effettuare il download del firmware nella memoria flash di programma, utilizzando un programma di boot: quest´ ultimo può utilizzare una qualsiasi interfaccia per scaricare il firmware nella memoria flash; inoltre l’aggiornamento della memoria flash viene fatto mentre è in esecuzione il programma di boot. Questa particolarità viene definita “read while write”, ovvero lettura (esecuzione del programma di boot in una parte della memoria flash) mentre è in corso la scrittura. Quando viene utilizzato il bootloader, la memoria flash viene suddivisa in due parti: la application section e la bootloader section. La prima sezione contiene il firmware dell’applicazione, mentre la seconda il bootloader.

Mentre il programma che risiede nella application section non può memorizzare del codice nella sezione del bootloader, quest’ ultimo può farlo in entrambe le sezioni.

Le funzioni del microcontrollore che vengono impiegate nella nostra applicazione sono essenzialmente:

1) generazione del segnale PWM per il controllo dei motori

3) lettura dati dall’accelerometro tramite SPI. Analizziamole in dettaglio:

1) Tra le varie modalità PWM (modulazione a larghezza di impulso) generabili dal microcontrollore per la nostra applicazione è stata scelta la modalità “Phase Correct PWM Mode”; essa genera un onda triangolare a doppia rampa come riferimento che consente definire il duty-cycle dell’onda PWM generata (vedi figura 67). Questo tipo di generazione è preferita per le applicazioni di “motion control” perché consente di generare un segnale di controllo ad alta risoluzione. La risoluzione del segnale PWM può essere scelta a 8-, 9-, 10bit impostandone i valori negli opportuni registri come spiegato nel capitolo seguente. Il valore massimo di conteggio di ogni periodo è definito dal valore contenuto nel registro OCR1X dove “X” è definita a seconda dall’uscita che viene utilizzata.

Figura 67 Phase Correct PWM Mode

Il contatore TCNTn partendo da 0x0000 incrementa il suo valore fino ad arriva al valore TOP definito dalla risoluzione; successivamente dal valore TOP il contatore verrà decrementato fino a tornare al 0x0000. Durante la fase di conteggio incrementale e decrementale ogni volta che il valore contenuto in TCNTn diventa uguale a quello definito nel registro OCR1X si ha una commutazione dell’uscita OCnX da livello alto a basso o viceversa, questa commutazione da origine al segnale PWM.

2) L’ATmega128 ha 8 canali dedicati alla conversione di segnali analogici gestiti tramite un multiplexer. Ogni convertitore ADC garantisce una risoluzione di 10bit che può essere impiegata per rappresentare valori decimali compresi tra -512 e +512.

Il valore che costituisce la tensione di riferimento necessaria per la conversione può essere assegnato ad un riferimento interno di 2,56V o tramite l’ingresso AVCC che permette di stabilire una tensione di riferimento fino ad un valore massimo pari a VCC con una precisione di ±0,3V. In figura 68 è mostrato il circuito che gestisce l’ingresso analogico.

Figura 68 Ingresso Analogico.

Come si vede dalla figura l’ingresso è dotato di un circuito di Simple&Holding necessario a mantenere costante la tensione durante il campionamento. Gli ingressi ADC sono ottimizzati per lavorare con segnali analogici che presentano un impedenza di uscita inferiore a 10KΩ in modo da poter trascurare il tempo di campionamento; questo perché il tempo necessario a caricare il condensatore di S/H risulterà

notevolmente inferiore al tempo di acquisizione. Se vengono utilizzati segnali con impedenze di uscita maggiori invece, il tempo di carica della capacità aumenterà, questo non garantirà che il campionamento avvenga quando la capacità presenta una tensione pari a quella dell’ingresso ADC sfalsando così il valore numerico memorizzato.

3) L’ATmega128L dispone di un’interfaccia SPI (Serial Peripheral Interface) che permette il trasferimento di dati ad elevata velocità (in modalità Double speed Master SPI mode si può trasferire dati alla frequenza di clock massima pari a

2 fck

) e in modo sincrono, ovvero l’invio dei dati è “scandito” da un segnale di clock .

Le caratteristiche principali dell’ interfaccia SPI sono:

• Gestione del trasferimento in modalità master o slave. • Generazione interna del clock di trasmissione.

In figura è riportato lo schema a blocchi dell’interfaccia SPI presente sul datasheet del componente.

Figura 69 SPI ATmega128

Il protocollo SPI necessario per la gestire dei dati provenienti dall’accelerometro è sostanzialmente quello descritto nel paragrafo 5.3.2 in figura 70 viene solamente riportata la linea di connessione tra Master e Slave.

Figura 70 Connessione SPI Master-Slave

Come si vede il trasferimento dati avviene tra due Shift Register uno contenuto nel master e l’altro nello slave i quali, sincronizzati dagli impulsi di clock, tramite le linee

MOSI (Master Out Slave In) e MISO (Master In Slave Out) fanno shiftare il loro contenuto l’uno nell’altro.

Documenti correlati