Rotina para delay de 15 segundos???

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Rotina para delay de 15 segundos???

Mensagempor Haroldo Coelho » 09 Mar 2007 23:51

Para delay de 250 ms eu já ví em diversos livros e até já utilizei. Mas como seria uma rotina para 15 segundos????

please, em asssembly.

Thanks you.
Haroldo Coelho
Byte
 
Mensagens: 343
Registrado em: 14 Out 2006 00:20
Localização: Rio de Janeiro

Mensagempor eletroinf » 10 Mar 2007 00:09

Bom, na tua pergunta já tem uma possibilidade.
Chama a rotina de 250ms 60 vezes que resulta em 15 segundos.
Avatar do usuário
eletroinf
Word
 
Mensagens: 948
Registrado em: 12 Out 2006 14:59
Localização: Santa Maria - RS

Mensagempor Haroldo Coelho » 10 Mar 2007 00:22

também pensei nessa possibilidade, mesmo porque acho que todas as outras formas serão semelhantes, não?
Haroldo Coelho
Byte
 
Mensagens: 343
Registrado em: 14 Out 2006 00:20
Localização: Rio de Janeiro

Mensagempor ernande_filho » 10 Mar 2007 00:43

sim! é tudo repetição pra "comer" o tempo.
Ernande Filho

==>> Meus cabelos já não caem, PULAM!! <<==
Avatar do usuário
ernande_filho
Byte
 
Mensagens: 233
Registrado em: 13 Out 2006 17:28
Localização: Recife/PE/Brasil

Mensagempor Pask » 10 Mar 2007 09:06

Caro Haroldo, para uma contagem de tempo de 15 segundos, por exemplo, ajuste o prescaler do timer0 para 1:255 e crie uma variável auxiliar (VAR_AUX) inicializando-a com o valor 231 decimal. Deixe o TMR0 estourar normalmente. Então a sub-rotina ficará mais ou menos assim:

DELAY_15S ;15,021s = 255us (PRESCALER) x 255 (TMR0) x 231 (VAR_AUX)

MOVLW .231
MOVWF VAR_AUX
CLRF TMR0
MOVLW .255
SUBWF TMR0,W
BTFSS STATUS,C
GOTO $-3
DECFSZ VAR_AUX,F
GOTO $-6
RETURN ;retorna após 15 segundos!

É claro que na sub-rotina acima, eu pressuponho que vc não esteja com o watchdog-timer habilitado. Caso ele esteja, será preciso incluir no meio da sub-rotina uma instrução CLRWDT e ajustar os "GOTO"!

Um forte abraço e boa sorte no seu projeto.

Pask.
Pask
Word
 
Mensagens: 600
Registrado em: 22 Dez 2006 19:19

Mensagempor Renie » 10 Mar 2007 17:17

Olá Haroldo,

Tem este utilitário para gerar rotinas de delay:

http://www.piclist.com/techref/piclist/ ... /delay.htm
[]'s
Renie
-------------------------------------------------------------------------------------------------------------
Meu velho site com eletrônica praticamente parado http://www.reniemarquet.com
Nosso Blog http://artemadeiraevida.blogspot.com.br
Renie
Word
 
Mensagens: 732
Registrado em: 11 Out 2006 22:35
Localização: RJ - Niterói - Brasil

Mensagempor Haroldo Coelho » 10 Mar 2007 23:21

obrigado a todos
Haroldo Coelho
Byte
 
Mensagens: 343
Registrado em: 14 Out 2006 00:20
Localização: Rio de Janeiro

Mensagempor andre_luis » 12 Mar 2007 09:29

Haroldo,

Só pra lembrar : Quando voce utiliza interrupção com temporizacao interna, o tempo necessário para processar a interrupção interfere no cálculo. Isso não gera problema algum se a precisão necessária for de apenas alguns minutos, mas se extender além disso, tem de ficar conciente que ao multiplicar um valor, o erro associado também acaba sendo multiplicado.

Por isso, para casos onde uma maior precisao seja necessária, voce deve utilizar um oscilador/divisor externo para gerar a interrupção, ou então proceder a uma correção do erro periodicamente.

+++
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor Haroldo Coelho » 12 Mar 2007 22:33

André, meu projeto não é muito preciso não, será de 15 segundos + ou - 1 segundo. Valeu pela dica. Já fiz o projeto no MPLAB , agora vou pro protoboard.

Valeu.
Haroldo Coelho
Byte
 
Mensagens: 343
Registrado em: 14 Out 2006 00:20
Localização: Rio de Janeiro

Mensagempor barboza » 12 Mar 2007 23:55

O problema de algumas rotinas de delay é que ela fia "pressa" e com isso não se faz mais nada enquanto espera-se o tempo.
Tipo esquece sensores, serial, etc.

Neste caso o melhor é estruturar suas rotinas e fazer processamento paralelo.
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor andre_luis » 13 Mar 2007 09:15

barboza escreveu:... o melhor é estruturar suas rotinas e fazer processamento paralelo.


É isso mesmo. Faz o delay temporizado por interrupção de Timer.
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ


Voltar para PIC

Quem está online

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

x