Loading
Note di Apprendimento
Study Reminders
Support
Text Version

MSP430 Digital Input e Output: Switch Interaffrontando

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 DesignProfessor Dhananjay V. GadreNetaji Subhas University of Technology, New DelhiLecture - 23MSP430 Digital I/O: Switch InteraffrontandoCiao e benvenuto in una nuova sessione. Sono il vostro docente, Dhananjay Gamma, e sonoconducendo la sessione per il corso online su Introduzione a Embedded System Design. Nella precedente lezione diabbiamo collegato il microcontrollore MSP430 usando il MSP430 lunchbox aLED e abbiamo visto come potevamo alternare i LED o potremmo accendere e spegnere i LED; noiabbiamo chiamato quei programmi HelloLED o HelloToggle. Ora in questa sessione andiamo a considerare i dispositivi di inpute il dispositivo di input più comune è un interruttore. Vediamo quindi come possiamo interfacciarcian MSP430 agli interruttori.Un interruttore è un dispositivo meccanico è composto da due piastre di metallo con la cover più corta sopra di esso,che quando l'utente preme il pulsante di plastica, la cover, la copertura metallica all'interno accorcia i duecontatti dell'interruttore; quando l'utente lo rilascia, la cover retrò e la connessione è spezzata.Quindi usando questa disposizione, i contatti dell'interruttore di accensione tra o spostati tra duestati, l'interruttore è aperto o lo switch è chiuso. Per garantire che il commutatore retrasse di solito c'è una connessione di primavera, disposizione di primavera.(Fare Slide Time: 01.54)Ora a causa di questo, il commutatore spesso rimbalzi come abbiamo discusso, ma prima ancora, l'interruttoreha due stati; aperto e vicino. E questi stati dobbiamo tradurre in logica 1, se la logica di wescegliere 1 per apertura, poi la stretta deve tradursi a 0 o possiamo avere un'altra possibilità chepossiamo avere open translate alla logica 0 e poi la chiusura si tradurrà in logica 1. E questo èottenuto utilizzando una configurazione di resistenza a pull-up o di resistenza a discesa. Vediamocome queste configurazioni sembrano.(Fare Slide Time: 02.33)Ecco la configurazione a discesa. Come vedete qui, abbiamo, questo è l'interruttore meccanico, questoè il resistore a discesa, e nella seconda configurazione abbiamo l'interruttore qui e il pull-upresistore e la connessione tra il resistore e l'interruttore in entrambi i casi sta andando su un pin di microcontrollore, in questo caso, qualche pin MSP430 che può essere configurato come input. (Fare Slide Time: 03.05)Ora guardiamo a quali resistenze impegnarsi, cosa resisto al programma in modo da poter collegare un interruttoresu un pin di input-output, configurare il pin come input e senza dover usare resistenzeesterne, invocare l'interno struttura, funzione interna per utilizzare una funzione di pull-up o utilizzare una funzione di discesa. E per questo abbiamo quattro resistenze che è PxDIR, il che significa che se siamoa parlare di porta 1, diventerà P1DIR allora dobbiamo, quindi dobbiamo configurare P1DIR,appropriato bit di P1DIR, dove vogliamo collegare un interruttore come input.Poi dobbiamo essere in grado di leggere P1IN perché questo ci darà informazioni che cos' è lo statodel nostro switch, che sia 1 o 0. Se vogliamo impegnare le resistenze interne o le resistenze a discesa,allora dobbiamo abilitare che utilizzare questa funzione, utilizzando questa resistente e se vogliamo avere un pull-up o un pull-down diverrà esercitato scrivendo un valore appropriato di 0 o 1 nell'appositobit nella resistore P1OUT, P1OUT e questo è P1REN.Così questa sono le resistenze di cui dobbiamo occuparci. Ci sono altre resistenze che sono P1SEL eP1SEL2 ma queste sono utilizzate solo quando vogliamo invocare funzioni alternative su un determinato pin,e dato che abbiamo deciso di voler utilizzare questo pin come input, non ci faremo disturbareda queste due resistenze, non le useremo nel nostro programma. Ora per leggere un interruttore nonleggeremo un solo bit, abbiamo collegato il passaggio a uno dei piedini, che significa a uno dei bit,ma quando leggiamo il porta avremo tutti i 8 e dovremo quindi isolare quel bit che possiamo prendere una decisione è il bit che inviamo un 0 o è il bit che inviamo un 0, e possiamo scegliere aimplementare una determinata funzione se il bit è 0, cosa fare; se il bit è 1, cosa fare.(Fare Slide Time: 05.53)Ora nel nostro caso abbiamo, sul nostro lunchbox, abbiamo un interruttore disponibile sul lunchbox eè stato collegato a P1.3 ed è stato utilizzato un resistore esterno in lo stato di pull-up equindi, dovremmo garantire che nel nostro programma ci si prenda cognizanza di questa caratteristica che un interruttore èconnesso a P1.3 pull-up resistore è stato utilizzato e quindi il programma deve opportunamentericonoscere questa configurazione.Quindi essere in grado di identificare se l'interruttore è premuto, quando l'interruttore non è premuto daràuna logica 1 perché c'è una resistente di pull-up, ecco come è. Ecco l'interruttore collegato aground, ecco la resistente di pull-up e la giunzione va a P1.3. Così quando l'interruttore non èpremuto, ti darà la logica 1; quando lo switch viene premuto, ti darà la logica 0. Quindi sono, dalettura P1IN e poi ANDing con bit 3, bit 3 niente ma un meccanismo da identificare eisolato 3, il suo valore è 00001000 perché questo è bit 0, bit 1, e bit 3. C'è un 1, questa è una maschera, il valore della maschera, e da ANDing qualunque sia stato letto daporta 1 IN, da ANDing si otterrà risultato binario, il risultato è 0, ma perché questobit 1, il terzo bit è 1, se il risultato è 0, l'operazione ANDing, l'operazione di ANDing bit - wise portaa 0 che significa il bit 3 che viene letto dal pin ha riportato un 0. Se è il 1, l'ANDing saràdiventato 1, quindi se questo è uguale a 0, allora fai qualcosa di quello che vuoi fare se l'interruttore è stato pressato, altrimenti se non viene premuto, tornerà un 1 e poi puoi fare altro. Questoè la logica di base mediante la quale rilevare che un interruttore è pressato o non pressato e possiamo scegliere afare una o le altre attività in questo programma.(Fare Slide Time: 08.06)Ora, perché gli interruttori meccanici esibiranno rimbalzare e qui è il recap di ciò che accade,quando l'interruttore non viene premuto si otterrà una logica 1, quando l'interruttore è premuto si potrebbeosservare un fenomeno come questo. Questo è stato catturato su un oscilloscopio dello storage digitale, leipotrebbe provare a registrare un evento del genere a proprio fine. Tuttavia, non significa che ogni interruttorestampa porti a tanti alti e bassi. Nel tuo caso potrebbero essere di più, in questo è possibile ancheche riceverai ancora meno rimbalzi, è anche possibile che tu non ti venga rimbalzato, qualsiasi rimbalzo su tutti.Così non ti allarmare questa è una situazione estrema e abbiamo preso diverse registrazioni sul nostro oscilloscopiosolo per identificare una situazione in cui mostra diversi rimbalzi e l'idea è quella di convogliareche interruttore, gli interruttori fanno rimbalzi e questa una situazione estrema, è possibile che non arrivialcun rimbalzo. E come accennato qui, il rimbalzo è a causa della natura meccanica dello switch, la primavera, e avrebbe delle fluttuazioni ed è per questo che si fa rimbalzi. (Vedi Slide Time: 09.31)Ora la domanda è che non possiamo avere un rimbalzo nel nostro programma, perché il rimbalzo avrebbe portatoad essere interpretato una volta se ci si vede qui, ancheanche se il commutatore è stato premuto solo una volta ma se il programma non rimuove questo rimbalzo, siconcluderà che è stato premuto una volta, due volte, thrice, quattro, cinque volte e potrebbe fare cinque cosema sappiamo che è stato pressato solo una volta, quindi dobbiamo trovare un meccanismo per rimuovere questefluttuazioni. (Fare Slide Time: 09.56)E un metodo è quello di utilizzare una tecnica di debounce hardware e un semplice condensatore qui di un valoreadatto, che deve tener conto del valore della resistore, della resistente pull-up in modo cheR e C faccia un filtro a basso passaggio. E quindi se sappiamo che i nostri interruttori di commutazione dicono, in questo caso comesi vede la coppia di 100 microsecondi. Quindi se hai la frequenza di filtraggio a basso passaggio per essere moltoinferiore a 1 da, in questi casi, 1 da 300 microsecondi qualunque sia la frequenza risultante, se siscegli il, se scegli il valore della R e C tale che la frequenza risultante è molto minore, allora questo sarà in grado di debounce del commutatore in hardware.Tuttavia, non mi raccomando questa soluzione. Perché? Perché in vera applicazione, un tale condensatoresi aggiungerebbe al costo. Se hai 10 interruttori significherebbe dover usare 10 condensatori. Eil motivo è che questi condensatori possono essere facilmente evitati utilizzando un metodo alternativo, ovverochiamato software di derimbalzo. Ma qui la cattura su un DSO mostra che ora la transizione èmolto affumicante, non c'è rimbalzo su di esso e perché il condensatore si vede questa sorta di funzione di ricaricafunzione sulla transizione della tensione da 0 a 1.Così vediamo cosa è il software che derimbalza. Nel caso di sgonfiaggio del software, semplicemente,una volta rilevato che c'è una transizione dell'input del pin che a cui il commutatore èconnesso, ci limitiamo semplicemente a guardare quel pin per un certo periodo di tempo.(Fare Slide Time: 11.32)E ad esempio, potremmo utilizzare 20 millisecondi di ritardo, ma si può alterare questo ad essere di valoridiversi. Ad esempio, se sai il tuo interruttore rimbalza solo per circa 200 microsecondi, allorapotresti decidere di utilizzare un periodo di ritardo di debounce da 1 millisecondo e puoi giocare con questo per ottenereun valore ottimale.Nei nostri esempi che mostreremo successivamente appena dopo questo, abbiamo usato un ritardo di 20 millisecondie ci facciamo passare ora alla nostra configurazione hardware, dove abbiamo questo portatile, noiabbiamo collegato anche il lunchbox MSP430. C'è interruttore sul lunchbox già collegatoa P1.3, ma vogliamo illustrare come potremmo utilizzare le configurazioni interne di pull-up e pull-down. (Fare Slide Time: 12.36)Abbiamo un breadboard qui, su questo breadboard ci sono due switch che sono staticonfigurati nelle configurazioni di pull-up e pull-down, significa che abbiamo un interruttore in un casodove l'interruttore è connesso. Due terminali dello switch sono disponibili qui. Se vogliamo utilizzarenella modalità di discesa, lo mettiamo a terra. Così ora queste due connessioni sono disponibili, noila connetteremo ad un apposito pin, pin di MSP430 e questo sarà collegato a terra.Abbiamo un altro interruttore in cui il commutatore, ora per questa configurazione dobbiamo invocarela funzione pull-up, abbiamo un altro interruttore qui dove l'interruttore è collegato a VCC, qui,e l'altro pin è disponibile qui e questo andrà a VCC del MSP430, questo andrà ad un altro pindi MSP430 e questa configurazione ci permette di testare la funzione di pull-down. Così abbiamo, noifaremo, testiamo diverse versioni del programma, uno senza derimbalzare sia nel software hardware che in quello, e poi è possibile osservare cosa succede con il risultato di quell' interruttore, interruttore interruttore.In altro caso coinvolgerà un debounce hardware, poi aggiungiamo un debounce software, utilizzandol'interruttore di bordo sul lunchbox. Poi avremo due versioni del programma in cui noiutilizzeremo questo breadboard, useremo i fili di salto per collegarsi ad un interruttore e poi l'altro interruttore,uno che è la funzione di pull-up e l'altro che utilizza la funzione di pull-down.Quindi assicurati che il tuo hardware sia pronto e segui gli esempi di programma per testare questi esperimenti. Qui ci collezioniamo interruttori in varie configurazioni e sto andando avi mostrerò cinque versioni del programma, ho quattro versioni del programma. (Fare Slide Time: 14.49)La prima versione è, sto per usare l'interruttore di bordo, come sapete questo interruttore è collegatoal bit P1.3, e se si guarda il codice che potete, sicuro avretescaricato, vedrete che l'interruttore è collegato al bit 3, il LED a bordo di MSP430lunchbox è già collegato il bit 7, in un precedente esercizio che avevamo visto, sperimentato conquesto LED e l'avevamo acceso e avevamo che lo ha trainato. Quindi è la stessa configurazione LED.Poi, ora veniamo alla parte codice principale del programma, qui la prima istruzione parla diarresto del timer watchdog. Ne abbiamo parlato ieri anche che lo stato predefinito dopo il reset è,uno, il timer watchdog è acceso; due, la frequenza di clock master è di 1,1 megahertz. Così il nostro programmaè in esecuzione a 1,1 megahertz, non stiamo cambiando altro, 1,1 megahertz è okper i nostri esperimenti, quindi continueremo con quello.Ora in questo, abbiamo, così come ho accennato dobbiamo prima determinare la direzione del nostro pin, il nostro pin, in questo caso, è collegato allo switch è collegato a P1.3, il nostro LED è collegato a P1.7.Quindi dobbiamo determinare e dettare la direzione di questi due piedini che sono bit 3 e bit 7. Laprima istruzione dopo aver spento il timer watchdog trasforma la direzione P1 su bit 7 in modo che sia 1,e facendo quel pin 1, diventa un pin di output.E la seconda istruzione parla di, quindi la prima istruzione è P1 direzione resistore è uguale aqualunque valore di direzione P1 è ORed con una costante qui che è in realtà un valoredi LED, LED è bit 7, questo significa che il bit più significativo è 1, il resto sono tutti 0, quando lo weOR, in P1DIR bit 7, si ottiene un 1. E quando lo invii a P1DIR resisto quel bit diventa1 che significa il, quel determinato bit diventa output.Nella seconda istruzione qui P1DIR si sta dicendo che P1DIR è uguale a P1DIR ANDed con il valore invertitadella costante maschera chiamata SW. SW è al bit 3 e quindi, essenzialmente saràfar sì che il bit P1.3 in P1DIR resisto sia pari a 0. Questo renderà il pin come input. Ora una voltaqueste due istruzioni vengono eseguite, siamo pronti, abbiamo deciso, abbiamo convertito P1.7 come outpute P1.3 come input. E questi sono tutti a bordo che si trova sulla lunchbox, l'interruttore è collegatosu P1.3, e LED, l'utente LED è collegato su P1.7.Poi l'istruzione successiva è un loop infinito che dice, mentre 1. Mentre 1 significa che si entra nel programmae poi non si esce da questo programma. In questo programma siamo in attesa diper l'interruttore da premere, cioè se l'interruttore su pin 1,3 non è premuto, non si va versoinserire il secondo loop e ci si aspetta lì, ma il momento in cui si scopre che l'interruttore èpremuto, otterrete una logica 0. Perché? Perché in questa configurazione abbiamo usato un resistore di pull-upesterno.Così quando l'interruttore non viene premuto, si otterrà un 1, il momento in cui lo switch viene premuto la logicaall'interno dell'if - statement qui diventerà 0, l'invert di quello diventerà 1. Quindi se questa condizione èvera, quella condizione è vera, quando l'interruttore viene premuto si entra nel se - loop. In quantosi è di nuovo in attesa che l'interruttore venga rilasciato perché lo si preme, di solito, l'interazione umanasignifica premere lo switch per una durata molto più lunga e così questoterrà lo stato di quel pin a 0, si attende che venga rilasciato. Questa è la seconda istruzione.Quando si rilascia l'interruttore, l'interruttore, il bit P1.3 diventerà 1 e poi in quel momento saràuscito da quel mentre - loop, l'interno mentre - loop e si altererà il LED. P1OUT è uguale ail valore all'invert LED di quello, ANDed con l'invert di quello. Così si altera il valore LEDe ora una volta compilati questo programma, si ricostruiscono il progetto. Questo saràcompilato e quindi scaricato. Sì, ora è pronto.Ora quando premo questo e rilascio vedrete che la maggior parte del tempo si altera, corretto, maa volte manca. Vale a dire che anche se stampa e rilascio, lo stato LED non tollera da 0 a 1o da 1 a 0, a volte rimane. Quindi ti consiglio di giocare con esso per renderti conto che questo problema esiste perché hai permesso all'interruttore di passaggio di propagarsi attraverso il programma equindi a volte ci mancherebbe, a volte non sarà in grado di alternare in un modo che tuti aspetti.Ora puoi ripercorrere questo programma, puoi continuare a sperimentare questo programma collegando un condensatoretra l'interruttore e il terreno e ti consigliamo un valore di circa 0,1 microfaraddi condensatore ceramico tra P1.3 pin e terra e ripeti questo, e troverete che la performanceper quanto riguarda il toggling il LED è preoccupato, potrebbe migliorare, migliorerebbe. Quindi sononon lo faccio qui ma ti consiglio di provare quello, lo stesso programma collegando un condensatore.Questo farà derimbalzare hardware.Ma come ho accennato, nelle applicazioni embedded il nostro obiettivo è il costo e il costo significa menocomponenti, il che significa che dovremmo evitare di usare il più possibile un componente esterno, provaread utilizzarlo attraverso quella funzionalità, provare a guadagnare quella funzionalità utilizzando il software. Quindi siamoandando ad evitare di usare un condensatore e invece ci impegneremo nel software di derimbalzo.(Fare Slide Time: 21.35)Così il secondo programma che voglio mostrarvi qui è una variazione di questo programma ma con unapiccola modifica che una volta rilevato l'interruttore, chiamerò una subroutine di ritardo didurata appropriata, una volta rilasciato l'interruttore, di nuovo chiamerò una subroutine di ritardo e poi ioaltererà il LED. Quindi il resto delle istruzioni sono le stesse, hai ancora il loop 1, stai aspettando che l'interruttore venga premuto, quando un interruttore viene premuto si otterrà una logica 0 inquell' operazione, invert di quella che otterrete una 1.Così se - condizione diventa vera, il momento in cui ci si trova all'interno è un ritardo software di 20millisecondi. Questa è una funzione incorporata, si sta dicendo ritardo per 20000 istruzioni che portano acirca 20 millisecondi di ritardo e poi si attende che l'interruttore venga rilasciato. Questo ha derimbalzatola parte in cui hai premuto l'interruttore, ora stai aspettando che l'interruttore venga rilasciato,che è il primo mentre - loop all'interno che se - loop. Quando si rilascia l'interruttore, di nuovo si ritarda, stesso20 millisecondi debounce e una volta terminato, una volta completato il ritardo di 20 millisecondi,si altera il LED. E ci troverete in questo se - loop che si trova all'interno di un infinito mentre - loop.Ora fatemi tornare al primo programma che abbiamo testato nella lezione precedente, dove abbiamo mostratoche il nostro codice ha un loop principale e basta accendere il LED o alternare il LED. Ora ioho accennato che quello è un loop infinito, sebbene non ci fosse mentre 1 tipo di loop.Ora vedi il motivo per cui ti ho accennato è, anche se il programma principale ha una sola istruzione, la domanda che devi fare è cosa fa il microcontrollore quando quell' istruzionein quel loop principale è finita? Vedi il microcontrollore hanno tutte le caratteristiche, tutta la necessità, ecosistema necessario che supporta la continua esecuzione del programma, anche senon hai fornito un'altra istruzione da eseguire, il microcontrollore si ferma o lo facontinua ad eseguire un programma? La risposta è che continua a eseguire un programma dove tienein attesa, continua, va in un loop infinito che non fa nulla, il che significa che il microcontrollore èancora funzionante, tranne che non sta facendo cose utili.Così un programma principale è ancora un loop infinito, in questo caso è esplicito, nel caso del nostro switchesperimenti è esplicito perché abbiamo un, all'interno del loop principale abbiamo un loopinfinito. Ma anche se non ci fosse, quando il programma è compilato, continuerà comunque a lavorarecosì. (Fare Slide Time: 24:33)Ora andiamo alla seconda, terza versione del nostro programma, dove non useremo un interruttore di bordo. Invece, utilizziamo interruttori esterni, abbiamo un interruttore in cui siamoandando a abilitare la resistente pull-up interna o la resistenza a discesa interna connessa ad un diversopin.Ora se vedete questo programma questo si chiama HelloSwitch con l'opzione di pull-up resistor. Eora la definizione di switch è cambiata, invece dell'interruttore su bit 3, è su bit 4. Il LEDè ancora su bit 7, il che significa che useremo il LED di bordo che si trova sul lunotto MSP430. La nostra prima istruzione dopo che entriamo nel loop principale è ancora quella di fermare il timer watchdog eora abbiamo creato un'istruzione in cui abbiamo acceso il bit sulla porta 1, che è collegatoal LED come output.Abbiamo attivato lo switch che, il pin collegato allo switch, in questo caso, P1.4 come input. Ma a parte questo, abbiamo altre due istruzioni, una dice P1REN è uguale a P1RENORed con il valore di interruttore.Così abbiamo abilitato la funzione di pull-up interno con questa istruzione e la successiva istruzione èP1OUT uguale a P1OUT ORed con la maschera interruttore. Che stiamo facendo? Stiamo facendo in modo cheP1OUT su porta un bit 1,4 pari a 1. Cosa fa questo? Ciò consente la resistenza di pull-up. Quindi hoconnesso il, colleziono l'interruttore appropriato in cui è collegato alla funzione pull-upe ricompileremo questo programma, qui questo filo, ci sono due fili, uno è toground e VCC e il terzo filo è a un interruttore appropriato. In questo caso, l'interruttore è taleche si tratta di una configurazione di pull-up. Quindi useremo la funzione di pull-up interna.Sto per, qui il programma è compilato e è stato scaricato. Ora lasciatemi premere questo interruttoree vedete che l'interruttore è alternato nativamente, non sono state utilizzate resistenze esterne. Perché?Perché una resina a pull-up interno è stata usata con derimbalzo, ha anche la stessa logica di debounce.Così abbiamo, abbiamo lo stesso programma rispetto alla versione precedente di derimbalzamento, abbiamoappena aggiunto una funzione che abbiamo commutato l'interruttore, spostato lo switch da P1.3 a P1.4 connettendo un interruttore esterno, l'interruttore è configurato nella configurazione a pull-up e abbiamousato una resistenza a pull-up interna, nient'altro cambia. Così ora quando ho compilato escaricato il programma, quello che trovo è che l'interruttore si altera nicemente, i token LED nativamenteogni volta che premo questo interruttore, che è un interruttore esterno con la resistenza di pull-up internoconnesso, ogni volta che stampa e rilascia il commutatore, il LED sul tabellone toggini nicemente.(Fare Slide Time: 28:19)Ora guardiamo alla quarta versione del programma, che utilizzerà lo stesso interruttore tranne che oral'interruttore è in discesa, utilizzerà un resistore a discesa. E i programmi iniziali sono tutti,le istruzioni iniziali sono tutte uguali, tranne quando arriviamo al punto di abilitare il valore di discesadel resistore. Qui vedi P1OUT è uguale a P1OUT e invert di SW, quindi ora cheP1OUT su quale pin? P1.4 è impostato su 0, questo abiliterà la resistenza a discesa. Quindi ora godo di cambiare l'input da questo switch, configurato per il pull-up a un altro switch, cheè configurato per il pull - down.Sto per compilare questo programma e scaricarlo ricostruendo questo progetto. Come si vede sul mio portatileil programma compila e ora ha scaricato, la build è terminata, il programma èscaricato. Ora vado a premere l'altro interruttore e ora si vede qui anche l'interruttore èderimbalzato internamente a causa del software.Se si vede la, all'interno del loop 1, abbiamo 20 millisecondi di ritardo, stiamo aspettando che l'interruttorevenga premuto e rilasciato. L'unica differenza è che ora siamo in attesa perché abbiamo un resistore a discesa, il valore è di 0 quando l'interruttore non viene premuto. Quindi è in attesa che il passaggio avenga premuto così diventa 1, finché non sarà il 0 ad attenderlo. E poi quando viene rilasciato, ancoraritardo e poi si altera il LED.Quindi ti consiglio di giocare con tutte queste quattro versioni del programma. Nella prima versione,non c'è alcun derimbalzo e si dovrebbe essere in grado di vedere che ci sono dei falsi toggini. Può migliorarequando si collega un condensatore esterno di 0,1 microfarad e poi il resto dei programmi sonotutti andando a sgonfiare l'interruttore. La seconda versione del programma utilizza l'interruttore di bordo,e la terza e quarta versione del programma utilizza interruttori esterni con pull-up interno opull-down resistor dato che il caso è di entrambe queste versioni.Quindi spero che questo ti chiarisca le enormi capacità di MSP430 microcontrollore di offrirepull-up interni e resistenze a discesa, che puoi invocare quando ci si connettono ad esternidispositivi meccanici come un interruttore e questo ci servirebbe nei programmi successivi eesperimenti di creazione di interruzioni e cose del genere. Così vi incontrerò in una nuova lezione moltopresto. Grazie mille, ciao ciao