Autor Tema: definiciones de los puertos en c18 de microchip.  (Leído 2541 veces)

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

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
definiciones de los puertos en c18 de microchip.
« en: 21 de Julio de 2007, 19:16:03 »
hola, a to2,
otra pregunta en mi intento de comprender mejor los compiladores de c, (ya que vengo del asm y estoy algo despistado)

en c18 (el compilador de microchip) para definir los puertos y todos los elementos del pic se utiliza por lo que he visto, el archivo p18fxxxx.h (donde xxxx es el numero del pic que utilizamos). Entoces he observado que para definir el PORTA por ejemplo, lo define así:

extern volatile near unsigned char       PORTA;
extern volatile near union {
  struct {
    unsigned RA0:1;
    unsigned RA1:1;
    unsigned RA2:1;
    unsigned RA3:1;
    unsigned RA4:1;
    unsigned RA5:1;
    unsigned RA6:1;
  };
  struct {
    unsigned AN0:1;
    unsigned AN1:1;
    unsigned AN2:1;
    unsigned AN3:1;
    unsigned T0CKI:1;
    unsigned AN4:1;
    unsigned OSC2:1;
  };
  struct {
    unsigned :2;
    unsigned VREFM:1;
    unsigned VREFP:1;
    unsigned :1;
    unsigned LVDIN:1;
  };
  struct {
    unsigned :5;
    unsigned HLVDIN:1;
  };
} PORTAbits;




entonces no entiendo cómo asigna el PORTA con su dirección de memoria. Alguien sabe cómo funciona?

un saludo.  :)

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: definiciones de los puertos en c18 de microchip.
« Respuesta #1 en: 22 de Julio de 2007, 03:40:06 »
No conozco el C18 pero a juzgar por lo que has pegado se parece bastante al C30. En este, las direcciones de los registros de memoria están en el fichero GLD.

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: definiciones de los puertos en c18 de microchip.
« Respuesta #2 en: 22 de Julio de 2007, 14:03:01 »
correcto, en el c30 se definen en el .gld, pero en c18 no hay archivo .gld. He mirado en el equivalente que sería el .lkr pero no hay definiciones de puertos.

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: definiciones de los puertos en c18 de microchip.
« Respuesta #3 en: 23 de Julio de 2007, 04:09:19 »
este es el encabezado de un programa en C18 para el 18F2525

Código: C
  1. #include <p18f2525.h>
  2. #include <delays.h>
  3. #include <i2c.h>
  4.  
  5. #pragma config OSC = XT,FCMEN = OFF,IESO = OFF //CONFIG1H
  6. #pragma config PWRT = ON,BOREN = OFF,BORV = 0 //CONFIG2L
  7. #pragma config WDT = OFF,WDTPS = 32768 //CONFIG2H
  8. #pragma config MCLRE = ON,LPT1OSC = OFF,PBADEN = OFF,CCP2MX = PORTC//CONFIG3H
  9. #pragma config STVREN = OFF,LVP = OFF,XINST = OFF,DEBUG = OFF//CONFIG4L
  10. #pragma config CP0 = ON,CP1 = ON,CP2 = ON//CONFIG5L
  11. #pragma config CPB = ON,CPD = ON//CONFIG5H
  12. #pragma config WRT0 = ON,WRT1 = ON,WRT2 = ON//CONFIG6L
  13. #pragma config WRTB = ON,WRTC = ON,WRTD = ON//CONFIG6H
  14. #pragma config EBTR0 = ON,EBTR1 = ON,EBTR2 = ON//CONFIG7L
  15. #pragma config EBTRB = ON//CONFIG7H
  16.  
  17. #define reloj   PORTBbits.RB0
  18.  
  19. #define datos_4094              LATCbits.LATC0
  20. #define reloj_4094              LATCbits.LATC1
  21. #define habilita_4094   LATCbits.LATC2
  22.  
  23. #define fila_1  LATBbits.LATB1
  24. #define fila_2  LATBbits.LATB2
  25. #define fila_3  LATBbits.LATB3
  26. #define fila_4  LATBbits.LATB4
  27. #define fila_5  LATBbits.LATB5
  28. #define fila_6  LATBbits.LATB6
  29. #define fila_7  LATBbits.LATB7

ahi aparecen las definiciones de los bits.  :-/ saludos
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: definiciones de los puertos en c18 de microchip.
« Respuesta #4 en: 24 de Julio de 2007, 08:36:52 »
entonces no entiendo cómo asigna el PORTA con su dirección de memoria. Alguien sabe cómo funciona?

un saludo.  :)

La respuesta que buscas no es tan obvia como parece y está en 2 archivos.

1) En el pxxx.h que acabas de ver
2) En el .asm que está en \src\traditional\proc\pxxx.asm

El funcionamiento es el siguiente

En el asm, se define la ubicación real de los registros y se declaran como GLOBAL
En el .h , si observas con detenimiento, son estructuras que apuntan a registros externos , son todos 'extern' es decir que le indica al linker que esos archivos provienen de otro lado

Por último ambos archivos se arman en una librería pxxx.lib por eso que no los necesitas incluir en el proyecto aunque sí en el código.  El compilador al tener el path de la carpeta lib hace el resto, por el uso del pic como

#include <pxxx.h>

Donde el mayor y menor indican que el archivo está en el path por default del compilador.


Espero se te haya aclarado el panorama.
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado black_flowers

  • PIC18
  • ****
  • Mensajes: 450
Re: definiciones de los puertos en c18 de microchip.
« Respuesta #5 en: 27 de Julio de 2007, 19:10:52 »
ah, osea que se definen en un asm, bueno muchas gracias maunix. por lo menos ahora se en donde estan definidos. La verdad es que al cambiarme del asm al c18 me aparecen muchas dudas de ese tipo ya que el codigo en c te aleja bastante de lo que es el micro.

un saludo.

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: definiciones de los puertos en c18 de microchip.
« Respuesta #6 en: 27 de Julio de 2007, 22:47:56 »
ah, osea que se definen en un asm, bueno muchas gracias maunix. por lo menos ahora se en donde estan definidos. La verdad es que al cambiarme del asm al c18 me aparecen muchas dudas de ese tipo ya que el codigo en c te aleja bastante de lo que es el micro.

un saludo.

El C18 es el que menos te aleja del micro :)  , por eso lo uso tanto porque también vengo del assembler  :)
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything