Acessando os pinos, registradores, etc do 56f8013 (migrado)

Software e Hardware para uC da Qualcomm, NXP, FreeScale e Motorola

Moderadores: 51, guest2003

Acessando os pinos, registradores, etc do 56f8013 (migrado)

Mensagempor Fábio Pereira » 17 Out 2006 17:21

eletroinf
Aspirante


Brazil
153 Posts Posted - 04/05/2006 : 16:22:36
--------------------------------------------------------------------------------
Buenas...
Alguém já mexeu com esse mcu? Como fez pra acessar os pinos, em C, no Code Warrior?? Tem um arquivo de nome "MC56F801x.h" que tem as definições com os endereços de cada registrador, mas não consegui utilizá-lo ou achar alguma serventia pro mesmo.
Utilizando a definição
#define PAOUT (*(unsigned int *) 0xF100)
eu consigo fazer, por exemplo, PAOUT = 100;
O compilador não reclama, mas eu não testei nem simulei pra ver se altera o registrador 0xF100. Agora, pra acessar os bits a coisa tá feia:

union {
unsigned int PAOUT;

struct {
unsigned char a0 :1;
unsigned char a1 :1;
unsigned char a2 :1;
unsigned char a3 :1;
unsigned char a4 :1;
unsigned char a5 :1;
unsigned char a6 :1;
unsigned char a7 :1;
unsigned char x :8;
} bit;

} @0xF100;

não compila, dá erro, o compilador reclama do "@0xF100".
Já experimentei várias maneiras possíveis (ah, claro, antes que perguntem, as impossíveis também) e não tem jeito. Alguém pode dar alguma idéia??

Ricardo Morim


KrafT
Conselheiro


Brazil
3476 Posts Posted - 04/05/2006 : 17:21:30
--------------------------------------------------------------------------------
Tenta se basear no dos HC908:



/*** PTA - Port A Data Register; 0x00000000 ***/typedef union { byte Byte; struct { byte PTA0 :1; /* Port A Data Bit 0 */ byte PTA1 :1; /* Port A Data Bit 1 */ byte PTA2 :1; /* Port A Data Bit 2 */ byte PTA3 :1; /* Port A Data Bit 3 */ byte PTA4 :1; /* Port A Data Bit 4 */ byte PTA5 :1; /* Port A Data Bit 5 */ byte AWUL :1; /* Auto Wake-up Latch Data Bit */ byte :1; } Bits; struct { byte grpPTA :6; byte :1; byte :1; } MergedBits;} PTASTR;extern volatile PTASTR _PTA @0x00000000;#define PTA _PTA.Byte#define PTA_PTA0 _PTA.Bits.PTA0#define PTA_PTA1 _PTA.Bits.PTA1#define PTA_PTA2 _PTA.Bits.PTA2#define PTA_PTA3 _PTA.Bits.PTA3#define PTA_PTA4 _PTA.Bits.PTA4#define PTA_PTA5 _PTA.Bits.PTA5#define PTA_AWUL _PTA.Bits.AWUL#define PTA_PTA _PTA.MergedBits.grpPTA#define PTA_PTA0_MASK 1#define PTA_PTA1_MASK 2#define PTA_PTA2_MASK 4#define PTA_PTA3_MASK 8#define PTA_PTA4_MASK 16#define PTA_PTA5_MASK 32#define PTA_AWUL_MASK 64#define PTA_PTA_MASK 63#define PTA_PTA_BITNUM 0




cinetica
Candidato



17 Posts Posted - 04/05/2006 : 19:39:39
--------------------------------------------------------------------------------
eletroinf, você pode utilizar:
#define PAOUT (*(unsigned int *) 0xF100)
funciona no kit, já utilizei.


Nightcrawler
Mestre


Brazil
1143 Posts Posted - 04/05/2006 : 20:34:50
--------------------------------------------------------------------------------
Olá cinetica,

Eu tentei assim e funcionou, mas não consegui ter acesso aos bits.
Alguém já tentou alguma coisa assim??

<<Diego>>
MSN: noturno_st@hotmail.com

eletroinf
Aspirante


Brazil
153 Posts Posted - 05/05/2006 : 08:32:44
--------------------------------------------------------------------------------
Bom, Kraft, eu tentei fazer alguma coisa utilizando aquele código dos HC. Mas o compilador sempre implica com a atribuição de endereço, o "@". A união da estrutura com a variável parece estar funcionando, o problema é atribuir a variável ao endereço físico, por exemplo de um Port do MCU.Menos mal que funciona a definição da variável inteira, como mensionou o Cinetica. Vou testar com este último método, o exemplo que veio no kit é tudo em assembly, só não sei porque o cara fez o projeto em C (decerto não confia no compilador) se o código é em assembly. Agora, cá entre nós, os fabricantes de compiladores não pensam nem um pouco em facilitar as coisas pra gente. Não entendo esses compiladores pra MCU com um péssimo suporte pra campo de bits. Tá aí o ZDS. Sofre do mesmo mal.

Ricardo Morim
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON

Mensagempor Fábio Pereira » 17 Out 2006 17:23

Só para constar:

O Codewarrior para 56F8xxx não suporta o operador @. Eu entrei em contato com o suporte técnico da Freescale nos EUA e eles não souberam informar uma forma de mapear uma estrutura em um endereço absoluto de memória.

Até +
Fábio Pereira
embeddedsystems.io
Avatar do usuário
Fábio Pereira
Word
 
Mensagens: 674
Registrado em: 16 Out 2006 09:07
Localização: Kitchener, ON


Voltar para NXP (ex-FreeScale (ex-Motorola))

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x