Innanzi tutto vi ringrazio per le risposte. Procedendo con ordine vi dico:
- In una scala da 1 a 10 mi sento noob di 3=B0Livello
- Circa un mese fa ho comprato una scheda di sviluppo EasyPic5 quindi ho tutti gli strumenti necessari per testare il funzionamento del programma
- Per quanto riguarda il timer1 che ha un periodo|Max di 2 sec penso proprio che va benissimo perch=E8 il valore di 0,5Hz era proprio una stima per difetto fin troppo bassa per la frequenza diciamo che il periodo piu lungo che posso avere =E8 di 0,66Hz quindi un periodo|Min di
1,5sec.- I segnali che devo mandare al PIC sono TTL compatibili infatti sono
0-5V. I segnali sono cosi bassi perch=E8 sono dovuti a frequenza cardiaca.Pensando al programma e leggendo un po il datasheet ho controllato che posso fare due cose:
1)O mandare il segnale al PIC(16F84) sul pin RA4 che =E8 fatto proprio per sentire il fronte di salita 2)Mandarlo sul pin RB0 che funziona da interrupt.Avevo pensato di procedere cosi:
1)Dichiaro le variabili 2)Setto pin RB0 come input e tutto il resto come OUTPUT 3)Dichiaro una routine di interrupt che viene avviata quando arriva un fronte su RB0 3.1)La Routine provvede ad incrementare un contatore si uno e assegna ad una variabile array (TIMER[CONTA]=3Dtimer_ OVERFLOW) il valore TMR0 o meglio sarebbe il valore dell'overflow. 4)Il ciclo main che con un IF controlla che se CONTA=3D2 allora esegue le seguenti operazioni: 4.1)Periodo=3DTIMER[CONTA]-TIMER[CONTA-1] Conta=3D0 che azzera il registro e quindi mi consente di ricontare i due impulsi 4.2)Sempre all'interno del ciclo metto le istruzioni LCD_CLR ecc per cancellare lo schermo e scrivere il risultato sull'LCD 5)se non entra nel ciclo IF vuol dire che non =E8 ancora arrivato il secondo impulso e quindi continuo l'esecuzione del main.COME VI SEMBRA??? Sar=E0 una cavolata immagino. Mi sono giunti 3 dubbi. Ho letto che il TMR0 quando va in overflow cio=E8 (se ho un CLK a 4Mhz e uso un prescaler di 4 avr=F2 che TMR0 si incrementa con Freq di 1MHz quindi 1/1MHz=3D1us avendo 8 bit il suo valore max =E8 255 quindi 0-255 =3D 256x1us=3D 256us 1/256us=3D3906,25 ) 3906,25 volte al secondo manda=
un interrupt ecco dovrei contare gli interrupt del registro TMR0 che intercorrono tra un impulso e il sucessivo per avere la stima precisa del tempo .Facendo poi PERIODO(che contiene il numero di overflow letti in ciascun evento)x256us=3DPERIODOsec(es 0,55sec) da qui facendone l'inverso trovo la freq es 1/0,55sec=3D1,81 Hz e moltiplicandola per
60 ottengo le pulsazioni al MINUTO es 1,81x69 =3D 109 Battiti/Min.QUALCUNO SA DARMI UNA MANO??? Va bene anche in MIKRO C eventualmente!!!