Implementando Delay [RESOLVIDO]

1. Implementando Delay [RESOLVIDO]

Larissa Lais
lady arya

(usa Debian)

Enviado em 29/06/2012 - 08:41h

Olá Pessoal.

Eu uso programação C para microcontroladores Freescale, e preciso usar a função DELAY, mas a função delay "não existe" em microcontroladores, eu preciso criar uma função que faça com que o delay exista.
Alguém poderia me ajudar?

Valew... Bj


  


2. Re: Implementando Delay [RESOLVIDO]

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 29/06/2012 - 12:29h

Eu não conheço microcontroladores, mas ling. C existe uma função chamada sleep que é chamada através da biblioteca unistd.h que causa um delay.

Link: http://pubs.opengroup.org/onlinepubs/009604599/functions/sleep.html

boa sorte.


3. Re: Implementando Delay [RESOLVIDO]

Larissa Lais
lady arya

(usa Debian)

Enviado em 02/07/2012 - 14:19h

Olá..

Obrigada por tentar ajudar..
Mas sua sugestão não funciona, pois em microcontroladores não existe nenhum comando delay, sleep ou variados.
Eu preciso criar a função entende?
E ai que está o problema! Eu programo em C, e o delay é um comando comum assim como o sleep, mas em microcontroladores eles não existem.

Não é uma rotina extensa, mas não estou conseguindo fazer que funcione.
seria algo parecido com isso:



#include <MC9S08SH8.h>
#include "MCUinit.h"

unsigned int delay;

void Delay (void)
{
while(delay!=0)
{

TPM1SC = TPM1SC | 0x7F;

if (TPM1SC_TOF==1)
{
delay--;

}

}

}


Se alguém puder me ajudar... Bom, eu ficarei muito grata!!!



4. Re: Implementando Delay [RESOLVIDO]

???
gokernel

(usa Linux Mint)

Enviado em 02/07/2012 - 17:49h


Acredito que cada sistema tenha alguma função do tipo DELAY ... vamos pegar por exemplo a SDL:



Para Dreamcast:
void SDL_Delay(Uint32 ms)
{
thd_sleep(ms);
}

Para Symbian:
void SDL_Delay(Uint32 ms)
{
User::After(TTimeIntervalMicroSeconds32(ms*1000));
}

Para Windows:
void SDL_Delay(Uint32 ms)
{
Sleep(ms);
}



Observe que o Sam Lantinga(Criador da SDL) utilizou em cada systema uma funcao propria do systema ...

Veja se tem alguma funcao com o nome similar a ( nanosleep );



5. Re: Implementando Delay [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 04/07/2012 - 07:14h

Olaa!

Talvez seja isto que você está procurando:

http://www.vivaolinux.com.br/script/Funcao-Temporizador-em-C

Faz um tempo que postei.


*** ADD ***

Faz tempo que postei este código.

Este algoritmo do link usa uma função de Linux prá anotar um instante x, realizar um loop enquanto o tempo passa e sair do loop só quando se chega ao instante determinado.

É só encontrar esta função e fazer de modo semelhante.

Porém se não houver, é o caso de se apelar pro Assembly do processador.

Ele deve ter uma interrupção que lide com instantes de tempo.

Neste caso cria-se uma função de tempo com partes de C e Assembly para o uso desta ficar menos indigesto.

Encontrei este texto que pode ter algo a ver, mas é um pouco extenso.

"http://www.freescale.com/files/student_learning_kits/doc/student_projects/RTOS_MQX_TELAPP.pdf"


6. Re: Implementando Delay [RESOLVIDO]

Larissa Lais
lady arya

(usa Debian)

Enviado em 04/07/2012 - 11:14h

Gente... Valew pela ajuda!
Muito obrigada mesmo!

Mas acabou que eu consegui resolver sozinha aqui o problema.
Mas caso queiram ver, para microcontroladores que não possuem a função delay ou similar a seguinte função resolve o problema:


#include <MC9S08SH8.h>
#include "MCUinit.h"


void Delay (unsigned char delay)
{
while(delay>0)
{
if (TPM1SC_TOF==1)
{
TPM1SC = TPM1SC & 0x7F; //reseta apenas o bit TOF
delay--;
}
}
}

Depois é só usar ela conforme você precisar, configurando o timer claro!

Valew pela ajuda gente!!
Abs






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts