| | #7 (permalink) Top |
| User 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. |
| | |
| Bookmarks |
| |
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 |