Opa! Vi que muita gente está com o kit de molho. Eu imagino que seja o mesmo kit que eu adquiri por 110 reais, com chipset ST711FR0T6, com um barramento de 40 pinos.
Eu to aqui me batendo um pouco com ele. Mais especificamente com o timer. Ele não tem lógica! Quando eu carrego com 0x06 o reg de comparação A, o timer conta 20ms, se eu carregar com 0x07, o timer conta 8us. Ele é bem aleatório, nao tem lógica.
Alguem ai conseguiu pode dar um help?já até apelei em alguns trechos, mas nao vai... Vou postar o meu "complexo" código. Obrigado
cpp code
void main(void)
{
config_clk();
int * PORT0=(int *)0xE0003000; //ENDEREÇO DO PORT 0
//AGORA VOU CONFIGURAR P0.13 PARA SAIDA PUSH PULL
*(PORT0 + 0) |= 0X2000; *(PORT0 + 1) &= 0X0DFFF; *(PORT0 + 2) |= 0X2000;
while(1)
{
*(PORT0 + 3) = 0X2000;
cont_timer(0xCCD);
*(PORT0 + 3) = 0X0;
cont_timer(0xCCD);
}
void cont_timer ( int tempo)
{
int total= tempo;
int * TIM0_OCAR=(int *)0x0E0009008; //reg de comparacao A
int * TIM0_CR1=(int *)0x0E0009014; //reg1 de controle
int * TIM0_CNTR=(int *)0x0E0009010; //reg contador
int * TIM0_CR2=(int *)0x0E0009018; //reg2 de controle
int * TIM0_SR=(int *)0x0E000901C; //reg de status, if bit14==1 eh pq deu a contagem
* TIM0_SR=0x0;
* TIM0_CNTR=0x0; //resetar o contador //ffc
// tempo= * TIM0_CNTR;
// printf("%d \n", tempo);
* TIM0_CR2=0x0;// nao tem aquele divisor
* TIM0_OCAR=total ;//valor que ele vai CONTAR
* TIM0_CR1= 0x8000; //ligue o timer
while( !(* TIM0_CNTR == * TIM0_OCAR)){} //fique aqui enquanto nao estourar o timer
// tempo= * TIM0_CNTR;
// printf("%d \n", tempo);
* TIM0_SR &= 0x0BFFF; // agora zere o flag
* TIM0_CR1= 0x0;//desligue timer
}