TODOPIC

Microcontroladores PIC => dsPIC => Mensaje iniciado por: loco322 en 29 de Abril de 2013, 02:05:09

Título: Conversion Analogo Digital DsPIC 30F4011
Publicado por: loco322 en 29 de Abril de 2013, 02:05:09
Hola amigos de todopic. Verán eh estado buscando ejemplos  sobre el manejo de la conversión análogo digital de este tipo de pic y no eh encontrado mucho, y hasta el momento solo eh manejado pic 18F del cual ya tengo un programa hecho en c18 el cual me lee el valor de un sensor dns por el  pin A0 hace la conversión y mientras  el valor sea  menor a 10 me activa una alarma y muestra por una LCD ,ahora el problema es que mi profesor pide este programa pero en DsPIC con el PIC 32mx220f032b del cual no nos dijo mucho  :x mi pregunta seria con que compilador seria mas fácil trabajar este pic si con c32, CCS o cual me recomiendan y que librerias se utilizan en estos compiladores dejo el código que tengo en c18
 
Código: C
  1. # include <p18f4550.h>
  2. # include <delays.h>
  3. # include <xlcd.h>
  4. # include <math.h>
  5.  
  6. # pragma config FOSC =HS , FCMEN =OFF , IESO =OFF , CPUDIV = OSC2_PLL3
  7. # pragma config PWRT =ON , BOR =OFF , BORV =0, WDT =OFF , WDTPS =32768
  8. # pragma config MCLRE =ON , LPT1OSC =OFF , PBADEN =OFF , CCP2MX = OFF
  9. # pragma config STVREN =OFF , LVP =OFF , XINST =OFF , DEBUG = OFF
  10. # pragma config CP0 =OFF , CP1 =OFF , CP2 =OFF , CPB =OFF , CPD = OFF
  11. # pragma config WRT0 =OFF , WRT1 =OFF , WRT2 = OFF
  12. # pragma config WRTB =OFF , WRTC =OFF , WRTD = OFF
  13. # pragma config EBTR0 =OFF , EBTR1 =OFF , EBTR2 =OFF , EBTRB = OFF
  14.  
  15.  
  16. void DelayFor18TCY(void){
  17.         Delay10TCYx(2);
  18. }
  19. void DelayPORXLCD(void){
  20.         Delay1KTCYx(15);
  21. }
  22. void DelayXLCD(void){
  23.         Delay1KTCYx(5);
  24. }
  25. int a=0,b=0,c=0,d=0;
  26. void main(){
  27. OpenXLCD(FOUR_BIT & LINES_5X7);
  28. PORTC=0;
  29. while (1){
  30. float v1=0,v2=0;
  31. TRISD=0;
  32. TRISC=0;
  33. ADCON1=10;// analogas 0-4, vferencia vdd y vss
  34. ADCON2=128;//fosc/2 , 0tad, justifica a derecha
  35. ADCON0=3;
  36. ADRESL=0;ADRESH=0;ADCON0bits.GO=1;
  37. while (ADCON0bits.GO==1){}
  38. v1=(((ADRESH*256)+ADRESL)*4.886)/995;
  39.  
  40. v1=v1*100;
  41. v2=2952.35*pow(v1,-1.19);
  42. a=(v2/10);
  43. b=(v2)-(a*10);
  44. d=v2;
  45.  
  46. if (d<=10){
  47. PORTCbits.RC0=1;
  48. WriteCmdXLCD(1);
  49. Delay10KTCYx(1);
  50. SetDDRamAddr(0x00);
  51. putrsXLCD("Alerta Objeto a");
  52. Delay10KTCYx(1);
  53. SetDDRamAddr(0x43);
  54. WriteDataXLCD(0x30+a);
  55. Delay10KTCYx(1);
  56. SetDDRamAddr(0x44);
  57. WriteDataXLCD(0x30+b);
  58. Delay10KTCYx(1);
  59. SetDDRamAddr(0x46);
  60. putrsXLCD("Cms");
  61. Delay10KTCYx(30);
  62. }
  63. else {
  64. PORTCbits.RC0=0;
  65. WriteCmdXLCD(0x01);
  66. Delay10KTCYx(1);
  67. SetDDRamAddr(0x00);
  68. WriteDataXLCD(0x30+a);
  69.  
  70. SetDDRamAddr(0x01);
  71. WriteDataXLCD(0x30+b);
  72.  
  73. SetDDRamAddr(0x40);
  74. putrsXLCD("Cms");
  75. Delay10KTCYx(30);
  76.  
  77. }
  78. }
  79. }
Agradeceria cualquier ayuda o sugerencia.
Título: Re: Conversion Analogo Digital DsPIC 30F4011
Publicado por: KALLITOS en 29 de Abril de 2013, 15:22:54
Definitivamente el compilador de microchip, sea C30 o XC16.
Lée la hoja de datos y en la web de microchip hay codigo de ejemplos, veras que no es dificil.

saludos.