Anda di halaman 1dari 7

UNIVERSIDAD NACIONAL DE SAN AGUSTIN DE

AREQUIPA

FACULTAD DE INGENIERDA DE PRODUCCION Y SERVICIOS


ESCUELA PROFESIONAL DE INGENIERIA ELECTRONICA

ASIGNATURA: SISTEMAS DE CONTROL AVANZADO

ALUMNO: CUBA DE LA CRUZ MAY RODYN


GUIA DE LABORATORIO

2. PERIFERICOS DE LA PLACA CONTROLADORA


2.PERIFERICOS DE LA PLACA CONTROLADORA MSP432-P401R

2.4 Procedimientos

1. Instalar Energía.

La versión de EnergiaMT instalada es la 1.8.7E21 , también se instalo el


software que controlara la placa MSP432 P401R como se puede apreciar en
la imágenes.

La imagen muestra la versión de software energía y como también el acceso


directo a dicha aplicación.

Se inicializa energía para la instalación de la placa RED LaunchPad


Para la instalación de la placa se ingresa a la pestaña herramientas y se
descarga la placa correspondiente en este caso MSP432 P401R

2.Conectar la placa controladora y probar el programa de encendido


de LEDs en destellos(blink a LED).

Para conectar la tarjeta controladora se debe descargar los drivers de


comunicación para no tener ningún problema de establecimiento de
conexión en el proceso de debug o depuración.
Para trabajar con los distintos led’s que se encuentran en la placa se
muestra los PINES en los que están definidos el Led rojo verde y azul.

Para probar el blink a Led es necesario buscar en el mismo energía el


ejemplo el cual es básico y puede cambiarse dependiendo de la definición
del LED cual se utilizara

#define LED RED_LED

//configuracion

void setup() {

// inicializa el pin digital

pinMode(LED, OUTPUT);

// rutina donde se produce el destello

void loop() {

digitalWrite(LED, HIGH); // turn the LED on (HIGH is the voltage level)

delay(1000); // wait for a second

digitalWrite(LED, LOW); // turn the LED off by making the voltage LOW

delay(1000); // wait for a second

}
3.Realizar un programa que permita variar la intensidad de iluminación de
un LED usando la generación de una señal PWM .Indique los principales
parámetros ,sus valores máximos y minimos.

El código para un programa de PWM modulación por ancho de pulso o ciclo


de trabajo se realiza de la siguiente manera .
Siendo 255 el máximo ciclo de trabajo pues establece 5 voltios a todo el
Periodo y siendo la mitad de este un ciclo de trabajo igual a 0.5 y la cuarta
parte 0.25 Dutty cycle.

void setup() {

//los pines PWM solo se usan como salida por ende no se definen

void loop() {

analogWrite(76,127)

7.Repetir los procedimientos anteriores desde el software Code Composer


Studio y con el sistema TI-RTOS.

Primero se prueba el destello del Led mediante el ejemplo que ofrece el


MSP432WARE.

#include "msp432p401r.h"

#include <stdint.h>

int main(void) {
volatile uint32_t i;

WDT_A->CTL = WDT_A_CTL_PW | // Stop WDT


WDT_A_CTL_HOLD;

P1->DIR |= BIT0; // P1.0 set as output

while (1) // continuous loop


{
P1->OUT ^= BIT0; // Blink P1.0 LED
for (i = 20000; i > 0; i--); // Delay
}
}
Segundo se prueba el PWM mediante el ejemplo que ofrece el
MSP432WARE.

#include "msp432p401r.h"
#include <unistd.h>
#include <stddef.h>
/* Driver Header files */
#include <ti/drivers/PWM.h>

/* Example/Board Header files */


#include "Board.h"

/*
* ======== mainThread ========
* Task periodically increments the PWM duty for the on board LED.
*/
void *mainThread(void *arg0)
{
/* Period and duty in microseconds */
uint16_t pwmPeriod = 3000;
uint16_t duty = 0;
uint16_t dutyInc = 100;

/* Sleep time in microseconds */


uint32_t time = 50000;
PWM_Handle pwm1 = NULL;
PWM_Handle pwm2 = NULL;
PWM_Params params;

/* Call driver init functions. */


PWM_init();

PWM_Params_init(&params);
params.dutyUnits = PWM_DUTY_US;
params.dutyValue = 0;
params.periodUnits = PWM_PERIOD_US;
params.periodValue = pwmPeriod;
pwm1 = PWM_open(Board_PWM0, &params);
if (pwm1 == NULL) {
/* Board_PWM0 did not open */
while (1);
}

PWM_start(pwm1);

pwm2 = PWM_open(Board_PWM1, &params);


if (pwm2 == NULL) {
/* Board_PWM0 did not open */
while (1);
}
PWM_start(pwm2);

/* Loop forever incrementing the PWM duty */


while (1) {
PWM_setDuty(pwm1, duty);

PWM_setDuty(pwm2, duty);

duty = (duty + dutyInc);

if (duty == pwmPeriod || (!duty)) {


dutyInc = - dutyInc;
}

usleep(time);
}
}