Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


 
 
Strumenti discussione Visualizzazione
Prev Messaggio precedente   Prossimo messaggio Next
Vecchio 09 novembre 05, 20:29   #7 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Segui il consiglio di RIVP6 e passa al 628: il vantaggio è che così hai a disposizione un contatore a 16 bit e rilevare la lunghezza dell'impulso diventa molto facile; in alternativa al codice che vedi qui, puoi usare il 16F84 con il timer0; devi però usare i seguenti accorgimenti:
1) azzerare il timer0 quando rilevi il fromte di salita (invece di dare lo start, dato che il timer0 non si può fermare ed avviare)
2) monitorare anche il flag di overflow e, quando lo trovi ad uno, incrementare la parte alta di un contatore a 16 bit di 1 quindi azzerare il flag di overflow
3) leggere il valore del timer0 ed il elativo flag di overflow quando rilevi il fronte negativo (fine impulso).
La stessa logica può essere utilizzata gestendo il punto 2 sotto interrupt.

Se invece usi il 628 diventa tutto molto più semplice...


;************************************************* ******************
; Descrizione bit PortA
;************************************************* ******************
;
#DEFINE Inp PORTA,0 ; input

#DEFINE Page_1 STATUS,RP0 ; Page 1 bank switch

;************************************************* ******************
; Start of code
;************************************************* ******************
;
ORG 0
goto Init


;************************************************* ******************
; Program init
;************************************************* ******************
;
Init movlw 0xFF ; xxOI IOOO Data dir
bsf Page_1 ; Set page 1
movwf TRISA ; I/O Port
movlw 0xC2 ; 1000 0010
movwf OPTION_REG ; Presc TMR0/4
bcf Page_1 ; Set page 0
clrf PORTA ; Clear output
movlw 0x07
movwf CMCON

;************************************************* ******************
; Main program start
;************************************************* ******************
;
Start movlw 0x00
movwf TMR1L
movwf TMR1H ; Azzera timer 1
bcf T1CON,0 ; Stop Timer1
CountLoop btfsc Inp
goto $-1 ; Attende linea bassa
btfss Inp
goto $-1 ; Inizio impulso
bsf T1CON,0 ; Start Timer1
btfsc Inp ; Fine impulso
goto $-1
bcf T1CON,0 ; Stop Timer1

END


Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
 

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato


Discussioni simili
Discussione Autore discussione Forum Commenti Ultimo Commento
PIC16F84 & motore stepper 200 giri DDV1982 Circuiti Elettronici 13 19 giugno 08 19:54
AIUTO!!! AIUTO!!! AIUTO!!! INTERFERENZE PAUROSE!!!!!! alvaro Elimodellismo in Generale 10 04 ottobre 07 12:36
Schema per PIC16F84.... kriptor86 Circuiti Elettronici 5 11 marzo 04 19:13
Pic16F84 e seriale dexterman Circuiti Elettronici 6 01 febbraio 04 17:59
Regolatore PIC16F84 --- Motore ? flyer Circuiti Elettronici 3 22 dicembre 03 19:55



Tutti gli orari sono GMT +2. Adesso sono le 10:47.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002