TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: manex_1987 en 03 de Marzo de 2008, 08:40:24

Título: [C30] Estructura para manejar un puerto, no me funciona jeje
Publicado por: manex_1987 en 03 de Marzo de 2008, 08:40:24
Hola gente

Tengo un pequeño problemilla. Quiero manejar independientemente los 4 bits superiores del PORTG en mi dspic. Pero lo quiero hacer de una forma elegante, es decir, ni manipulando bit por bit, ni usando mascaras OR y AND. Por ello me decanto por estructuras:

Código: [Seleccionar]
typedef struct Mota_4
{
unsigned :12;
unsigned MOT :4;
}MotorReg;


MotorReg *MOTORRAK; //linea 148
MOTORRAK=&PORTG;   //linea 149

Pero este codigo me da error. No entiendo el porqué.

konfigurazioa.h:149: error: conflicting types for 'MOTORRAK'
konfigurazioa.h:148: error: previous declaration of 'MOTORRAK' was here
konfigurazioa.h:149: warning: initialization makes integer from pointer without a cast
konfigurazioa.h:149: warning: data definition has no type or storage class

Puede darme alguien una solucion a esto?

Un saludo
Título: Re: [C30] Estructura para manejar un puerto, no me funciona jeje
Publicado por: Modulay en 03 de Marzo de 2008, 09:36:12
Probaste poniéndolo así?

MOTORRAK= PORTG;
Título: Re: [C30] Estructura para manejar un puerto, no me funciona jeje
Publicado por: manex_1987 en 03 de Marzo de 2008, 11:35:44
konfigurazioa.h:149: error: conflicting types for 'MOTORRAK'
konfigurazioa.h:148: error: previous declaration of 'MOTORRAK' was here
konfigurazioa.h:149: error: initializer element is not constant
konfigurazioa.h:149: warning: data definition has no type or storage class

Nada, me sigue dando error. Y la verdad parece bastante logico dado que PORTG es el valor de la direccion en si, y lo que yo quiero es que la estructura mapee (apunte hacia) PORTG por lo que deberia de poner su direccion.

Gracias de todas formas. Se os ocurre algo??

Título: Re: [C30] Estructura para manejar un puerto, no me funciona jeje
Publicado por: splasma2 en 09 de Marzo de 2008, 21:07:40
Por si te sirve, he probado esto con el compilador PICC18 de HI-TECH, y funciona :) :) :) :

typedef struct Mota_4
{
      unsigned    :4;
      unsigned MOT :4;
}MotorReg;


MotorReg *MOTORRAK = (MotorReg*)&PORTB; 

void main()
{
   MOTORRAK->MOT = 9;
}