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
« 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: void InitOsc(void) { WDTCTL = WDTPW | WDTHOLD; // Paramos el watchdog timer BCSCTL1 |= XTS; // XT1 ~ high-frequency _BIC_SR(OSCOFF); // turn on XT1 oscillator do // wait in loop until crystal is stable { IFG1 &= ~OFIFG; for (ii = 0xFFFF; ii > 0; ii--); } while (IFG1 & OFIFG); BCSCTL1 |= DIVA1 | DIVA0; // ACLK = XT1 / 8 = 1 MHz IE1 &= ~WDTIE; // desactiva WDT int. WDTCTL = WDTPW | WDTTMSEL | WDTCNTCL | WDTSSEL | WDTIS1; // use WDT as timer, flag each. 512 pulses from ACLK IFG1 &= ~WDTIFG; // clear WDT int. flag while ((IFG1 & WDTIFG)!=0); // cuenta 1024 pulsos XT1 <---Problema IFG1 &= ~OFIFG; // clear osc. fault int. flag DCOCTL |= DCO2 | DCO1 | DCO0; BCSCTL1 |= RSEL2 | RSEL1 | RSEL0;// MCLK = DCO, 8 MHz (MCLK=Reloj de la CPU) }
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
« 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: void InitOsc(void) { WDTCTL = WDTPW | WDTHOLD; // Paramos el watchdog timer BCSCTL1 |= XTS; // XT1 ~ high-frequency _BIC_SR(OSCOFF); // turn on XT1 oscillator do // wait in loop until crystal is stable { IFG1 &= ~OFIFG; for (ii = 0xFFFF; ii > 0; ii--); } while (IFG1 & OFIFG); BCSCTL1 |= DIVA1 | DIVA0; // ACLK = XT1 / 8 = 1 MHz IE1 &= ~WDTIE; // desactiva WDT int. WDTCTL = WDTPW | WDTTMSEL | WDTCNTCL | WDTSSEL | WDTIS1; // use WDT as timer, flag each. 512 pulses from ACLK IFG1 &= ~WDTIFG; // clear WDT int. flag while ((IFG1 & WDTIFG)!=0); // cuenta 1024 pulsos XT1 <---Problema IFG1 &= ~OFIFG; // clear osc. fault int. flag DCOCTL |= DCO2 | DCO1 | DCO0; BCSCTL1 |= RSEL2 | RSEL1 | RSEL0;// MCLK = DCO, 8 MHz (MCLK=Reloj de la CPU) }
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
« 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
« 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: Datos[18] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18} ii = 0; jj = 7; for (ii=0;ii<18;ii++) { for(jj=7;jj=0;jj--) { n = Datos[ii]; n = n << jj; n = n >> 7; if (n == 0x00) { printf("0"); } else { printf("1"); } } }
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
« 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]
|