Usando # INT_RB em 16F877

O

oguzmania

Guest
Oi from Turkiye.
Em primeiro lugar I am sorry for my bad Inglês.

Se eu explicar o meu projeto; (eu uso o CCS C)

Tenho 4 circuito equivalente do detector de som e então vou usar op-amp na saída do detector circuits.If 4 detecta som op-amp (comparação) mostra 5 V, se não ele mostra 0 V.

Microfones Este circuito detector estão em points.So diferente se eu enviar um sinal de som, o sinal chega esse detectores em diferentes épocas.

Então eu quero encontrar essa momentos diferentes. (Ou diferenças de tempo)

Em primeiro lugar eu estou usando o 16F877 e saída de linha de comparação combinada RB <4:7>
Por exemplo;
1.detector: RB4
2.detector: RB5
3.detector: RB6
4.detector: RB7

Eu quero encontrar diferenças de tempo com o uso INT_RB e Timer1.
I set Timer 1 com o uso de minhas condições. (Exemplo, usando a velocidade do som, etc ..)

Eu não quero usar Timer 1 com a sua interrupção.

Por exemplo, as diferenças neste momento;
1.detector: 0 segundo
2.detector: 120us
3.detector: 2000US (2 ms)
4.detector: 25000us (25ms)

No meu cálculo deve medir 30US a 30 msn (Timer 1 64536-65536)

Mas eu não fiz isso no CCS.

Eu quero;

Se detector1 é lógico1;
if (input (pin_b4))
timer 1 começa
= 0 e time1

if (input (pin_b5))
time2 = get_timer1 ()

if (input (pin_b6))
time3 = get_timer1 ()

if (input (pin_b7))
time4 = get_timer1 ()

Eu quero encontrar com diferenças de tempo que não utilizam interrupção timer 1.

E quando RB <4:7 5V> pins -> 0V Eu não quero uma nova interrupção.

Estou esperando sua Espero answers.I explicou o meu problema ...

Que a paz esteja com você ...

Oguz

 
Oi,
Seu sistema vai funcionar se você cuidar dos seguintes procedimentos:

1.Você deve configurar o RB4 a RB7 bits como entrada a puxar para cima.

2.Você deve garantir que cada bit só vai mudar de estado uma vez durante um ciclo de medição.Isto pode ser conseguido através de quatro externo Set / Reset flip-flops que todos poderiam ser reposto através de um bit de saída do PIC e prepare-se quando o comparador saídas de áudio conectada nas entradas seu jogo ir para baixo pela primeira vez.Outras alterações da saída do comparador será removido pelos FFs SR salvo novamente redefinida pelo PIC.

Eu espero que você pode cuidar de issuues outro idioma específico.

Atenciosamente,
LaktronicsAdicionado após 3 horas 13 minutos:Oi,
Você também deve ler portb vez de começar com uma vez e depois de cada interrupção.
Atenciosamente,
Laktronics

 
/************************* entegreterbiyecisi (at) yahoo.com ***************** *************/
int ca, ne, pode, ne, a mudança;
/ *** entegreterbiyecisi (at) yahoo.com *** /
int_rb #
sensor () (
Se bit_test (port_b (, 7)) (ca = 1;)
Se bit_test (port_b (, 6)) (ne = 1;)
change = 1;)
/ *** entegreterbiyecisi (at) yahoo.com *** /
main () (

enable_interrupts (int_rb);
/ *** entegreterbiyecisi (at) yahoo.com *** /
while (true) (

if (! entrada dwn ()) (/ / start
dsp_data = 0;
alterar = false;
data_bitti = false;
output_high (role_1);
/ *** entegreterbiyecisi (at) yahoo.com *** /
while (! data_bitti) (
while (mudar!) (
dsp_yaz (10);
if (input! (up)) (/ / stop
goto stop;))
/ *** entegreterbiyecisi (at) yahoo.com *** /
if (dsp_data <9999) (
dsp_data ;
dsp_ayir (dsp_data);
alterar = false;
/ *** entegreterbiyecisi (at) yahoo.com *** /
if (dsp_data> = role1_data) (
output_low (role_1);)
if (dsp_data> role1_data) (
/ *** entegreterbiyecisi (at) yahoo.com *** /
data_bitti = true;
change = true;
))))))
/************************* entegreterbiyecisi (at) yahoo.com ***************** *************/
# fuses XT, noPROTECT, nowrt, noPUT, BROWNOUT, NOLVP, WDT

/ / watchdog timer um fusível
WDT
main ()
set_rtcc (0);
setup_counters (RTCC_INTERNAL, WDT_2304MS);

/ / olarak yazılırsa önce den 2304ms
restart_wdt ();
/ / içinde programa değişik yerlere yazılmalıdır

/ / Eder aksi takdirde WDT pic i reset
/********** www.picproje.org TURKIYE de *****************/

 

Welcome to EDABoard.com

Sponsor

Back
Top