CodeWarrior + MC56F8013

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

Moderadores: 51, guest2003

Mensagempor JeanPaul » 09 Jan 2007 21:17

Olá pessoal, mais uma dúvida:

Alguém já conseguiu usar a memória de programa como se fosse uma EEPROM?

Preciso gravar uns dados para calibragem de um sistema em memória não volátil. Como o 56F8013 não tem EEPROM interna, pensei em usar a flash como tal. Já li tantos AN's da freescale que estou até confuso se dá pra fazer isso ou não.

Consegui gravar uma variável com o __pmem int variavel; por exemplo. Mas não consigo altera-la quando estou rodando o programa.

Sei que na família 56F83xx é possível fazer isso. Será que dá pra fazer com a 56F80xx?

[]'s

Jean Paul
JeanPaul
Byte
 
Mensagens: 182
Registrado em: 12 Out 2006 21:27
Localização: Florianópolis -SC

Mensagempor JeanPaul » 17 Jan 2007 14:02

Bom ...

Andei pesquisando e cheguei a conclusão de que a familia 56F80xx não possue a tal de Data Flash, como a familia 56F83xx. Dessa forma, só é possível guardar constantes na memória flash. Essas constantes podem ser lidas, porém não podem ser alteradas durante a execução do programa.

O jeito é partir pra EEPROM externa nessa famila.

[]'s

Jean Paul
JeanPaul
Byte
 
Mensagens: 182
Registrado em: 12 Out 2006 21:27
Localização: Florianópolis -SC

Mensagempor Red Neck Guy » 30 Jan 2007 13:49

Alguem teria uma dica de como utilizar as interrupções sem utilizar o PE?
A propósito, altamente não recomendavel o livro,"Controlador Digital de Sinais 56F800/E", parece bolo de casamento - só tem glassê.


Flw.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor JeanPaul » 30 Jan 2007 18:45

Que interrupção você quer usar?
Expecifique um pouco mais o seu problema! Eu programo sem usar o PE.

Quanto ao livro ... concordo, tá mais pra datasheet traduzido.
E olha que os datasheets da Freescale deixam bastante a desejar.

[]'s

Jean Paul
JeanPaul
Byte
 
Mensagens: 182
Registrado em: 12 Out 2006 21:27
Localização: Florianópolis -SC

Mensagempor KrafT » 31 Jan 2007 14:00

Aquino, pelo que entendí nesse ambiente não dá para usar:
Código: Selecionar todos
/****************************************************************************/
/*                               INTERRUPÇÕES                               */
/****************************************************************************/
//Interrupção do Wake-Up.
void interrupt 15 TrataWp(void){



Como nos chips de 8 bits?
"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Mensagempor Red Neck Guy » 31 Jan 2007 14:28

Bom basicamente pelo que vi, nos 56F o endereço do vetor de interrupção necessita ser configurado em um registrador. QUando ocorre uma interrupção o mcu desvia para esse endereço e fazendo um salto conforme o numero da interrupção solicitada ele pula para a rotina de interrupção certa.
Bem, a minha duvida é sobre as diretivas de para usar isso dentro do ambiente, pois vi que tem a diretiva #pragma interrupt mas não tem argumentos...
Ajudaria muito conseguir um código simples, que apenas configurasse uma int - por exemplo - no GPIOA 0. Mas procurando por isso no site da freescale e na documentação do CodeWarrior não encontrei, parece que o uso desse chip é só vinculado ao Processor Expert.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor KrafT » 31 Jan 2007 14:44

"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Mensagempor JeanPaul » 31 Jan 2007 16:03

Olá.

O mapeamneto todo tah dentro do arquivo smm_pROM-xRAM_linker.cmd.

Código: Selecionar todos
# MC56F8013/14 memory map:
# small memory model (small data model and small program model)
# x memory above 7FFF not available with SDM


MEMORY
{
     .p_interrupts_ROM     (RX)  : ORIGIN = 0x0000,   LENGTH = 0x005C   # reserved for interrupts
     .p_flash_ROM          (RX)  : ORIGIN = 0x005C,   LENGTH = 0x1FA4 
 
 
     # p_flash_ROM_data mirrors internal xRAM, mapping to origin and length
     # the "X" flag in "RX" tells the debugger to download to p-memory.
     # the download to p-memory is directed to the address determined by AT
     # in the section definition below.
     
           
    .p_flash_ROM_data     (RX)  : ORIGIN = 0x0000,   LENGTH = 0x07FF   # internal xRAM mirror
                                                                       # for pROM-to-xRAM copy

     # for MC56F801x, reserved area of memory from 0x0000 to 0x07FF
     # is mirrored to shared RAM as well.  We use this for SDM (Small Data Model).
     
    .x_internal_RAM       (RW)  : ORIGIN = 0x0000,   LENGTH = 0x07FF 
    .reserved_1           (RW)  : ORIGIN = 0x0800,   LENGTH = 0xE800
    .x_onchip_peripherals (RW)  : ORIGIN = 0xF000,   LENGTH = 0x1000   
    .reserved_2           (RW)  : ORIGIN = 0x010000, LENGTH = 0xFEFF00
    .x_EOnCE              (RW)  : ORIGIN = 0xFFFF00, LENGTH = 0x0000   
}


Se você estiver usando o CW ele já cria este arquivo conforme o modelo do DSC que vc está usando.
Despois é só habilitar a interrupção no registrador da GPIO que vc quer usar e setar a prioridade da interrupção no registrador ITCN.

[]'s

Jean Paul
JeanPaul
Byte
 
Mensagens: 182
Registrado em: 12 Out 2006 21:27
Localização: Florianópolis -SC

Mensagempor Red Neck Guy » 31 Jan 2007 19:49

Olha, peguei a habilitei as int de um do pino B4. Configueri o pull-up interno, sensibilidade a borda de descida, e apaguei o flag INT_DIS do Interrupt Control Register e nada. ACho que não é assim como tu disse não...
Analisando por uma forma lógica, não faz sentido...
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor Red Neck Guy » 31 Jan 2007 20:02

Entre as páginas 219 e 223 do livro que anteriormente esplana de uma maneira hiper superficial o modo de tratamento das interrupções que quero adotar no meu desenvolvimento com o 56F.

Aguardem, em breve estarei lançando um livro sobre o 56F... :shock:
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor KrafT » 31 Jan 2007 20:28

Quer dizer que se eu quiser fazer um led alternar via interrupcao de um pino eu preciso fazer isso com o Processor Expert?

E eu que já pensei em usar esse chip... Me livrei de uma bomba, pois odeio o processor expert e outros tantos Wizards que existem por aí.
"..."Come to the edge," he said. And so they came. And he pushed them. And they flew."― Guillaume Apollinaire
Avatar do usuário
KrafT
Dword
 
Mensagens: 2228
Registrado em: 11 Out 2006 14:15
Localização: Blumenau -SC

Mensagempor Red Neck Guy » 31 Jan 2007 20:55

Não, não.
Dá pra fazer na mão, é que não é fácil descobrir como. Pegando como exemplo o uVision, IAR e CCS. Neles no próprio help mostra como fazer isso, no CW não diz nada.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor JeanPaul » 01 Fev 2007 07:20

É bem como está no livro mesmo ... pags 222 e 223. Não tem segredo.

Tinha esquecido de comentar o vetor de interrupções.
JeanPaul
Byte
 
Mensagens: 182
Registrado em: 12 Out 2006 21:27
Localização: Florianópolis -SC

Mensagempor Red Neck Guy » 02 Fev 2007 12:19

Usei o exemplo do livro e funciona. A unica coisa que não gostei foi o fato de um código minusculo desses ocupar 2k e pouco da memória flash...

:(
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Mensagempor JeanPaul » 02 Fev 2007 13:06

Pois é ... também notei isso.

Mas acho que é por causa dos arquivos de inicialização que fazem o boot, calibração, essas coisas.
Depois você vai ver que o código escrito vai ocupando menos espaço na memória, comparando com esse pequeno que vc escreveu.

[]'s

Jean Paul
JeanPaul
Byte
 
Mensagens: 182
Registrado em: 12 Out 2006 21:27
Localização: Florianópolis -SC

Anterior

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

Quem está online

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

x