Olá Maia,
Foi exatamente este o motivo de eu ter abandonado o PE, "tirar o máximo dele".

Eu achei o PE muito bom no que diz respeito a velocidade de desenvolvimento, pelo menos a parte de configuração é feita de forma muito rápida. Quanto ao código gerado ... não deu muita diferença entre o que eu fiz e o que o PE gerou, pensei que fosse ser maior. Para o meu caso, o problema do PE esta no tempo que leva para eu pedir a leitura de um AD e receber o valor. Talvez seja até interessante usar o PE para as configurações e fazer o pedido de leitura e acesso de registradores diretamente ... sem usar as funções disponibilizadas pelo PE.
Bom ... quanto ao código que eu escrevi ... por exemplo. Abaixo tem a configuração do PWM. Usei o header que você postou. Não tive tempo de comentar direito, mas se olhar os resgistradores dá pra ter uma idéia do que está sendo feito. Criei um arquivo para a configuração de cada periférico, as funções são chamadas no main. Este seria o arquivo pwm.c por exemplo.
- Código: Selecionar todos
#ifndef __init_PWM
#define __init_PWM
#include "MC56F8013.h"
#define LDOK 2
#define PWM_EN 1
void init_PWM(void);
void init_PWM(void)
{
/**************************************************************
* ConfiguraçÃo do PWM nos Canais 2 (GPIOA2) e 3 (GPIOA3)
* Frequencia de Trabalho - 50 kHz
* Fonte de Clock - 3x PWM System Clock
* DeadTime Feito Por Software - 1us
**************************************************************/
SIM_GPS = 16384;
SIM_PCE = 8261;
SIM_CTRL = 0;
SIM_CLKOUT = 32;
PWM_FCTRL = 0;
PWM_CMOD = 960;
PWM_VAL2 = 0;
PWM_VAL3 = 960;
asm (BFCLR #$FFFF,X:$F04E); /* Dasabilita Máscaras */
asm (BFCLR #$FFFF,X:$F04F); /* Dasabilita Máscaras */
PWM_DTIM0 = 1; /*Dead Time == 1*/
PWM_DTIM1 = 1; /*Dead Time == 1*/
PWM_CCTRL = 0b1000000000000000;
PWM_CCTRL = 49152;
PWM_OUT = 32780;
PWM_ICCTRL = 0;
PWM_SCTRL = 2048;
PWM_CTRL = 61440;
PWM_CNFG = 16398;
PWM_CTRL = (PWM_CTRL | LDOK); /* Carrega valores dos registradores */
PWM_CTRL = (PWM_CTRL | PWM_EN); /* Habilita PWM */
}
# endif
Se tiver dificuldades pra configurar os outros periféricos dá um toque.
Quanto ao problema que relatei no último post ... pesquisando na net encontrei uma possível solução:
http://forums.freescale.com/freescale/board/message?board.id=CWCOMM&message.id=2763&query.id=5430#M2763
Agora o programa fica gravado no uC mas é preciso dar um reset, para que o mesmo rode normalmente, depois de energizar a fonte. Acho que o problema tem a ver com vetor de inicialização, ou esse boot de ROM pra RAM que não peguei direito ainda.
Bom ..... aceito qualquer sugestão!
[]'s
Jean Paul