Main Page | File List | Globals

lowinit.c

Go to the documentation of this file.
00001 /* ###################################################################
00002 **      - lowinit.c -
00003 **
00004 **The function __low_level_init is called by the start-up code before doing
00005 **the normal initialization of data segments. If the return value is zero,
00006 **initialization is not performed.
00007 **In the run-time library there is a dummy __low_level_init, which does
00008 **nothing but return 1. This means that the start-up routine proceeds with
00009 **initialization of data segments.
00010 ** 
00011 ** _00:
00012 ** _01. Funciona correctamente al ralentizar el reloj y cambiar la
00013 **      gestion de las interrupciones
00014 ** _02. Refinamiento, a ver si funciona
00015 ** _03. Se reinicia en los cambios de alimentación, así que se elimina
00016 **      la inicialización de la hora en ese transitorio
00017 ** _04. Cambio en la definicion de dia y mes, junto con la funcion 
00018 **      CalculaDiaSemana, para soluccionar el fallo de cambio de día.
00019 ** ###################################################################*/
00020 #include <msp430x12x2.h>
00021 #include "rtc_display_def.h"
00022 
00023 /*
00024 ** ###################################################################
00025 **      DEFINICION DE TIPOS
00026 ** ###################################################################*/
00027 #ifndef _MIS_TIPOS
00028 #define _MIS_TIPOS
00029 typedef  unsigned char          BOOL;
00030 typedef  unsigned char  BYTE;
00031 //typedef  signed char          CHAR;
00032 typedef  unsigned int           WORD;
00033 typedef  signed   int           INT;
00034 typedef  unsigned long          DWORD;
00035 typedef  signed   long          LONG;
00036 #endif  //_MIS_TIPOS
00037 
00038 /* Insert your low-level initializations here */
00039 // ***********************************
00040 //      Inicialización del hardware
00041 // ***********************************
00042 //int __InicializaRecursos(void) {
00043 int __low_level_init(void) {
00044 //int i;
00045 
00046         // *****Relojes *****************
00047         WDTCTL = WDTPW + WDTHOLD;       // Stop Watchdog Timer
00048         //BCSCTL1 = RSEL2 + RSEL1 + RSEL0;      // DCO= 3Mhz;
00049         BCSCTL1 = RSEL_NOM;             // DCO= 3Mhz;
00050 //      BCSCTL1 |= XTS;         // ACLK = LFXT1 = HF XTAL
00051         BCSCTL1 |= XT2OFF;
00052         DCOCTL = DCO1 + DCO0;
00053         _BIC_SR(OSCOFF);
00054         _BIC_SR(SCG1);                  // ACLK = LFXT1 = 32Khz (low frecuency)
00055         BCSCTL2 = 0x00;                 // MCLK = SMCLK = DCO
00056         BCSCTL1 &= ~XTS;                // ACLK = LFXT1 = LF XTAL 32Khz
00057 
00058         // *****Puertos IO***************
00059         P1DIR = 0x00;           // Entradas
00060         P1SEL = 0x00;
00061         P1OUT = 0x00;
00062 
00063         P2DIR = 0x04;           // Entradas y salida de datos
00064         P2SEL = 0x00;
00065         P2OUT = 0x00;
00066 
00067         P3DIR = 0x70;   // Depuracion
00068         //P3DIR = 0x00;         // Entradas
00069         P3OUT = 0x00;
00070         P3SEL = 0x00;
00071         
00072         // *****Watchdog Timer **********
00073         WDTCTL = WDT_ADLY_1_9;  //Watchdog = ACLK/2^6 = 1.953 mseg      
00074         IE1 |= WDTIE;
00075 
00076     /*==================================*/
00077     /* Choose if segment initialization */
00078     /* should be done or not.                   */
00079     /* Return: 0 to omit seg_init               */
00080     /*         1 to run seg_init                */
00081     /*==================================*/
00082     return (0);//Al volver con 1 se borra la pila y vuelve a la 
00083                         //dirección 0 --> se cuelga
00084                         //Al menos en la versión de evaluación inicial, Ahora hace falta
00085 }
00086 

Generated on Thu Nov 10 22:38:51 2005 for Reloj TEXAS by  doxygen 1.4.4        for