Con riferimento al video PierAisa #696: Soirée Microchip ATMEL ATmega4809, ATtiny1616, AVR128DB28 ((21) PierAisa #696: Soirée Microchip ATMEL ATmega4809, ATtiny1616, AVR128DB28 – YouTube) qui di seguito vengono riportati gli Esempi mostrati preparati da Ancrea G. (canale Youtube (21) G.Elettronica – YouTube):
Tutti i sorgenti sono scaricabili a questo link: https://www.pieraisa.it/php/forumshareinsertdb.php?file=../forum_share/DATASHEETS/DIGITALI/MICROCONTROLLORI/ATMEL/ATMEL_ESEMPI_SOFTWARE_VIDEO_PierAisa696.zip
ESEMPIO 1
In questo esempio utilizzeremo l’Atmega4809 in versione 40 DIP, un display 16×2 HD44780 che utilizzeremo per scrivere alcuni caratteri e configureremo la periferica CCL (Configurable Custom Logic) per accendere e spegnere un LED tramite la pressione di un pulsante in maniera indipendente dall’esecuzione del programma.
Nel nostro esempio abbiamo configurato la CCL in configurazione D Latch, l’ingresso D è collegato all’uscita Q in negazione, mentre l’ingresso G è collegato all’ingresso fisico dell’Atmega4809 (ingresso LUT1-IN0 PC0), l’uscita oltre ad essere in feedback negativo con D è collegata all’uscita fisica dell’Atmega4809 (uscita LUT0-OUT PA3), con questa configurazione abbiamo che il LED spento con la pressione del pulsante il LED si accenderà e non cambierà il suo stato ameno che non si riprema nuovamente il pulsante.
Per capirci meglio diamo uno sguardo alla tabella della verità:
G | D | Q |
0 | 1 | 0 |
↑ | 1 | 1 |
0 | 0 | 1 |
↑ | 0 | 0 |
Questo e un semplice esempio ma le configurazioni che può assumere la periferica CCL sono svariate…
Esempio 2
In questo esempio utilizziamo l’Attiny1616 come generatore di forma d’onda sinusoidale a 50Hz tramite il DAC0.
Il DAC0 ha la possibilità di convertire un segnale digitale in analogico con una risoluzione di 8-bit (0-255), tramite un timer (TCB0) generiamo un interrupt e andiamo di volta in volta a caricare nel registro di DATA di DAC0 il valore contenuto nel array che generiamo all’inizio dell’esecuzione del programma, l’array contiene i vari punti della sinusoide che vengono calcolati in questa maniera:
Campioni =Frequenza generazione/Frequenza generata
Costante =Campioni/(2π/1)
Nel nostro esempio:
20KHz/50Hz =400 Campioni
400/(2π/1) =63,66 Costante
Array =offset+amplitude*sin(X(indice corrente)/costante)
Collegamenti:
PIN 1 -> +5V
PIN 4 -> Sonda oscilloscopio
PIN 20 -> GND
Esempio 3
In questo esempio utilizziamo l’AVR128DB28 in formato 28-DIP con la sua periferica OPAMP in configurazione non invertente per amplificare un segnale con un guadagno di 2, nello specifico utilizziamo OPAMP 0; Abbiamo settato R1 e R2 a 8KΩ tramite i bit 7-6-5 nel registro OP0RESMUX, cosi facendo dalla formula ricaviamo GAIN=1+(R2/R1)=1+(8kΩ/8kΩ)=2.
Questo esempio vuol far vedere una semplice applicazione dell’utilizzo della periferica OPAMP, un altro utilizzo potrebbe essere amplificare un segnale e darlo direttamente in impasto al convertitore Analogico Digitale (ADC).
Collegamenti:
PIN 6/14/20 -> +5V
PIN 15/21 -> GND
PIN 7 -> Ingresso non invertente OPAMP
PIN 8 -> Uscita OPAMP