Loading
Note di Apprendimento
Study Reminders
Support
Text Version

MSP430 Input digitali e Outputs

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Introduzione a Embedded System Design Professor. Dhananjay V. Gadre Netaji Subhas University of Technology, New Delhi Lecture 22 MSP430 Digital I/O Hello, e Bentornati in una nuova sessione. E in questa sessione ci collezioniamo davvero un pezzo di hardware, ovvero la nostra scatola da pranzo MSP430 a un portatile, come potete vedere il mio setup qui è cambiato a parte l'iPad che ho usato per scrivere e presentare questa lezione. Ho anche un portatile, su cui ho collegato la scatola del pranzo MSP430. E passerò attraverso il primo aspetto che si farebbe quando si collega un microcontrollore al sistema che si desidera eseguire il primo programma.
E quando si impara la programmazione C, il primo programma che hai scritto è stato 'Hello World' in cui hai scritto un programma, compilato e quando l'hai eseguito sullo schermo del portatile o del computer desktop ha stampato 'Hello World'.
Ora nel nostro mondo dei sistemi embedded il nostro mondo è dettato dal LED. E così il primo programma sarà 'Hello LED' e vi mostrerò, una volta che spiego come scrivere un programma per manipolare i bit e i piedini che abbiamo sul nostro microcontrollore MSP430, come facciamo a scrivere il nostro primo programma in modo da poter convogliare le informazioni su un LED collegato al nostro kit, che noi, questo è l'obiettivo di questa lezione. Quindi, cominciamo.
Ora, il problema è che in un microcontrollore hai tanti piedini e hai molte più funzioni e il modo di affrontare questa disparità è che allocano molte, molte funzioni su un singolo pin e ti lasciano a te il programmatore, il progettista di sistema incorporato per scrivere un programma appropriato, per selezionare una funzione appropriata da instradare a quel pin. Ma la funzione di base di ogni pin è quella di servire come pin di input o un pin di output e anche questo è una grande domanda che, come si fa a rendere programmabile un pin?
Ricorderete che in una delle lezioni precedenti avevo accennato, che una delle più grandi caratteristiche dei moderni microcontrollori è la possibilità di decidere scrivendo un apposito programma che del dato numero di input in output pin quanti saranno input e quanti saranno output. E così in questa lezione andremo prima di tutto a risolvere quel convento e poi affronteremo la questione su come molteplici funzioni arerate a questi pin, se si sceglie di non avere quelle piedine funzioni che in, funzione come pin di input output, come si instradano funzioni aggiuntive su quei piedini?
Quindi, abbiamo un compito leggermente complesso a portata di mano e all'inizio può apparire molto scoraggiante per te ma ti prego di sapere stare con me e sono sicuro, sarei in grado di aiutarti a capire tutta questa complessa disposizione di logica che permette a un microcontrollore di imbustare tante funzionalita ' su un lato su un unico pin. Così, da allora, ci occupiamo di un microcontrollore MSP430G2553, che di per sé è disponibile in due impronte, che significa dispositivi fisici.
(Riferirsi Slide Time: 03.37) Il fatto è che la prima versione del microcontrollore, se si sceglie il pacchetto dip si otterranno due porte e quelle due porte sono etichettate P1 e P2, e la nostra scatola da pranzo MSP430 come dip IC. Nel caso in cui decidi di implementare il tuo sistema utilizzando la versione SMD, avrai quindi 3 porte perché quella versione SMD ha 28 pin e quelle 3 porte sono etichettate P1, P2 e P3.
Ognuna di queste porte ha otto pin di output in ingresso, cioè si può scegliere se questi otto pin possono essere input o output o qualsiasi combinazione di essi. Come ho accennato, ognuno di questi pin di output in ingresso può essere input o output e si può leggere o scrivere a questi pin. Si può anche, a prescindere dall'essere input e output o pin di output è possibile configurare anche questi pin di input per diventare fonte di interruzioni su P1 e P2.
A parte questa funzionalità se si sceglie questi piedini per diventare dei pin di input, allora avevo accennato che quando si connettono dispositivi esterni che non forniscono alcuna tensione logica poi si è dovuto trasformare lo stato di quei segnali come aperto e chiuso in 1 e 0 e quindi servono resistenze esterne, serve pull-up o pull down resistori.
Ebbene, sul microcontrollore come MSP430 non è necessario collegare resistenze esterne, è possibile programmare il chip in modo che le resistenze interne possano essere pressate in servizio e si può scegliere sia una resistente tiratura che la resistenza a discesa.
Così, è possibile configurare una tiratura o tirare giù resistenze e questi porti, tutte queste funzionalità sono programmate attraverso l'interfaccia di registro periferiche 8 - bit che avevo discusso in precedenza, nella mappa della memoria del microcontrollore c'erano alcuni registri che erano 8 - bit accessi, alcuni che erano 16 - bit così per l'output in ingresso digitale questi sono tutti i 8 - bit registri. Allora, questo è quello di cui abbiamo parlato qui.
(Riferirsi Slide Time: 05 :42) Ora ecco uno schematissimo di uno dei pin, si vede che questo è un circuito così complesso, è molto possibile che lei come principiante si arrivi, si sa confuso con un tale circuito ma non bisogna preoccuparsi, io sono qui per semplificare le cose per lei.
(Riferimento Slide Time: 06.04) Quindi, fatemi disegnare un diagramma semplice per illustrare questa idea. L'idea è che, io ho un pin fisico, questo è il mio pin, lasciatemi etichettare un pin, questo è un pin del microcontrollore e volete un meccanismo, volete qualche circuito che convertirà questo pin come pin di uscita, il che significa che qui c'è il mio bus CPU microprocessore, bus dati e vorrei fare questa pin output quando voglio.
Ma quando riprogrammo l'hardware relativo a questo pin, dovrei essere in grado di convertire questo pin in un pin di input. Ovviamente MSP430 ti offre ancora più opzioni ma vediamo innanzitutto come i componenti del circuito digitale di base possono essere pressati in servizio per fornire tale funzionalità di poter modificare il pin come pin di input o come pin di output. E una delle più grandi bellezze dell'elettronica digitale è questo, il buffer tri-stato.
Quindi immaginate di avere un buffer tri-stato, ecco il mio flip - flop, un flip - flop di tipo D, lo chiamo D-FF, in cui posso scrivere qualsiasi valore e qui è un orologio in modo che al bordo dell'orologio che decido un particolare sia memorizzato in questo flip - flop, l'output di questo flip-flop alimenta l'inputof di questo buffer tri-stato, ora diventa un buffer tri-stato. Se il segnale di controllo del buffer tri-state è 1, questo output ottiene il valore come input.
Se invece è il 0, allora questo buffer tri-state è scollegato dal pin e questo è come un tipico microcontrollore, un microcontrollore moderno come MSP430 utilizza questo tipo di hardware per selezionare la funzionalità e dare il controllo di quella funzionalità a te, al progettista di sistema o al programmatore in modo da poter scegliere.
Vuoi che questo pin sia un output, sì, se vuoi che questo pin sia un output che scrivi attraverso appositi registri, una logica qui che permetterà questo buffer tri-stato dopo che qualunque cosa scrivi in questo flip-flop che valore apparirà qui e successivamente apparirà sul pin.
E così quando voglio fare un pin di output pin, io, il mio micro controller avrebbe adatto un circuiteria adatto soprattutto con il buffer tri-stato che sarà abilitato attraverso la scrittura di bit in appositi registri di controllo e questo buffer tri-stato sarà abilitato, successivamente potrò continuare a scrivere qualsiasi sequenza in questo flip-flop e quel valore apparirà su questo pin.
Ora supponga di voler convertire questo pin in un pin di input. Ovviamente, ci si aspetta che una tensione esterna da applicare a questo pin, questa tensione potrebbe provenire da un dispositivo esterno o potrebbe essere un interruttore, poi non si desidera che questo buffer tri-stato sia abilitato. Perché altrimenti questa logica arriverà da qui, e qualche logica arriverà da qui, e se questi due valori logici non saranno d'accordo l'uno con l'altro porterà a quella che chiamiamo contesa dei bus.
E il modo più semplice per evitarlo è scrivere, è scrivere una logica 0 qui, se scrivo un 0 su questo pin di controllo, poi come se disconnette questa parte. Quindi, sono appena uscito con un pin appeso dal lato del microcontrollore e ora posso usare un dispositivo esterno per applicare la tensione.
E ovviamente questo passa attraverso un buffer e va nel bus dati, quindi che ora, e anche questo ha bisogno di un buffer tri-stato in modo che su richiesta quando il programma del microcontrollore si legge, faccia questo bit una logica 1, qui leggerà il valore pin e lo inserirà sul bus dati e alla fine andrà nel tuo registro così, che potrai elaborare tali informazioni. Ecco, questa è l'idea di base dietro a qualsiasi pin con la funzionalità che può essere resa pin di input o pin di output. E questo è in realtà quello che sta accadendo su questo pin. (Vedi Slide Time: 10.19) Ecco il mio pin, se vedete qui, ecco il pin. E vedi, questo è il buffer tri-stato di cui parlavo, questo buffer tri-stato è controllato da questo cancello che sta ottenendo informazioni da alcuni di questi registri qui e sto andando a semplificare quell' informazione per te.
Se questo è abilitato, queste informazioni provengono da questo multiplexer e uno degli input multiplexer è questo registro chiamato PxOUT. E tu che scrivi informazioni qui possono essere instradate in questo e può apparire a questo pin, se vuoi fare questo pin come output, se vuoi rendere questo pin come input allora ovviamente, dovrai garantire che questo buffer tri-stato qui diventa 0 e poi puoi applicare la tensione esterna che attraversi questo buffer, tri-stato tampone e vai dentro e poi potrà essere letto dal microcontrollore.
Così, come vedete qui, ci sono diversi, si sa che il valore è scritto qui, alcuni qui sono legati al porto, alcuni di loro parlano di timer, qui c'è qualcosa di comparatore, e ADC, e così via. Quindi, questo per indicare solo che il pin di microcontrollore MSP430 è multifunzionale e sta a voi come il programmatore a decidere quale funzione questo particolare pin dovrebbe comportarsi e così andiamo a guardarci.
(Riferimento Slide Time: 11 :52) Ora, vedete che guarderemo ad un esempio, vediamo che, diciamo che il nostro pin è P1.0. Ora P1.0 pin qualunque sia il pin fisico che si assota ad avere diverse funzionalità, una delle funzionalità è che fungerà da porta pin 1,0, l'altra è che può agire come input per uno dei timer qui TA 0.
L'altro potrebbe essere che possa essere utilizzato per instradare un'informazione esterna, in questo caso il valore dell'orologio ausiliario può essere superato su questo pin. La quarta funzione che questo può servire è che può diventare l'input ADC per con bit 0, il terzo è che si tratta di un input CA 0 che è teinput per un comparatore e l'ultima funzione che può servire è che possa essere utilizzata per il rilevamento capacitivo.
Così, come potete vedere ognuno di questi pins di porta has1, 2, 3, 4, 5, 6 funzioni e come selezionare quale funzione verrà utilizzata per far funzionare questo pin, questi sono tutti i registri che abbiamo. Abbiamo quindi un registro chiamato P1DIR, che DIR spicca per la direzione, poi abbiamo due registri chiamati P1SEL e P1SEL2 quindi questi sono dei registri di selezione.
Semplifichiamolo, diciamo di selezionare registro e selezionare due registri associati ad ogni porta, il che significa che P1 avrebbe un registro di selezione, P1 avrebbe anche selezionato due registri, P1 avrebbe il registro di direzione, P1 avrebbe anche registri associati all'ADC, e P1 avrebbe registrato la registrazione associata alle funzionalità di senso capacitivo.
Quindi, vediamo, se vogliamo utilizzare il pin come pin di output in ingresso allora quale deve essere il valore del registro chiamato registro di direzione, quale deve essere il valore dei due registri chiamati selezionare, e selezionare due registri e il resto dei registri. Ora si vede qui, posso scrivere un 0 o un 1 nel registro di direzione, questo deciderà se diventa input o output. Ma, per selezionarlo come output di input, se si tratta di input o di output sarà determinato dal registro di direzione.
Ma affinché diventi un pin di output in ingresso devi scrivere un 0 e nel registro di selezione e altri 0 nella selezione due registri nel bit appropriato, ricordati che ogni porta ha otto pin, ogni pin è associato al bit di porta. Quindi, se parlo di bit 0, questo significa che sto dicendo P1DIR 0, parlo di P1SEL 0, parlo di P1SEL2.0 e così via.
Quindi, questo è molto importante che tu abbia questa funzionalità associata a ciascuno e ad ogni pin. Ora diciamo, che no, non vuoi usare questo pin come pin di output in ingresso, in realtà volevi diventare un orologio per il timer. Questo significa che il valore del registro P1DIR per il bit 0, parliamo di 0, dovrebbe essere di 0 e il selezionare e selezionare due pin, selezionare e selezionare due bit dovrebbe essere 1 e 0 e ADC e il registro capacitivo possono avere 0, 0.
Se deve essere utilizzato per instradare il segnale di clock ausiliario interno su questo pin, ora si vede la direzione diventa che diventa un output. Ed è per questo che, lei ha scritto il 1you deve scrivere un 1 nel registro di direzione. E selezionare valore è 1 e 0, selezionare due 0 e ADC è 0, CAPD 0. Se vuoi che diventi input ADC, allora non importa qual è il valore di direzione, non importa qual è il valore di bit select, selezionare due bit value, X significa non importa, sovrascrivere quella funzione scrivendo un bit 1 in questo registro ADC10AE e dato che non vuoi che sia il senso capacitivo scrivi un 0.
D'altra parte, se volete che diventi di nuovo un input comparativo questo è X, X, X, questo è 0 e CAPD diventa 1. E se volete che diventi senso capacitivo allora, il valore qui è X ma il valore SEL1 deve essere di 0 e 1 e questi due sono di nuovo 0, 0 questo selezionerà questo particolare pin per diventare input capacitivi.
E questo come si vede, questo tipo di funzionalità viene ripetuta per il riposo dei piedini, la funzionalità effettiva cambierà da pin a pin ma il processo di selezione è lo stesso. Quindi, vediamo, quante resistenze ci occupiamo di quando ci connettiamo, decidiamo di usare questi piedini come input o output.
(Riferimento Slide Time: 17 :15) Quindi, per l'utilizzo dei pin di output in ingresso come registri I/O abbiamo almeno 1 il registro di direzione. X qui si riferisce a quale porta stiamo parlando, ad esempio, se si parla di porta 1 questo diventerà P1DIR, se parliamo di porta 2 diventerà P2DIR, e così via. Quindi, non lo ripeterò. Quindi, abbiamo PxDIR significa l'esportazione, il registro di direzione, poi abbiamo il registro delle informazioni chiamato PxIN, questo è il registro che leggerete se volete fare questo pin o questa porta come input, se volete fare questo pin di questa porta come output scriverete al registro PxOUT.
Ora, se si sceglie di rendere questo pin di questo registro come di questa porta come input lo leggerete ovviamente, ma potrete scegliere che volete un resistore a pull-up o tirare giù resistor, per questo dovete abilitare le resistenze e lo fate scrivendo in questo.
Che si tratterà di pull-up o di tirare giù dipenderà da ciò che scrivi nel registro PxOUT.
E poi, questo pin che funzionerà come pin di output in ingresso o sta andando a prendere le funzioni alternative associate a questo pin sarà determinato scrivendo bit appropriati in SEL e SEL2. Ecco, questa è la sequenza di funzionamento che dobbiamo eseguire e vediamo come facciamo. (Fare Slide Time: 18.48) Così, siamo già passati attraverso che, qui X si riferisce alla particolare porta, P si riferisce al porto.
Quindi, se dico P1DIR che significa, sto parlando del registro di direzione associato al porto
1. E se scegliamo il pacchetto 28 pin avrai la porta 1, porta 2, porta 3 è un registro di 8 bit. Un valore se scrivi in un determinato bit, quindi hai 8 di bit in una porta, quindi lascia che ti mostri che 8 per te, ecco come faccio a fare 8, questo è un po' 0 e andando fino a qui un po' 7.
Ora, in questo se scrivo un 0, quindi questo è il mio registro P1DIR. Se in questo scrivo 0 a bit 0 significa che il pin connesso a bit 0 di porta 1 sarà configurato come input, questo è il senso. Se il pin successivo se scrivo 1, cioè un bit 1 di porta 1whichever pin è collegato per diventare un pin di output e scriverò valori appropriati in questo registro per decidere la funzionalità di base del porto, se li voglio come input o output. Spero che sia chiaro.
Ora, se scelgo scrivendo nel registro di direzione P1 per essere un 0 per renderlo come input, da dove leggo l'input? Questo sta solo andando a determinare l'input o l'output di direzione. Ora, devi leggere registri diversi se hai fatto questo pin come input o hai fatto questo pin come output. (Vedi Slide Time: 20.33) Se vuoi fare questo pin come input, devi leggere un registro chiamato PxIN, quindi qui per P1 diventerà P1IN. Ora ovviamente si può scegliere che per i 8 alcuni di loro sono input alcuni di loro sono output, come si legge il valore, leggerete l'intero registro, leggerete P1IN e poi isolate quei bit che avete configurato come input e identificando i loro valori, un 1 significa che il pin è 1 si tiene alla logica 1, se questo registro legge un 0 in un determinato bit location, questo significa che il pin è stato esternamente impostato su 0 che è il significato di questo intero slide qui e potete attraversarlo per verificare quello che ho citato.
D'altra parte, se hai deciso che per un determinato bit vuoi che ti venga in uscita scrivi un 1 in quel bit di location. (Vedi Slide Time: 21.37) Come si scrive effettivamente il valore, come si invia effettivamente il valore al pin di porta, si va a farlo scrivendo nel registro chiamato PxOUT, in questo caso quel valore diventa P1OUT. Quindi scriverete i valori in questo registro, quei bit di porta 1 che sono configurati come output assumeranno valore che scrivi in P1OUT e decideranno se quel pin diventa 1 o 0, lo scrivi ovviamente nell'intero registro ma solo quelli saranno interessati a ciò che hai effettuato come output, per favore comprendi questo.
Tu, quando scrivi a un registro stai scrivendo tutti i 8 ma forse hai solo un bit abbiamo configurato come output così gli altri sette bit non influenzeranno la funzionalità su quei pins perché non sono output, solo quello configurato come output otterrà il valore. E se vuoi produrre un 0, scrivi un 0 nel registro PxOUT, se vuoi produrre un 1 scrivi un bit 1 in quel bit. (Vedi Slide Time: 22.37)
E poi come ho accennato, se si desidera configurare una porta come input, si doveva decidere di volere delle resistenze di pull-up interne, se si fa, poi si controlla e si programma questo registro chiamato PxREN, che significa per la porta 1 questo diventerà P1REN, porta 1 resisto e questo abilita il pull-up o la tiratura.
Ora, se scrivi un 0 nel registro PxREN in un luogo appropriato disabiliterà la funzione di tiratura a discesa, se scrivi un 1 lo abiliti, se scrivi un 1, domanda è che diventi pull-up o tiri giù? La risposta viene fornita scrivendo un valore appropriato nel corrispondente bit del registro P1OUT, scrivendo 1 in P1OUT in quel punto di posizione che farà una funzione di pull-up, se scrivi un 0 diventerà funzione di pull down che è il significato di questo. (Vedi Slide Time: 23.48) Ora, abbiamo anche dovuto affrontare i bit di selezione, ci sono due registri; uno si chiama P1SEL e P1SEL2, quindi questo diventerà P1SEL per la porta 1 e questo diventerà P1SEL2. E quali sono le opzioni che abbiamo? Se il valore è 0, 0 scritto in questi due registri in qualsiasi posizione di bit che consente a quel pin di funzionare come output di input, se è 0, 1 è il modulo periferico principale se è 1, 0 è riservato non si deve usare questa combinazione e se si scrive una 1, 1 in corrispondenza di bit di questi due registri viene selezionata una funzione secondaria secondaria.
E siamo già passati attraverso le varie combinazioni di PSEL e PSEL2, come vengono selezionate le altre funzioni. Così ora, sappiamo che abbiamo tanti registri da affrontare, con noi abbiamo un registro di direzione, abbiamo un registro di input, abbiamo un registro di output, abbiamo un registro delle abilitazioni a pull-up e abbiamo selezionato e selezionare due registri questi molti registri che devi scrivere.
Ora per fortuna, molte delle resistenze hanno valori predefiniti amichevoli, cioè i valori che sono al reset vi stanno aiutando che questi sono configurati come porta e di solito sono configurati come input, quindi non dovete preoccuparvi.
Quindi, l'unica cosa che devi fare è, devi decidere se vuoi che la porta diventi input o output scrivendo nel registro di direzione e se hai scelto di diventare output per scrivere valori nel registro di output e questo è. Solo quando si desidera invocare la funzionalità aggiuntiva, la funzionalità secondaria deve preoccuparsi di scrivere nei registri PSEL e PSEL2.
Ora visto che in questo primo esercizio ci occupiamo di scrivere valori di scrittura, convertendo questi pin come valori di output e di scrittura di quelli e zeri che siamo, il nostro programma sarà molto semplice. Ma dobbiamo ancora passare attraverso come manipoliamo i bit, in modo da poter fare un 1 o 0.
(Riferimento Slide Time: 26:17) Così come sappiamo, coinvolgiamo operazioni di bitwise e possiamo invocare o funzionare, ovvero due bit in corrispondenza corrispondenti e due bit per questo usiamo un simbolo questo, per o usiamo, questo XOR lo usiamo qui, per il turno di turno usiamo questo, per sinistra usiamo questo, e per invertire usiamo questo tilde. Vediamo alcuni esempi per affrontare questo aspetto. (Fare Slide Time: 26:40) Ora, visto che i pin di output in ingresso sono configurabili in modo indipendente, è molto importante capire quali informazioni stiamo scrivendo in qualsiasi registro di direzione, quindi all'interno del registro di emissione, leggendo dal registro di input, selezionando i valori di pull-up appropriati abilitando o disabilitando il registro REN, e così via. Quindi qui diciamo che eseguiamo un'istruzione P1OUT uguale a P1OUT o BIT3. Ora quello che è questo BIT3, BIT3 sono valore memorizzato nel file di intestazione associato a questo, lo mostreremo con un esempio.
E questo ci permette, questi sono i bit di maschera, ora se dico BIT3, ora fatemi vedere dove è BIT3. Nel 8 - bit registro questo è un po' 0, 1, 2 e questo è un po' 3. Ora stiamo dicendo che P1OUT è uguale a P1OUT o con bit 3, quindi il bit 3 è 0 0 0 0 1 0 0 0. Essenzialmente questo non è altro che se si vede che questo diventa questi sono quattro bit diventano 0, questi 4 diventano 8, quindi questo è 0 8 in esadecimale.
Quindi, questi 3 stanno facendo la stessa cosa, qui ci si dice esplicitamente che P1OUT è uguale a P1OUT valore originale studiato con BIT3 che è 8. Nella seconda affermazione lo stiamo dicendo in un modo diverso, stiamo dicendo che P1OUT è uguale a, ripetere questa operazione P1OUT con dispari con BIT3. E in questo si dice esplicitamente, che o P1OUT con questa informazione che è 0x08. Quindi, questo è il modo in cui puoi manipolare i bit usando l'oroperatore. Ora abbiamo visto, come fare un po' 1 o 0 su uno qualsiasi dei piedini di porta. Vediamo come facciamo a girare quel LED acceso.
(Riferimento Slide Time: 28:53) Ora si vede qui, l'ipotesi di base è che sul nostro porto in questo caso P1.3 il nostro LED è collegato come questo, il che significa che se il bit è 1 il LED brillerà, se il bit P1.3 è 0 diventerà, si spegnerà. Ora vogliamo spegnere il LED, non sappiamo qual è il valore precedente, non sappiamo se il LED fosse acceso o spento, come si fa a spegnere quel LED? Ora non c'è modo di rivolgersi direttamente a questo LED, perché, perché questo pin fa parte di otto pin e quindi se scrivi a questo registro è probabile che cambi le informazioni sugli altri bit.
Quindi quello che dobbiamo fare è, dobbiamo isolare questo bit e farlo solo 0 e quindi questo è ciò che fa, che P1OUT è uguale al valore originale di P1OUT che significa il valore che esiste proprio ora su questa porta, voglio e con l'invert di BIT3, ho già accennato a quello che è BIT3, BIT3 è 08hex, il che significa 0 0 0 0 1 0 0 0.
Ora qual è l'invert di questo, diventa 1 1 1 1 0 1 1 1 1 che è uguale a F7. Quindi in questo, senza menzionare esplicitamente F7x, ho invertito quel bit e coinvolto in quell' operazione che prenderà il valore originale del port 1 out register e con questo F7 che renderà la BIT3 pari a 0 e io manderò quell' informazione a quel porto, cosa farà, manterrà le informazioni sul resto dei sette piedini e realizzerà solo porta 1 BIT3 pari a 0.
Un altro modo di fare è questo. E la terza via è quella di citare esplicitamente, che si desidera e P1OUT con F7 che ovviamente, si è ottenuto usando inversione di BIT3 anche. Ecco, questo è il modo di trasformare un particolare pin del precedente mostrava come accenderlo.
(Riferimento Slide Time: 31:06) Ora nel caso in cui si desideri effettuare un particolare pin di porta come input, allora è necessario leggere il valore sul registro chiamato P1IN. E qui abbiamo fatto un esempio, che supponga di avere un interruttore collegato a P1.5, port1 bit 5 poi devi e il BIT5, ora cos' è BIT5?
Ecco, questo è 0 1 2 3 4 e questo è il 5 6 e 7, quindi volete sapere qual è questo valore così lo leggerete, isolare questo bit e se, se l'operazione di ingombrante è pari a 0 che significa questo bit è 0 potete scegliere di fare qualcosa, se altro potete fare altro, questo è il senso di questa struttura del programma.
Così, potete leggere intero registro P1IN, isolare un determinato bit che siete interessati ad utilizzare operazioni di bit e il risultato sarà di 1 o 0 minuti, che vi permetteranno di fare una o l'altra cosa che volete fare. Così abbiamo visto ora come manipolare i registri per programmare adeguatamente il MSP430, in modo da poter controllare i pins che siano input o output, in questo momento ci occuperemo dei pins della porta come output e quindi siamo pronti a scrivere il nostro primo programma e a scriverlo, compilarlo e poi scaricarlo nel nostro MSP430 per controllare il LED che è collegato sul pin appropriato della scatola del pranzo MSP430, che citerò nella parte successiva di questo dove passerò al portatile.
Quindi, quello che ho qui è il mio portatile e ho aperto il programma 'Hello LED' l'avresti scaricato dal repository git e vedrei un programma chiamato 'Hello LED' ci passerò.
(Riferimento Slide Time: 33 :09) Quindi, la prima parte del programma parla di includere MSP430H, questo è un file di intestazione che ha informazioni utili, come il bit mask e così via. Poi hai il codice principale, questo codice principale è come un loop infinito dove si sta facendo qualcosa. E il reset, quando hai resettato un micro controller MSP430 ti ricordi quando parlavamo di reset che gira sul timer watchdog e se il timer watchdog è acceso ti resetterà molto di frequente.
Quindi, non vogliamo che il timer watchdog interrompiamo quello che stiamo facendo o per fermare quello che stiamo facendo e quindi, la prima istruzione è quella di fermare il timer watchdog dalla generazione di informazioni di reset. Poi veniamo a trattare con il decidere la direzione del nostro porto, qui abbiamo LED collegati a bit sette. E così quello che facciamo è, facciamo P1DIR che è il registro di direzione per la porta 1 ce la facciamo 1 e lo facciamo senza incidere sulla funzionalità sugli altri piedini.
Abbiamo quindi un'istruzione chiamata P1DIR è uguale a P1DIR ormeggiata con 0x80, quindi significa che il bit più significativo è pari a 1 il resto 0 è andato, è ordito con il resto della, con il valore originale del registro di direzione e che viene inviato nuovamente al registro di direzione, questo configura P1.7 pin per diventare un pin di output. Ora, nella forma attuale che abbiamo, stiamo scrivendo un 1 in quello dicendo che P1OUT è uguale al valore originale di P1OUT ormeggiato con 0x80, quindi lo stiamo trasformando e ci sto per fare this.Quindi, seleziono il programma 'Hello LED' e su di cui premo il progetto di ricostruzione e si vede cosa fa, sta per compilare il programma e alla fine si scarica il codice nel bit del microcontrollore e si è comportato il LED dell'utente acceso. Ora lasciatemi modificare questo programma, in modo da spegnerlo. Commenterò questa parte del codice qui, mi perderò questo commento e scommento questa parte in cui voglio renderla 0 e così la rimuovo.
E ora ricompilerò questo, ricostruirlo, di nuovo ci sarà, lo sai compilarlo e poi scaricarlo e vedere il LED è stato disattivato. Quindi, questa è la prima parte dell'esercizio di scrittura di un programma e scaricandolo nel kit del microcontrollore.
Ciò che abbiamo visto in questo, che la nostra prima parte dell'istruzione è quella di disabilitare il timer watchdog, quindi selezionare, scrivere nel registro di direzione in modo da selezionare la direzione del bit con cui abbiamo a che fare, in questo caso si tratta di P1.7, e poi da quando lo vogliamo come output scriviamo valori appropriati sul registro di output che è P1OUT su bit sette perché non vogliamo condizionare i piedini di uscita di altri bit, quindi solo isoliamo P1.7 e scriviamo se vogliamo scrivere un 0 spegneremo il LED, se scriveremo un 1 accenderemo il LED, e questa è la prima parte di questo esercizio.
Ora questo può sembrare molto banale, ma riuscire a venire a questo punto ti dà grande fiducia per molte cose, una che il tuo processo di compilazione sta funzionando, che hai la possibilità di scaricare codice nel tuo board di lavoro e che anche il board funziona.
Ora passiamo alla seconda parte di questo programma, che è quello di sbattere sostanzialmente lo stesso LED quindi invece di girarlo o spegnerlo, aggiungiamo un certo codice in più in quello iniziale questo programma e lo fanno sbattere.
(Riferimento Slide Time: 37 :52) Quindi, questo chiamiamo come 'Hello Blink' lo si farebbe di nuovo, scaricandolo dal git si avrebbe accesso a questo. Qui di nuovo abbiamo l'istruzione di inclusione e poi abbiamo il loop di codice principale che è un loop infinito in quanto noi, sulla linea numero sette o qualunque sia la linea che avete sulla vostra versione troverete di aver disabilitato il timer watchdog.
E poi scriviamo la direzione, facciamo la direzione del pin 1,7 porta 1 bit sette, la facciamo emettere scrivendo un 1 in esso e poi entriamo in un loop infinito.
Vedi nel caso precedente volevamo solo scrivere 1 o 0, ora vogliamo scrivere continuamente 1 minuti con qualche ritardo scriviamo un 0, poi con qualche ritardo scriviamo di nuovo 1 e così via di soforth, in modo che il LED possa lampeggiare. Ora sembrerà lampeggiare solo quando il ritardo tra, ritardo tra la virata e il spegnimento è sufficiente per essere osservato dall'occhio umano e così abbiamo scritto un ritardo, una piccola funzione di ritardo che ritardi, assicura che lo stato del LED sia retto