- Configurazione e requisiti hardware
- N76E003 LED e circuito interfaccia pulsanti
- Diagramma dei pin di N76E003
- Semplice programma di controllo GPIO per N76E003
- Programmazione di N76E003 e verifica dell'uscita
Nel nostro tutorial precedente, abbiamo utilizzato un programma di lampeggiamento LED di base per iniziare con la guida N76E003, abbiamo già imparato a configurare l'IDE Keil e impostare l'ambiente per la programmazione dell'unità microcontrollore nuvoton N76E003. È il momento di spostarsi un po 'oltre e utilizzare l' interfaccia GPIO di base per controllare l'hardware aggiuntivo. Se sei interessato puoi anche controllare altri tutorial GPIO del microcontrollore che sono elencati di seguito-
- STM32 Nucleo64 con CubeMx e TrueSTUDIO - Controllo LED
- STM8S con controllo GPIO Cosmic C
- PIC con MPLABX LED Blink Tutorial
- MSP430 con Code Composer Studio - Controllo LED semplice
Poiché nel nostro tutorial precedente, abbiamo utilizzato solo un LED per lampeggiare utilizzando un pin IO come uscita. In questo tutorial, impareremo come utilizzare un altro pin IO come input e controllare un LED aggiuntivo. Senza perdere molto tempo, valutiamo che tipo di configurazione hardware richiediamo.
Configurazione e requisiti hardware
Poiché un interruttore deve essere utilizzato come input, la prima cosa di cui abbiamo bisogno è un pulsante. Abbiamo anche bisogno di un LED aggiuntivo per essere controllato da quel pulsante. Oltre a questi due, abbiamo anche bisogno di un resistore per limitare la corrente del LED e un resistore aggiuntivo per scopi di pull-down attraverso il pulsante. Ciò sarà ulteriormente dimostrato nella sezione schematica. I componenti di cui abbiamo bisogno -
- Un pulsante (qualsiasi tipo di interruttore momentaneo in particolare - interruttore tattile)
- Qualsiasi colore del LED
- Resistenza da 4.7k per scopi di pull-down
- Resistenza 100R
Per non parlare, oltre ai componenti di cui sopra, abbiamo bisogno della scheda di sviluppo basata sul microcontrollore N76E003 e del programmatore Nu-Link. Inoltre, sono necessari anche cavi breadboard e di collegamento per collegare tutti i componenti come mostrato di seguito.
N76E003 LED e circuito interfaccia pulsanti
Come possiamo vedere nello schema seguente, il LED di prova che si trova all'interno della scheda di sviluppo è collegato alla porta 1.4 e un LED aggiuntivo è collegato alla porta 1.5. La resistenza R3 viene utilizzata per limitare la corrente del LED.
Nel pin 1.6 è collegato un pulsante denominato SW. Ogni volta che si preme il pulsante, il perno diventerà alto. Altrimenti, diventerà basso dal resistore pull-down da 4.7K R1. Puoi saperne di più sui resistori pull-up e pull-down se sei nuovo a questo concetto.
Il pin è anche un pin relativo al programma a cui il programmatore accede. Viene utilizzato per inviare i dati del programma. Tuttavia, vedremo il motivo alla base della selezione di questi pin e otterremo informazioni corrette sulla mappatura dei pin dell'N76E003.
Diagramma dei pin di N76E003
Il diagramma dei pin di N76E003 può essere visto nell'immagine sottostante-
Come possiamo vedere, ogni pin ha più funzioni e può essere utilizzato per scopi diversi. Facciamo un esempio. Il pin 1.7 può essere utilizzato come interrupt, ingresso analogico o come operazione di ingresso-uscita generica. Pertanto, se si utilizza un pin qualsiasi come pin I / O, la rispettiva funzionalità non sarà disponibile.
A causa di ciò, il pin 1.5 che viene utilizzato come pin di uscita LED, perderà il PWM e altre funzionalità. Ma questo non è un problema in quanto per questo progetto non è richiesta un'altra funzionalità. Il motivo alla base della scelta del pin 1.5 come output e del pin 1.6 come input, a causa della disponibilità più vicina di pin GND e VDD per una facile connessione.
Tuttavia, in questo microcontrollore su 20 pin, 18 pin possono essere utilizzati come pin GPIO. Il pin 2.0 è utilizzato in modo dedicato per l'ingresso Reset e non può essere utilizzato come uscita. Oltre a questo pin, tutti i pin possono essere configurati nella modalità descritta di seguito.
Secondo la scheda tecnica, PxM1.n e PxM2.n sono due registri utilizzati per determinare l'operazione di controllo della porta I / O. Ora, venire a scrivere e leggere un porting GPIO è una cosa completamente diversa. Perché la scrittura in un registro di controllo della porta cambia lo stato di latch della porta, mentre la lettura della porta ottiene lo stato dello stato logico. Ma per leggere una porta, deve essere impostata in una modalità di input.
Semplice programma di controllo GPIO per N76E003
Il programma completo utilizzato in questo tutorial si trova in fondo a questa pagina, la spiegazione del codice è la seguente.
Impostazione del pin come input
Cominciamo prima con l'input. Come discusso poco prima, per leggere lo stato di una porta, è necessario impostarla come input. Pertanto, poiché abbiamo selezionato P1.6 come pin dell'interruttore di ingresso, lo abbiamo indicato attraverso la riga sottostante dello snippet di codice.
#define SW P16
Questo stesso pin deve essere impostato come input. Pertanto, nella funzione di configurazione, il pin viene impostato come ingresso utilizzando la riga sottostante.
void setup (void) {P14_Quasi_Mode; P15_Quasi_Mode; P16_Input_Mode; }
Questa riga P16_Input_Mode; è definito nel file di intestazione Function_define.h nella “libreria di inclusione BSP” che imposta il bit del pin come P1M1- = SET_BIT6; P1M2 & = ~ SET_BIT6 . Il SET_BIT6 è anche definita nello stesso file di intestazione as-
#define SET_BIT6 0x40
Impostazione dei pin come output
Come il pin di ingresso, anche il pin di uscita utilizzato dal LED Test integrato e dal LED1 esterno è definito nella prima sezione del codice con i rispettivi PIN.
#define Test_LED P14 #define LED1 P15
Questi pin vengono impostati come output nella funzione di configurazione utilizzando le righe seguenti.
void setup (void) { P14_Quasi_Mode; // Uscita P15_Quasi_Mode; // Uscita P16_Input_Mode; }
Queste righe sono definite anche nel file di intestazione Function_define.h dove imposta il bit del pin come P1M1 & = ~ SET_BIT4; P1M2 & = ~ SET_BIT4 . Il SET_BIT6 è anche definita nello stesso file di intestazione as-
#define SET_BIT4 0x10
Ciclo While infinito
Un Hardware, se collegato all'alimentazione e perfettamente funzionante che dovrebbe dare output in modo continuo, l'applicazione non si ferma mai. Fa la stessa cosa per infinite volte. Ecco la funzione di un ciclo while infinito. L'applicazione all'interno del ciclo while viene eseguita all'infinito.
mentre (1) { Test_LED = 0; sw_delay (150); Test_LED = 1; sw_delay (150); se (SW == 1) {LED1 = 0; } altro {LED1 = 1; }}}
Il ciclo while sopra descritto fa lampeggiare il led secondo il valore sw_delay e controlla anche lo stato del SW. Se si preme l'interruttore, il P1.6 sarà alto, quindi quando viene premuto lo stato di lettura sarà 1. In questa situazione, per il tempo, lo switch è premuto e la porta P1.6 rimane alta, la Il LED1 si illuminerà.
Programmazione di N76E003 e verifica dell'uscita
Nel nostro tutorial per iniziare con N76E003, abbiamo già imparato a programmare l'N76E003, quindi ripeteremo gli stessi passaggi qui per programmare la nostra scheda. Il codice è stato compilato correttamente e ha restituito 0 avvisi e 0 errori e ha lampeggiato utilizzando il metodo di lampeggiamento predefinito da Keil.
Come puoi vedere nell'immagine sopra, il nostro LED esterno si accende quando premo il pulsante. Il funzionamento completo del progetto si trova nel video linkato di seguito. Spero ti sia piaciuto il tutorial e hai imparato qualcosa di utile se hai domande, lasciale nella sezione commenti qui sotto. Puoi anche utilizzare i nostri forum per porre altre domande tecniche.