TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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:
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
-
Probaste poniéndolo así?
MOTORRAK= PORTG;
-
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??
-
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;
}