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

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #315 en: 24 de Marzo de 2011, 04:37:05 »
Gracias Suky por tu respuesta, no habia mirado estos documentos de la carpeta que indicas. :x

Saludos.
 
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 #316 en: 24 de Marzo de 2011, 10:03:58 »
He probado esto en un 18F14K50 y funciona:
Código: C
  1. #pragma romdata EEDATA=0xF00000
  2.         rom const char buff[]={0xAA,0x55,0x33};
  3. #pragma romdata
Si funciona, lo pude ver en el .hex, lo que me extraña es q grabo la posición0 con el dato 0x01, tengo las funciones de lectura y escritura como las desarrollaron anteriormente en un otro post acá en el mismo hilo. Salvo q en la addres,como el pic q uso usa 10bits para direccionar hago:
EEADRH=eeprom_addr>>8;        //Colocar parte alta de la direccion a escribir en EEPROM
EEADR=eeprom_addr;            //Colocar parte baja de la direccion a escribir en EEPROM

Leo esa misma posición al inicializar el pic y me lee cero :shock:, después vuelvo a escribir y leer y recién va bien. Muy extraño... y de paso el grabador esta dejando de grabar... ando con una suerte...

Seguiré probando, espero todo marche bien
« Última modificación: 24 de Marzo de 2011, 10:08:40 por Cryn »
.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #317 en: 24 de Marzo de 2011, 12:10:46 »
Probaste de usar la librería eep.h ? Allí tienes las funciones Write_b_eep(...)  y Read_b_eep(....)


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

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #318 en: 24 de Marzo de 2011, 12:37:31 »
No las conocía, las probare entonces...

Pero primero esta este grabador que ya no quiere reconoces los micros =(

Gracias
.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #319 en: 30 de Marzo de 2011, 17:48:19 »
Hola compañeros, necesito de vuestra ayuda:
Estoy compilando este codigo y me sale error de sintaxis en la linea 49 #pragma code PrioridadBaja = 0x18  y no consigo verlo :shock:

Código: CSS
  1. /*-----------------------------------------------------------------------------------------*/
  2. /* ** INTERRUPCION DEL TIMER0 USADA PARA CONTROLAR UN SERVO FUTABA S3003 **
  3. -----------------------------------------------------------------------------------------*/
  4.  
  5. /* ** Archivo con definicion de registros y bits del microcontrolador elegido ** */
  6.  
  7. #include <p18f4550.h>
  8.  
  9. /* ** Libreria para incluir demoras en nuestro codigo
  10.                 Delay10TCYx(i) --> 10.Tcy.i
  11.                 Delay100TCYx(i) --> 100.Tcy.i
  12.                 Delay1KTCYx(i) --> 1000.Tcy.i
  13.                 Delay10KTCYx(i) --> 10000.Tcy.i
  14. Donde Tcy es 4/Fosc, e i es un escalar que puede tomar valores entre 0 y 255 ** */
  15.  
  16. #include <delays.h>
  17.  
  18. /* ** Libreria destinada al uso del Timer0 ** */
  19.  
  20. #include <timers.h>
  21.  
  22. /* ** Configuracion de los fuses del microcontrolador ** */
  23.  
  24. #pragma config FOSC=XT_XT,FCMEN=OFF,IESO=OFF,CPUDIV=OSC1_PLL2
  25. #pragma config PWRT=OFF,BOR=OFF,BORV=0,WDT=OFF,MCLRE=OFF
  26. #pragma config LPT1OSC=OFF,PBADEN=OFF,LVP=OFF,DEBUG=OFF
  27. #pragma config CCP2MX=OFF,STVREN=OFF,XINST=OFF
  28. #pragma config CP0=OFF,CP1=OFF,CP2=OFF,CP3=OFF,CPB=OFF
  29. #pragma config CPD=OFF,WRT0=OFF,WRT1=OFF,WRT2=OFF,WRT3=OFF
  30. #pragma config WRTC=OFF,WRTB=OFF,WRTD=OFF
  31. #pragma config EBTR0=OFF,EBTR1=OFF,EBTR2=OFF,EBTR3=OFF,EBTRB=OFF
  32.  
  33. /* ** Definiciones de Preprocesador ** */
  34.  
  35. //#define PIN_SERVO1    LATBbits.LATB0
  36.  
  37. /* ** Definicion de Variables Globales ** */
  38.  
  39. int contadorRTCC = 0;
  40. int flagRTCC = 0;
  41.  
  42. /* ** Declaracion de Funciones a usar ** */
  43.  
  44. void Temporizacion (void)
  45.  
  46. /* ** Vector de Interrupcion ** */
  47.  
  48. #pragma code PrioridadBaja = 0x18               // Se apunta al Vector de Baja Prioridad
  49. void VectorPrioridadBaja(void)
  50. {
  51.         _asm
  52.                 goto Temporizacion              // Indicamos al compilador donde esta la interrupcion
  53.         _endasm
  54. }
  55. #pragma code
  56.  
  57. /* ** Rutina de Interrupcion ** */
  58.  
  59. #pragma interrupt Temporizacion
  60. void Temporizacion (void)
  61. {
  62.         ++contadorRTCC;
  63.         if(contadorRTCC==4)
  64.         {
  65.                 WriteTimer0(30);                        // Ajuste fino del RTCC
  66.         }
  67.         if(contadorRTCC==5)
  68.         {
  69.                 flagRTCC=1;
  70.                 contadorRTCC=0x00;
  71.         }      
  72. }
  73.  
  74. /* **  M A I N  ** */
  75.  
  76. void main(void)
  77. {
  78.         ADCON1=0x0F;            // Todos entradas/salidas digitales
  79.         TRISA=0XFF;                     // Todos como entradas
  80.         TRISB=0xF0;                     // Nible bajo como salida
  81.         PORTB=0x00;                     // Salidas apagadas
  82.         T0CON=0xC3;                     // Configuramos Timer0
  83.         WriteTimer0(0);         // Inicializamos registros del Timer0
  84.         INTCON=0xA0;            // Configuramos la Interrupcion del Timer0     
  85.         RCONbits.IPEN=0;                // Desabilitamos Prioridades
  86.  
  87. while(1);
  88.        
  89. }
  90.  
  91. /* **  F U N C I O N E S  ** */

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

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #320 en: 30 de Marzo de 2011, 20:35:03 »
hola Miquel_S:
   Si no me equivoco , el error está más arriba en la línea que aparece en geshi como 44.

void Temporizacion (void)

faltaría al final de esa línea un     ;       y por eso el compilador cree que la línea sigue más abajo y te muestra el error allí.
      Saludos.
          Jukinch
"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #321 en: 30 de Marzo de 2011, 20:35:27 »
Eso! Eso! Falta el ;  :mrgreen:

jukinch 20s más rápido  :undecided: :laugh:

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

Desconectado jukinch

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 608
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #322 en: 30 de Marzo de 2011, 20:56:27 »
Eso! Eso! Falta el ;  :mrgreen:

jukinch 20s más rápido  :undecided: :laugh:

Saludos!

Que halago de un maestro como vos Suky ;) Mis conocimientos de c18 salieron de tu manual!!! Un abrazo desde San Nicolás.-
         Jukinch


"Divide las dificultades que examinas en tantas partes como sea posible para su mejor solución." -René Descartes

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #323 en: 31 de Marzo de 2011, 03:16:42 »
 :oops: :oops: :D

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 #324 en: 08 de Abril de 2011, 18:36:29 »
Saludos de nuevo, sigo intentando aprender en C18  :shock: Estoy intentando una temporizacion de 4,096ms pero no consigo entrar en la interrupcion y no veo el porque, si alguien pudiera decir el fallo lo agradeceria.
Código: CSS
  1. //********************************************************************************
  2. /* ** Programa para generar una Interrupcion cada 4,096ms usando el TIMER0 ** */
  3. //********************************************************************************
  4.  
  5. /* ** Archivo con definicion de registros y bits del microcontrolador elegido ** */
  6.  
  7. #include <p18f4550.h>
  8.  
  9. /* ** Include para realizacion de Demoras ** */
  10.  
  11.  
  12.  
  13. /* ** Include para Timer0 ** */
  14.  
  15. //#include <timers.h>
  16.  
  17. /* ** Configuracion de los Fuses del microcontrolador ** */
  18.  
  19. #pragma config FOSC = XT_XT,FCMEN = OFF,IESO = OFF,CPUDIV = OSC1_PLL2
  20. #pragma config PWRT = ON,BOR = OFF,BORV =0,WDT = OFF
  21. #pragma config WDTPS = 32768,CCP2MX = OFF,PBADEN = OFF,LPT1OSC = OFF
  22. #pragma config MCLRE = ON,STVREN = OFF,LVP = OFF,ICPRT = OFF
  23. #pragma config XINST = OFF,DEBUG = OFF,CP0 = OFF,CP1 = OFF
  24. #pragma config CP2 = OFF,CP3 = OFF,CPB = OFF,CPD = OFF
  25. #pragma config WRT0 = OFF,WRT1 = OFF,WRT2 = OFF,WRT3 = OFF
  26. #pragma config WRTC = OFF,WRTB = OFF,WRTD = OFF,EBTR0 = OFF
  27. #pragma config EBTR1 = OFF,EBTR2 = OFF,EBTR3 = OFF,EBTRB = OFF
  28.  
  29. /* ** Directivas de Preprocesador ** */
  30.  
  31. //#define LED_ROJO              LATBbits.LATB0
  32. //#define LED_VERDE             LATBbits.LATB1
  33.  
  34. /* ** Declaracion de Funciones a utilizar ** */
  35.  
  36. void Temporizacion(void);
  37.  
  38. /* ** Variables de uso General ** */
  39.  
  40. volatile int tiempo;
  41.  
  42. /* ** Seccion de codigo a partir de la direccion 0x18 ** */
  43.  
  44. #pragma code interrupcion = 0x0018
  45. void VectorInterrupcion(void)
  46. {
  47.         _asm goto Temporizacion _endasm
  48. }
  49. #pragma code    // Cerramos seccion.-
  50.  
  51. /* ** Rutina de Interrupcion ** */
  52.  
  53. #pragma interrupt Temporizacion
  54. void Temporizacion(void)
  55. {
  56.         if(INTCONbits.TMR0IF==1)
  57.         {
  58.                 //PORTB=1;
  59.                 tiempo++;
  60.                 INTCONbits.TMR0IF=0;
  61.         }
  62.         //else
  63.         //{
  64.                 //LED_ROJO=1;
  65.         //}
  66. }
  67.  
  68.  
  69. /* ** Main ** */
  70.  
  71. void main(void)
  72. {
  73.  
  74. ADCON1 = 0X0F;
  75. TRISB = 0X00;
  76. PORTB = 0X00;
  77. T0CON = 0XC3;           //configuramos el timer0
  78. TMR0H = 0X00,TMR0L = 0X00;              //inicializamos registros del timer0
  79. RCONbits.IPEN=0;               
  80. INTCON = 0XA0;          //configuramos la interrupcion del timer0
  81.        
  82.         while(1);
  83. }

Gracias de nuevo.
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 #325 en: 08 de Abril de 2011, 19:15:45 »
se me hace que las interrupciones saltan por defecto a la direccion 0x08 y no a la 0x018 talvez sea ese tu problema.

#pragma code interrupcion = 0x0008

en vez de:

#pragma code interrupcion = 0x0018

si usas 0x0018 seguramente tendrías q ver el las configuraciones de las prioridades
« Última modificación: 08 de Abril de 2011, 19:18:10 por Cryn »
.

Desconectado Miquel_S

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1251
Re: Cursillo en C18 para PICS DESDE CERO
« Respuesta #326 en: 09 de Abril de 2011, 04:39:42 »
Hola Cryn, gracias por la respuesta, tenia entendido que la direccion 0x018 era la de baja prioridad y la 0x08 la de alta, y si no me equivoco lo tengo bien configurado de todos modos volvere a revisar el codigo en su parte de configuracion.

Gracias de nuevo.
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 #327 en: 09 de Abril de 2011, 09:37:29 »
Pero tienes des-habilitadas las prioridades...



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 #328 en: 09 de Abril de 2011, 10:59:08 »
Hola Suky gracias por tu respuesta, pero aunque ponga el bit IPEN a 1 (Enable priority levels on interrupts) sigo con el mismo fallo, solo me funciona con 0x0008 que seria la de alta prioridad.

Saludos.
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 #329 en: 09 de Abril de 2011, 12:18:11 »
Debes configurar TMR0IP a 0, pues INTCON2 por default tiene 0xFF según veo en el datasheet.


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


 

anything