ASIGNACION DE MEMORIA PERIFERICA
Enviado por John0099 • 16 de Diciembre de 2017 • 2.905 Palabras (12 Páginas) • 412 Visitas
...
#endif
void main(void)
{
// code goes here
}
Se desactiva el WACTCHDOG TIMER
WDTCTL = WDTPW + WDTHOLD;
Configurando el led del puerto 1, bit 6:
P1DIR = 0x40 ;
P1OUT = 0,
La configuración del reloj del sistema se hace mediante:
BCSCTLS3 | = LFXT1S_2;
Luciendo de la siguiente forma el código:
#include "msp430g2553.h"
#ifndef TIMER0_A1_VECTOR
#define TIMER0_A1_VECTOR TIMERA1_VECTOR
#define TIMER0_A0_VECTOR TIMERA0_VECTOR
#endif
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // watchdog timer setup
P1DIR = 0x40; // I/O setup
P1OUT = 0;
BCSCTL3 |= LFXT1S_2; // clock system setup
IFG1 &= ~OFIFG;
_bis_SR_register(SCG1 + SCG0);
BCSCTL2 |= SELM_3 + DIVM_3;
Este programa, hará que el led parpadee, una vez cada segundo, usando un reloj interno de 12KHz, que es el más lento con el que cuenta el sistema.
El ciclo que hace que el led se encienda y apague es el siguiente:
while(1)
{
P1OUT = 0x40; // LED on
_delay_cycles(100);
P1OUT = 0; // LED off
_delay_cycles(5000);
}
Concluyendo de la forma:
#include "msp430g2553.h"
#ifndef TIMER0_A1_VECTOR
#define TIMER0_A1_VECTOR TIMERA1_VECTOR
#define TIMER0_A0_VECTOR TIMERA0_VECTOR
#endif
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // watchdog timer setup
P1DIR = 0x40; // I/O setup
P1OUT = 0;
BCSCTL3 |= LFXT1S_2; // clock system setup
IFG1 &= ~OFIFG;
_bis_SR_register(SCG1 + SCG0);
BCSCTL2 |= SELM_3 + DIVM_3;
while(1)
{
P1OUT = 0x40; // LED on
_delay_cycles(100);
P1OUT = 0; // LED off
_delay_cycles(5000);
}
}
Quedando solo por compilar y verificar el correcto funcionamiento del led verde parpadeando una vez cada tres segundos.
LAB 4
Convertidor Analógico Digital
Como objetivo tenemos aprender el funcionamiento del convertidor en el chip, siguiendo los pasos:
File → New → CCS Project
File → Open File…
C:\MSP430_LaunchPad\Labs\Lab3\Files\OPT_VLO.txt
C:\MSP430_LaunchPad\Labs\Lab2\Files\Temperature_Sense_Demo.txt
Se elimina el texto de main.c y se pega.
#include
#ifndef TIMER0_A1_VECTOR
#define TIMER0_A1_VECTOR TIMERA1_VECTOR
#define TIMER0_A0_VECTOR TIMERA0_VECTOR
#endif
volatile long tempRaw;
void FaultRoutine(void);
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
P1DIR = 0x41; // P1.0&6 outputs
P1OUT = 0; // LEDs off
if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
FaultRoutine(); // If cal data is erased
// run FaultRoutine()
BCSCTL1 = CALBC1_1MHZ; // Set range
DCOCTL = CALDCO_1MHZ; // Set DCO step + modulation
BCSCTL3 |= LFXT1S_2; // LFXT1 = VLO
IFG1 &= ~OFIFG; // Clear OSCFault flag
BCSCTL2 |= SELM_0 + DIVM_3 + DIVS_3; // MCLK = DCO/8
while(1)
{
ADC10CTL1 = INCH_10 + ADC10DIV_0; // Temp Sensor ADC10CLK
ADC10CTL0 = SREF_1 + ADC10SHT_3 + REFON + ADC10ON;
_delay_cycles(5); // Wait for ADC Ref to settle
ADC10CTL0 |= ENC + ADC10SC; // Sampling & conversion start
P1OUT
...