Autor Tema: Cursillo en C18 para PICS DESDE CERO  (Leído 250302 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #345 en: 19 de Abril de 2011, 04:22:31 »
Gracias Suky, tan atento como siempre, voy a ver si consigo hacerlo funcionar.

Miquel_S
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #346 en: 19 de Abril de 2011, 17:19:25 »
O con punteros;

Código: C
  1. unsigned char myVar;
  2.  
  3. *((char *)&myVar)=0x16;
  4. *((char *)&myVar+1)=0x56;
Los punteros son la clave; generan 4 lineas de ASM, lo estaba haciendo con una multiplicacion y una suma, q genera algo de 14 instrucciones ASM.

Solo aclarar, que unsigned char myVar; debería ser unsigned int myVar;

Muchas gracias suky.
.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #347 en: 22 de Abril de 2011, 13:38:51 »
Hola, sigo estudiando el USART y por lo que veo en esta parte del codigo copiado del tutorial de Suky no se esta habilitando el bit de recepcion:
RCIE: EUSART Receive Interrupt Enable bit
1 = Enables the EUSART receive interrupt
0 = Disables the EUSART receive interrupt

Código: CSS
  1. void main(void){
  2.     unsigned int Canal0, Canal1;
  3.     char String[4];
  4.     OpenUSART(USART_TX_INT_OFF & USART_RX_INT_ON & USART_ASYNCH_MODE &
  5.                   USART_EIGHT_BIT & USART_CONT_RX & USART_BRGH_HIGH,25);
  6.     Kbhit=0;
  7.     RCONbits.IPEN=0;
  8.     INTCONbits.PEIE=1;
  9.     INTCONbits.GIE=1;
  10. }

He revisado en el datasheet como se queda dicho bit despues de un reset y se lee como 0, alguien podria explicarme porque no habilitamos dicho bit.

Gracias
Miquel_S
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #348 en: 22 de Abril de 2011, 14:35:42 »
Con USART_CONT_RX se habilita la recepción por el módulo UART, luego la interrupción por recepción es otra cosa y se usa USART_RX_INT_ON que actúa sobre el bit RCIE.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #349 en: 22 de Abril de 2011, 16:05:29 »
Nuevamente gracias Suky, todo esto que explicas esta en el datasheet o de donde lo sacas, porque yo nunca encuentro la info que busco en C18  :(

Saludos.
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #350 en: 22 de Abril de 2011, 16:31:43 »
Otra pregunta tonta  :oops:
En esta parte de codigo:

SetChanADC(0);
No deberia de poner:
SetChanADC(ADC_CH0);

Lo pregunto porque de la primera manera da error de compilacion.
Miquel_S

Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #351 en: 22 de Abril de 2011, 18:29:00 »
Nuevamente gracias Suky, todo esto que explicas esta en el datasheet o de donde lo sacas, porque yo nunca encuentro la info que busco en C18  :(

Saludos.

Hay mucho en C:\MCC18\doc\periph-lib, después es instinto, practica y estudiar los archivos fuentes  ;-)

Otra pregunta tonta  :oops:
En esta parte de codigo:

SetChanADC(0);
No deberia de poner:
SetChanADC(ADC_CH0);

Lo pregunto porque de la primera manera da error de compilacion.
Miquel_S



Lo más adecuado es colocar ADC_CH0. Pero mirando el adc.h, dependiendo del microcontrolador da lo mismo usar 0 o ADC_CH0, pero no es lo más adecuado, por portabilidad  ;-)


Saludos!
« Última modificación: 22 de Abril de 2011, 18:35:16 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #352 en: 22 de Abril de 2011, 18:43:48 »
Contigo el que no aprende C18 es porque no quiere.
GRACIAS SUKY

Miquel_S
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #353 en: 23 de Abril de 2011, 06:56:48 »
 ;-) Sigo intentando entender el ADC junto con el datasheet PIC 18f4550
En el include del adc tengo esto:
Código: CSS
  1. #if     defined (ADC_V1) || defined (ADC_V2) || defined (ADC_V3) || defined (ADC_V4) ||\
  2.     defined (ADC_V5) || defined (ADC_V6) || defined (ADC_V8) || defined (ADC_V9) ||\
  3.         defined (ADC_V11) || defined (ADC_V12)
  4. /* ***** clock source ***** */
  5. #ifdef USE_OR_MASKS
  6. #define ADC_FOSC_2       0b00000000 // A/D clock source Fosc/2
  7. #define ADC_FOSC_4       0b01000000 // A/D clock source Fosc/4
  8. #define ADC_FOSC_8       0b00010000 // A/D clock source Fosc/8
  9. #define ADC_FOSC_16      0b01010000 // A/D clock source Fosc/16
  10. #define ADC_FOSC_32      0b00100000 // A/D clock source Fosc/32
  11. #define ADC_FOSC_64      0b01100000 // A/D clock source Fosc/64
  12. #define ADC_FOSC_RC      0b01110000 // A/D clock source Internal RC OSC
  13. #define ADC_FOSC_MASK    (~ADC_FOSC_RC)        
  14. /* ***** acquisition time ***** */
  15. #define ADC_0_TAD        0b00000000
  16. #define ADC_2_TAD        0b00000010
  17. #define ADC_4_TAD        0b00000100
  18. #define ADC_6_TAD        0b00000110
  19. #define ADC_8_TAD        0b00001000
  20. #define ADC_12_TAD       0b00001010
  21. #define ADC_16_TAD       0b00001100
  22. #define ADC_20_TAD       0b00001110
  23. #define ADC_TAD_MASK    (~ADC_20_TAD)          
  24. /********interrupt enable********/
  25. #define ADC_INT_ON       0b10000000
  26. #define ADC_INT_OFF      0b00000000
  27. #define ADC_INT_MASK     ~ADC_INT_ON
  28. //-------------------------------------------------
  29. #else // USE_OR_MASKS
  30. #define ADC_FOSC_2       0b10001111 // A/D clock source Fosc/2
  31. #define ADC_FOSC_4       0b11001111 // A/D clock source Fosc/4
  32. #define ADC_FOSC_8       0b10011111 // A/D clock source Fosc/8
  33. #define ADC_FOSC_16      0b11011111 // A/D clock source Fosc/16
  34. #define ADC_FOSC_32      0b10101111 // A/D clock source Fosc/32
  35. #define ADC_FOSC_64      0b11101111 // A/D clock source Fosc/64
  36. #define ADC_FOSC_RC      0b11111111 // A/D clock source Internal RC OSC
  37. /* ***** acquisition time ***** */
  38. #define ADC_0_TAD        0b11110001
  39. #define ADC_2_TAD        0b11110011
  40. #define ADC_4_TAD        0b11110101
  41. #define ADC_6_TAD        0b11110111
  42. #define ADC_8_TAD        0b11111001
  43. #define ADC_12_TAD       0b11111011
  44. #define ADC_16_TAD       0b11111101
  45. #define ADC_20_TAD       0b11111111
  46. /********interrupt enable********/
  47. #define ADC_INT_ON       0b11111111
  48. #define ADC_INT_OFF      0b01111111
  49. #endif // USE_OR_MASKS
  50.  
  51. #endif
Sin embargo la configuracion del oscilador interno no coincide con el datasheet.
#define ADC_FOSC_RC      0b01110000 // A/D clock source Internal RC OSC
#define ADC_FOSC_RC      0b11111111 // A/D clock source Internal RC OSC


Alguien podria decirme donde me pierdo.
Gracias.

Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #354 en: 23 de Abril de 2011, 10:28:50 »
Hay que mirar los 2 archivos fuentes para ver como lo tratan. Fijate que en la función OpenADC tiene:

ADCON2 = (config & 0b10000000)   |   // RESULT
             ((config >> 4) & 0b00000111) |   // CONV CLK
             ((config << 2) & 0b00111000);   // ACQ TIME


Y las definiciones son

// USE_OR_MASKS
#define ADC_FOSC_RC      0b01110000 // A/D clock source Internal RC OSC

#define ADC_FOSC_RC      0b11111111 // A/D clock source Internal RC OSC


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #355 en: 24 de Abril de 2011, 06:03:46 »
OK, Gracias.

Saludos
Todos somos muy ignorantes. Lo que ocurre es que no todos ignoramos las mismas cosas.

Desconectado c@Lic_0

  • PIC10
  • *
  • Mensajes: 36
    • Una tasita de cafe
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #356 en: 02 de Mayo de 2011, 22:43:12 »
hola, necesito una pequeña aclaracion, la situacion es:

unsigned char mensaje[2][3];      //

void funcionX(char dato, unsigned char *puntero){
      //lineas de codigo
}

ahora llamo a esa funcion:

funcionX(0x50, &mensaje);       intente tambien con esta      funcionX(0x50, &mensaje[0]);

y me aparece la siguiente advertencia:

D:\Diseño Digital\18FXXXX\C18\diseños.c:122:Warning [2054] suspicious pointer conversion

como le hago para corregirla, o es que no tiene ningun efecto en el codigo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #357 en: 02 de Mayo de 2011, 23:25:18 »
Lo correcto seria funcionX(0x50, &mensaje[0][0]) o funcionX(0x50, &mensaje[1][0])


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado c@Lic_0

  • PIC10
  • *
  • Mensajes: 36
    • Una tasita de cafe
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #358 en: 02 de Mayo de 2011, 23:42:15 »
lo intente y me salio este otro mensajito:

D:\Diseño Digital\18FXXXX\C18\diseños.c:121:Warning [2066] type qualifier mismatch in assignment

 :shock: :shock:

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #359 en: 03 de Mayo de 2011, 10:05:37 »
 :roll: Seguro que pusiste unsigned en las dos ocasiones? no veo nada raro.


Saludos!
No contesto mensajes privados, las consultas en el foro


 

anything