delay

Software e Hardware para linha ARM

Moderadores: 51, guest2003, Renie, gpenga

delay

Mensagempor rcakto » 27 Abr 2012 01:51

Pessoal, alguem teria um exemplo de funcao delay us?
Estou usando o lpc1768 a 100Mhz
obrigado.
(parado por culpa da faculdade...)Osciloscopio opensource... entre e participe:
http://asm51.eng.br/phpBB/viewtopic.php?t=10710
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor tronico » 27 Abr 2012 08:01

Código: Selecionar todos
__asm void delay_us(int val){

inicio_us
   MOV r1,#23      
loop_us            
   SUBS r1,r1,#1
   CMP r1,#0
   BNE loop_us
dec_us   
   NOP
   NOP
   SUBS r0,r0,#1
   CMP   r0,#0      
   BNE inicio_us
sai_us            
   BX lr   
}
tronico
Byte
 
Mensagens: 112
Registrado em: 08 Set 2011 07:48
Localização: Blumenau SC

Mensagempor rcakto » 27 Abr 2012 12:51

opa, vlw tronico, vou dar uma olhada e testar sua função.

Obrigado!!
(parado por culpa da faculdade...)Osciloscopio opensource... entre e participe:
http://asm51.eng.br/phpBB/viewtopic.php?t=10710
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor tcpipchip » 28 Abr 2012 08:44

Pega antes o livro do CHRIS WRIGHT :)
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Mensagempor rcakto » 28 Abr 2012 11:50

que livro??? passa o nome que eu dou um jeito de achar.
(parado por culpa da faculdade...)Osciloscopio opensource... entre e participe:
http://asm51.eng.br/phpBB/viewtopic.php?t=10710
rcakto
Word
 
Mensagens: 787
Registrado em: 09 Jun 2010 00:57
Localização: vitoria ES

Mensagempor Viktor » 03 Mai 2012 12:50

Usa este código aqui. Ele faz uso do hardware interno do CM3 para obter uma contagem precisa do tempo



Código: Selecionar todos

#define DWT_CTRL   (*(volatile unsigned long *) 0xe0001000)   // Data Watchpoint and Trace counter register Control Register
#define DWT_CYCCNT   (*(volatile unsigned long *) 0xe0001004)   // Data Watchpoint and Trace counter register Cycle Count Register
#define SCB_DEMCR   (*(volatile unsigned long *) 0xe000EDFC)   // address of the register


#define   TRCENA      (1<<24)

//----------------------------------------------------------------------------------------------|
//   Function Name  : void init_delay_cycles(void)                                       |
//   Description    : Inicializa contador de ciclos de instrução                        |
//   Input          : Nenhum                                       |
//   Return         : Nenhum                                                      |
//----------------------------------------------------------------------------------------------|
void __init_delay_cycles(void)
 {
  SCB_DEMCR |= TRCENA;                                 // Habilita blocos de TRACE e DEBUG
  DWT_CTRL   = DWT_CTRL | 1;                           // enable the counter
 } 


//----------------------------------------------------------------------------------------------|
//   Function Name  : void __delay_cycles(U32 n)                                       |
//   Description    : Espera "n" ciclos de instrução do processador                        |
//   Input          : Número de ciclos a esperar                                       |
//   Return         : Nenhum                                                      |
//----------------------------------------------------------------------------------------------|
void __delay_cycles(U32 n)
 {
  U32 tmp;

  tmp = DWT_CYCCNT + n;
  while(DWT_CYCCNT < tmp) {}
 } 
Viktor
Byte
 
Mensagens: 281
Registrado em: 12 Out 2006 11:33

Mensagempor fabim » 03 Mai 2012 14:54

Bota preciso nisto, hehehehe.
E o LPC tem tão poucos timers !!!! hehehe
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor chrdcv » 03 Mai 2012 15:11

Putz, quem precisa de implementar um delay por polling em um CM3? Cambada, ainda com o conceito de background foreground blocante? PuSta desperdício de CPU.

AnAl :oops:
Avatar do usuário
chrdcv
Dword
 
Mensagens: 1580
Registrado em: 13 Out 2006 14:13


Voltar para ARM

Quem está online

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

cron

x