• Viernes 8 de Noviembre de 2024, 16:39

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Dok

Páginas: [1]
1
Programación en C / Programacion Del Oscilador En El Msp430f169
« en: Viernes 14 de Marzo de 2008, 17:06 »
Hola amigos, estoy programando el microcontrolador para un proyecto que tengo y tengo un problema al inicializar el oscilador del microcontrolador, mi codigo es el siguiente:

Código: Text
  1.  
  2. void InitOsc(void)
  3. {
  4.   WDTCTL = WDTPW | WDTHOLD;   // Paramos el watchdog timer
  5.   BCSCTL1 |= XTS;        // XT1 ~ high-frequency
  6.   _BIC_SR(OSCOFF);           // turn on XT1 oscillator
  7.  
  8.   do           // wait in loop until crystal is stable
  9.   {
  10.     IFG1 &= ~OFIFG;
  11.     for (ii = 0xFFFF; ii > 0; ii--);
  12.   }
  13.   while (IFG1 & OFIFG);
  14.  
  15.   BCSCTL1 |= DIVA1 | DIVA0;      // ACLK = XT1 / 8 = 1 MHz
  16.   IE1 &= ~WDTIE;         // desactiva WDT int.
  17.  
  18.   WDTCTL = WDTPW | WDTTMSEL | WDTCNTCL | WDTSSEL | WDTIS1;
  19.       // use WDT as timer, flag each. 512 pulses from ACLK
  20.   IFG1 &= ~WDTIFG;       // clear WDT int. flag
  21.   while ((IFG1 & WDTIFG)!=0);       // cuenta 1024 pulsos XT1 <---Problema
  22.  
  23.   IFG1 &= ~OFIFG;       // clear osc. fault int. flag
  24.   DCOCTL |= DCO2 | DCO1 | DCO0;
  25.   BCSCTL1 |= RSEL2 | RSEL1 | RSEL0;// MCLK = DCO, 8 MHz  (MCLK=Reloj de la CPU)
  26. }
  27.  
  28.  

Y el problema se encuentra en el segundo while [while ((IFG1 & WDTIFG)!=0);] en donde se queda trabado y no se como haerle salir de ahi.

Espero que podais ayudarme amigos. Saludos!!!

2
Microcontroladores / Programacion Del Oscilador En El Msp430f169
« en: Viernes 14 de Marzo de 2008, 16:49 »
Hola amigos, estoy programando el microcontrolador para un proyecto que tengo y tengo un problema al inicializar el oscilador del microcontrolador, mi codigo es el siguiente:

Código: Text
  1.  
  2. void InitOsc(void)
  3. {
  4.   WDTCTL = WDTPW | WDTHOLD;   // Paramos el watchdog timer
  5.   BCSCTL1 |= XTS;        // XT1 ~ high-frequency
  6.   _BIC_SR(OSCOFF);           // turn on XT1 oscillator
  7.  
  8.   do           // wait in loop until crystal is stable
  9.   {
  10.     IFG1 &= ~OFIFG;
  11.     for (ii = 0xFFFF; ii > 0; ii--);
  12.   }
  13.   while (IFG1 & OFIFG);
  14.  
  15.   BCSCTL1 |= DIVA1 | DIVA0;      // ACLK = XT1 / 8 = 1 MHz
  16.   IE1 &= ~WDTIE;         // desactiva WDT int.
  17.  
  18.   WDTCTL = WDTPW | WDTTMSEL | WDTCNTCL | WDTSSEL | WDTIS1;
  19.       // use WDT as timer, flag each. 512 pulses from ACLK
  20.   IFG1 &= ~WDTIFG;       // clear WDT int. flag
  21.   while ((IFG1 & WDTIFG)!=0);       // cuenta 1024 pulsos XT1 <---Problema
  22.  
  23.   IFG1 &= ~OFIFG;       // clear osc. fault int. flag
  24.   DCOCTL |= DCO2 | DCO1 | DCO0;
  25.   BCSCTL1 |= RSEL2 | RSEL1 | RSEL0;// MCLK = DCO, 8 MHz  (MCLK=Reloj de la CPU)
  26. }
  27.  
  28.  

Y el problema se encuentra en el segundo while [while ((IFG1 & WDTIFG)!=0);] en donde se queda trabado y no se como haerle salir de ahi.

Espero que podais ayudarme amigos. Saludos!!!

3
C/C++ / Re: Lectura Bit A Bit De Un Array De Enteros
« en: Miércoles 26 de Diciembre de 2007, 16:35 »
Bueno yo tengo un microcontrolador el msp430 el que he programado para que tenga una frecuencia de reloj determinada, y tengo que sincronizarlo con esa frecuencia de reloj que a su vez tengo que sacarla por otra salida.

Y como lo intercalaria?? no entiendo a que te refieres. Lo que se me ocurre a mi es de alguna manera poner antes del if algo que pare la ejecucion hasta que el reloj se ponga a 1 de esta manera lo sincronizaria pero no se la instruccion/es que podria utilizar, porque supongo que "  wait(aclk)  "  no me sirva.

Gracias por tu interes Geo.

4
C/C++ / Re: Lectura Bit A Bit De Un Array De Enteros
« en: Martes 25 de Diciembre de 2007, 21:17 »
Este es el codigo que he hecho para sacar bit a bit , me parece que esta bien pero no estoy seguro:

Código: Text
  1.  
  2.   Datos[18] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18}
  3.   ii = 0;
  4.   jj = 7;
  5.   for (ii=0;ii<18;ii++)
  6.   {
  7.     for(jj=7;jj=0;jj--)
  8.     {
  9.       n = Datos[ii];
  10.       n = n << jj;
  11.       n = n >> 7;
  12.       if (n == 0x00)
  13.       {
  14.       printf("0");
  15.       }
  16.       else
  17.       {
  18.       printf("1");
  19.       }
  20.     }
  21.   }
  22.  
  23.  
   Ahora lo que me gustraria es sincronizar con una salida de un pin (un reloj) y no se como hacerlo, se que si programase en VHDL tendria que hacer que meter en el is las siguientes condiciones " CLK'event and CLK='1' " pero aqui no se como hacerlo.
   
    Gracias por su tiempo de antemano.

5
C/C++ / Lectura Bit A Bit De Un Array De Enteros
« en: Domingo 23 de Diciembre de 2007, 22:22 »
Hola amigos estoy haciendo un programa en el que almaceno un array de 18 bytes y tengo que enviarlo bit a bit por un puerto serie, y no estoy seguro de como hacerlo.

Si me pudieseis dar una idea os lo agradeceria mucho.

gracias por su tiempo de antemano.

Páginas: [1]