tachometers su pic16f887

S

soulraven

Guest
man padėti šiuo kodu bando padaryti tachometers su pic16f887.Tik parodykite man visą laiką 330.
Nustatyti CCP1 fiksuoti bet nieko ....
jei yra blogai?
Aš į main.c
ccp1_isr ();
turometru ();
kur aš blogai?
Kodas:# include "main.h"# prioritetas CCP1, TIMER1# define BytePtr (var kompensuoti) (char *)(&( char *) var kompensuoti)# byte PIR1 = 0xF9E

# bit TMR1IF = PIR1.0int8 gc_timer1_extension = 0;

int8 gc_capture_flag = FALSE;

Int32 g32_ccp_delta;//------------------------------------------------ ------

# int_timer1

tuščia timer1_isr (tuščia)

(

gc_timer1_extension ;

)//------------------------------------------------ ------# int_ccp1

tuščia ccp1_isr (tuščia)

(

char timer_ext_copy;

Int32 current_ccp;

statinio Int32 old_ccp = 0;gc_capture_flag = TRUE;current_ccp = (Int32) CCP_1;/ / Gavimas vietos kopiją laikmatç Įtr.

timer_ext_copy = gc_timer1_extension;jei (TMR1IF)

(

if (* BytePtr (current_ccp, 1) <2) / / Was BPP paimkite po Timer1 suvynioti?

timer_ext_copy / / Jei taip, vč kopiją laikmatç Įtr./ / Kadangi mes žinome laikmatis nutraukti laukia, galime tik

/ / Rankena tai čia ir dabar. Tai taupo mažai apkrovos išjungimo

/ / Procesoriaus.

gc_timer1_extension / / didinti realaus laiko pratęsimas

TMR1IF = 0; / / Tada išvalyti Timer1 pertraukti

)/ / Įdėkite laikmatç išplėtimas į tinkamą vietą į 32-bitų

/ / VAK vertę.

/ / Ty. Įdėkite ją į vietą "EE" taip: 0x00EEnnnn

/ / (Nnnn = BPP).

* BytePtr (current_ccp, 2) = timer_ext_copy;g32_ccp_delta = (current_ccp> old_ccp)?
current_ccp - old_ccp: current_ccp (0x1000000 - old_ccp);/ / Įrašyti dabartinį CCP vertės kitą kartą.

old_ccp = current_ccp;)//=======================

tuščia turometru ()

(

int16 frecventa;

int16 dažnumas;

Int32 current_ccp_delta;set_timer1 (0);

setup_timer_1 (T1_INTERNAL | T1_DIV_BY_1);

setup_ccp1 (CCP_CAPTURE_RE);/ / Įjungti interrupts.

clear_interrupt (INT_TIMER1);

enable_interrupts (INT_TIMER1);clear_interrupt (INT_CCP1);

enable_interrupts (INT_CCP1);

enable_interrupts (Globalus);/ / o (1)

/ / (

disable_interrupts (Globalus);

current_ccp_delta = g32_ccp_delta;

enable_interrupts (Globalus);jei (gc_capture_flag == TRUE)

(

dažnis = (int16) ((5000000L (current_ccp_delta>> 1)) / current_ccp_delta);

frecventa = (dažnumas * 60) / 2;lcd_gotoxy (5,1);

printf (lcd_putc "% lu \ n" frecventa);

printf ( "% lu \ n \ r", frecventa);

/ / Printf (lcd_putc "% lu Hz, delta =% liukso \ n \ r", dažnis, current_ccp_delta);gc_capture_flag = FALSE;

)

kitas

(

lcd_gotoxy (5,1);

printf (lcd_putc, "0 \ n");

printf ( "0 \ r");

)delay_ms (100);

/ /))

 

Welcome to EDABoard.com

Sponsor

Back
Top