MSP430, Microcontrollori 16 bit Ultra Low Power

Una base , ma base-base

  • simoblack
  • Autore della discussione
  • Nuovo Utente
  • Nuovo Utente
Di più
6 Anni 11 Mesi fa - 6 Anni 11 Mesi fa #6 da simoblack
Risposta da simoblack al topic Una base , ma base-base
Ok, per ora non ne capisco l'utilità, ma faccio come dici
Code:
#include <msp430.h> void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer P2DIR |= 0x06; // Set P2.1 and P2.2 to output direction P2OUT &= ~(0x06); // set P2.1 and P2.2 to 0 (LED OFF) while (1){ if (P1IN & 0x40){ P2OUT = 0x02 + ~0x4;} //se premo il pulsante collegato al "BIT6" si accende il Led1 e lascia il 2 in off else P2OUT &= ~(0x06); //altrimenti led1 e led2 in off } }
il risultato non cambia...
Ultima Modifica 6 Anni 11 Mesi fa da simoblack.

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Cosimix
  • Elit Utente
  • Elit Utente
Di più
6 Anni 11 Mesi fa #7 da Cosimix
Risposta da Cosimix al topic Una base , ma base-base
Una curiosità.. prova il seguente codice:
Code:
#include <msp430.h> void main(void) { WDTCTL = WDTPW | WDTHOLD; // Disabilito il chiwawa P2DIR |= BIT1; // Il BIT1 è un output while(1) { if(P1IN & BIT6) P2OUT |= BIT1; // Il led si accende alla pressione del pulsante else P2OUT &= ~BIT1; // Il led è spento quando il pulsante è a riposo (aperto) } }
Funziona correttamente secondo quanto riportato nei commenti?

Saluti,
Cosimo

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • simoblack
  • Autore della discussione
  • Nuovo Utente
  • Nuovo Utente
Di più
6 Anni 11 Mesi fa #8 da simoblack
Risposta da simoblack al topic Una base , ma base-base
Ciao Cosimix! Ho provato il tuo code e funziona come commentato, anche se avevo già fatto qualcosa di simile facendo accendere e spegnere insieme i due led ed anche in quel caso funzionava correttamente...

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • simoblack
  • Autore della discussione
  • Nuovo Utente
  • Nuovo Utente
Di più
6 Anni 11 Mesi fa #9 da simoblack
Risposta da simoblack al topic Una base , ma base-base
Scoperto l'arcano, il problema era nella basetta di sviluppo (dico così per giustificare il fatto che sono ottuso). I Led erano collegati con l'anodo ai pins del micro, mettendo dei led esterni ed negando il pulsante (che ha una resistenza in pull-up e non, come avevo detto prima, in pull-down) funziona tutto. Modificando il codice in virtù di queste "scoperte" funziona tutto. Il codice funzionante è il seguente:
Code:
#include <msp430.h> #define button (P1IN & BIT6) void main(void) { WDTCTL = WDTPW | WDTHOLD; // Disabilito il chiwawa P2DIR |= BIT1 + BIT2; // Il BIT1 e BIT2 sono un output P2OUT &= (BIT1 + BIT2); // Metto i pin a livello alto (i led hanno l'anodo sui pin) while(1) { if(!button){ // Se premo Nego il pulsante che ha la resistenza di PULL-UP P2OUT = (!BIT1 + BIT2) ;} // Metti il BIT1 in LOW e il BIT2 in HIGH else P2OUT = BIT1 + BIT2 ; // Altrimenti entrambi in HIGH } }

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
6 Anni 11 Mesi fa #10 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Una base , ma base-base
Grazie della conferma.

Lo schema elettrico non è da sottovalutare!
Questa scottatura aiuterà per le prossime difficoltà.

Saluti,

Mauro

Si prega Accesso o Crea un account a partecipare alla conversazione.

Moderatori: Mauro LaurentiMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Forum - Ultimi messaggi