Programación Específica > Programación en C

 Inicialización De Registros

(1/3) > >>

Bixix:
Hola jente!!

Esta vez tengo una prgunta sobre el código..
DCICON1 y DCICON2 son registros, que contienen 16 bits. y aquí les está dando un valor para iniciarlos..0 o 1.
Eso es lo que no entiendo...
Qué hace con el &???

A qué valor están inicializados??

DCICON1value =  DCI_FSM_MULTI &    /* multichannel frame sync */
                        DCI_DJST_OFF &     /* data begins 1 clock after Fs */
                        DCI_SDO_TRISTAT &  /* CSDO pin will be tri-stated */
                        DCI_TX_ZERO_UNF &  /* transmit zero during underflow */
                        DCI_FSD_OUP &      /* COFS pin is an output */
                        DCI_SAMP_CLK_FAL & /* sample data on falling clock edge */
                        DCI_SCKD_OUP &     /* CSCK pin is an output */
                        DCI_DIGI_LPBACK_DIS & /* loopback mode is disabled */
                        DCI_IDLE_CON &     /* DCI will continue in CPU IDLE mode */
                        DCI_DIS;           /* DCI is disabled for now */
                       
        DCICON2value =  DCI_DATA_WORD_16 & /* data word size is 16 bits */
                        DCI_FRAME_LEN_8 &  /* data frame is 8 words */
                        DCI_BUFF_LEN_2;    /* 2 words buffered per interrupt */

                                           /* calculate DCI bit clock control */
                                           

Gracias..

© Jonathan ©:

--- Código: Text --- DCICON1value = DCI_FSM_MULTI & DCI_DJST_OFF & DCI_SDO_TRISTAT & CI_TX_ZERO_UNF & DCI_FSD_OUP & DCI_SAMP_CLK_FAL & DCI_SCKD_OUP & DCI_DIGI_LPBACK_DIS & DCI_IDLE_CON & DCI_DIS;  DCICON2value = DCI_DATA_WORD_16 & DCI_FRAME_LEN_8 & DCI_BUFF_LEN_2;  
   Hola, el simbolo "&" en C se lee como AND osea "Y" ..  en el codigo anterior se diria que DCICON1value es igual a cada uno de las variables que le siguen hasta el ";" ... no entiendo si eso se suma y juntos hacen el valor total del registro de 16 bits o como quedaria ... yo creeria que eso suma los valores de :


--- Código: Text ---DCI_FSM_MULTI & DCI_DJST_OFF & DCI_SDO_TRISTAT & CI_TX_ZERO_UNF & DCI_FSD_OUP & DCI_SAMP_CLK_FAL & DCI_SCKD_OUP & DCI_DIGI_LPBACK_DIS & DCI_IDLE_CON & DCI_DIS 
y los deposita dentro de: DCICON1value formando en este un valor de 16 bits el cual sera la configuracion asignada al registro.

   Analizalo y si sabes la respuesta pasame el dato, talves este delirando  :blink:. Saludos!  ;)

Bixix:
Una vez más, creo que tienes razón!!!
Al igual que con DCICON1 hace lo mismo con DCICON2..

Al tener menos "sumas" es más fácil de analizarlo..


 DCICON2value =  DCI_DATA_WORD_16 & /* data word size is 16 bits */
                        DCI_FRAME_LEN_8 &  /* data frame is 8 words */
                        DCI_BUFF_LEN_2;    /* 2 words buffered per interrupt */

He mirado en el fitxero .h y me aparecen estos valores para ;
DCI_DATA_WORD_16 = 0xFFFF;
DCI_FRAME_LEN_8 =0xFEFF;
DCI_BUFF_LEN_2=0xF7FF;

Creo que es muy posible que le dé un valor a DCICON2 por medio de sumas de estos valores...
Te adjunto el registro DCICON2.

Creo que tengo problemas para hacer estas sumas dado que mi resultado no tiene mucho sentido en este registro, porque cambia bits que no nos interesan...

mi resultado(igual te desesperas...): 0101 1010 0101 0101

gracias...

Bixix:
una pequeña cuestión de hardware...

he estado leyendo la conversación entre jonathan y reptil sobre el reset y el oscillator...

me pregunto si sabriais decirme cual es la finalidad de poner dos pequeños condensadores en las dos partes del cristal...
y si sabríais si r=10k es un valor de resistencia común para todos los micros en el reset...
en mi placa también usa r=10k en el reset..(dsPIC30f6014)

os adjunto vuestra  imagen...gracias

© Jonathan ©:
Holas


--- Código: Text ---He mirado en el fitxero .h y me aparecen estos valores para&#59;DCI_DATA_WORD_16 = 0xFFFF;DCI_FRAME_LEN_8 =0xFEFF;DCI_BUFF_LEN_2=0xF7FF; 
Pues no estoy seguro que sume los valores, aunque no creo que haga otra cosa con los mismos, lo raro es que DCI_DATA_WORD_16 = 0xFFFF y si le suma otro valor hay un desborde, ya que los registros son de 16 bits limite, no entiendo para que utilizar tantas variables para dar valores solo a una, debe ser por facilidad y comodidad, pero y el error de desborde??  :unsure:  .. si alguien sabe y tiene alguna explicacion logica le pido encaresidamente que la comparta conmigo. :)


--- Código: Text ---me pregunto si sabriais decirme cual es la finalidad de poner dos pequeños condensadores en las dos partes del cristal...  
Se ponen esos 2 capacitores para fijar una frecuencia al cristal, el cristal vibra a muy alta frecuencia y las pequeñas variaciones de tension hacen que esta frecuencia aumente o disminuya, el capacitor logra que este valor no sea variante, no estoy super seguro ya que es una respuesta por deducion, fijate que el valor del capacitor puede ser desde 15pf hasta 33pf ... Microchip, para 5v recomienda 30pf. Corrijan si estoy equivocado :)


--- Código: Text ---y si sabríais si r=10k es un valor de resistencia común para todos los micros en el reset...en mi placa también usa r=10k en el reset..(dsPIC30f6014) 
Es un Valor comun para todos los microcontroladores que trabajen a 5v ...  todos trabajan entre 3 - 5v de ahi que todos lleven este valor. Esta calculado el valor ohmmico segun la tension de alimentacion.

   Espero haber eliminado tus dudas. Saludos! ;)

PD: Me quedo picando lo de los registros, si quieres detallarme un poco mas, talves pueda encontrar una respuesta logica. :)

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa