Cronometro con TRM1

contatore cronometro cablaggio
contatore cronometro input output
contatore cronometro pulsanti
contatore cronometro variabili
contatore cronometro start
contatore cronometro macro conteggio
contatore cronometro stop
contatore cronometro reset

Questo contatore utilizza la struttura del programma “4 digit counter”, con l’utilizzo del timer interno TRM1 e l’aggiunta dei pulsanti di Start, Stop e Reset.

Impostando il prescaler a 1:256, imposto la frequenza di Interrupt a 0,954 Hz, che utilizzerò come base dei tempi per il cronometro; nel caso, la precisione fosse importante, utilizzerò una base dei tempi esterna “RTC” acronimo di Real Time Clock, con una precisione di  un quarto di secondo al giorno, per sincronizzare il conteggio alla frequenza esatta di 1,00 Hz.

Predispongo le periferiche da utilizzare con il programma.

Dal menu “Inputs”, inserisco nel 3D System panel, tre pulsanti di tipo push, che utilizzerò per controllare i comandi di Start, Stop e Reset.

Dal menu “outputs”, inserisco nel 3D System Panel il 7 seg_(Quad) display.

Seleziono ciascun pulsante nel 3D System Panel e, nel menu Properties, collego i pulsanti Start e Stop, rispettivamente, agli ingressi di INT0 (Porta D2) e INT1 (Porta D3) e IOC (Porta D4) per il Reset.

Start

Stop

Reset

Aggiungo le Variabili “unita, decine, centinaia e migliaia” che utilizzerò per visualizzare il conteggio e la Variabile “count”, per incrementare i numeri sul display quando premo il pulsante di Start; tutte le Variabili sono di tipo Byte.

Diagramma di Flusso del programma.contatore cronometro flusso

contatore cronometro flusso conteggio

Diagramma di flusso della Macro “conteggio_modulo”

contatore cronometro ddecimal point

il secondo Digit, che rappresenta il minuto , resetta al 6.

Sul 7_seg_Quad Display, accendo il punto decimale per facilitare la lettura dei minuti.

Pulsante Start

TRM1 è sincronizzato sul fronte di salita della transizione dal livello logico 0 a 1.

Nel diagramma di Flusso, inserisco l’Interrupt gestito dal pulsante Start.

Quando il pulsante “Start” è premuto, la funzione Interrupt, sul Bit 2 della Porta D, abilita TRM1 e richiama la  Macro “Start”.

La Macro “Start”, richiama la macro “conteggio_modulo”.

Pulsante “Stop”

Il pulsante “Stop” collegato al Bit 3 della Porta D, richiama la macro che disabilita TRM1.

 è sincronizzato sul fronte di salita della transizione dal livello logico 0 a 1.

Pulsante “Reset”

Il pulsante che resetta il contatore, utilizza l’Interrupt IOC collegato al bit 4 della Porta D e richiama la Macro “reset” che azzera il 7_seg_Quad Display; è nel “Ciclo principale” perché il suo intervento non implica ritardi sul funzionamento del programma.

C-Code

crono azzeramento
contatore crono collegamento display

In 3D System Panel, seleziono il 7_seg_Quad display e dal Pannello properties, collego gli anodi comuni alla Porta B, Bit 2,3,4,5,  collego i segmenti alla Porta C, Bit 0,1,2 , alla Porta D, Bit 5,6,7 e alla porta B, bit 0 e bit 1.

Riccardo Monti