Conexión de un zumbador a un MSP430G2553

La idea es obtener un pequeño pitido cuando se pulse un botón. Además, puesto que el microcontrolador va a estar ocupado, queremos que el control del pitido se realice en segundo plano. Para ello utilizaré el watchdog como temporizador.


Cómo funciona

Al pulsar un botón Se hace lo siguiente:

  1. Se incializa el Watchdog.
  2. Se pone a 1 la salida del zumbador.

Cuando la interrupción del Watchdog se ejecuta:

  1. Poner a 0 la salida del zumbador.
  2. Desactivar el Watchdog.


El código:

Configuración del Watchdog:

void setupWathdog() {
	WDTCTL = WDTPW | WDTHOLD;	// Detener el watchdog
	
	// Configurar el registro del watchdog
	//WDTCTL = WDT_ADLY_1_9;	// Una posibilidad
	WDTCTL = WDTPW+WDTTMSEL+WDTCNTCL;	// Password + timer mode + counter clear
										// WDTSSEL = 0  (Utilizo SMCLK)
										// WDTISx = 0 (SMCLK / 32768)
	IE1 |=WDTIE;	//Activo interrupción
}

Al pulsar el botón:

    setupWathdog(); // Activa watchdog
    P1OUT |= BIT0; // Empieza a pitar

Interrupción del Watchdog:

#pragma vector = WDT_VECTOR
__interrupt void watchdog(void)  {
	WDTCTL = WDTPW | WDTHOLD; // Detiene watchdog
	P1OUT &= ~BIT0; // Detiene el pitido
}


El circuito:

buzzer_esquema

 

 

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Time limit is exhausted. Please reload CAPTCHA.