si tratterebbe di implementare un sistema con le ottime caratteristiche dei circuiti con NE555 (oscillatori, monostabili, soglie, isteresi, ecc...) ma che utilizzi i comparatori per generare interrupt che sarebbero sfruttabilssimi all' interno di codice per i piu' svariati usi, non creare un codice che simuli il 555.
clikka sulle mie stelline per vedere i miei progetti
I motori di ricerca possono aiutarti, usarli prima di chiedere non sarebbe male.
La terra è l'aereo che ci trasporta nel cielo
ma dal quale non possiamo scendere (almeno per ora) , perchè danneggiarlo?
diegobincoletto
postato il: 21.12.2022, alle ore 12:47
Rimango dell'opinione che se devi scrivere del codice, tanto vale fare solo quello.
Puoi usare gli ingressi AD del micro per leggere i segnali d'ingresso, se serve, ed eventualmente collegaci un potenziometro o una tensione esterna (tipo pin 5 del 555).
Altrimenti, se bastano le funzioni del 555 uso quello.
Scusate, passavo di qua\'...
L'unica rivoluzione possibile
è quella di migliorare se stessi.
pippodue
postato il: 21.12.2022, alle ore 12:55
Dico una cosa ovvia, i comparatori danno l'interrupt solo nell'istante in cui la soglia viene attraversata, mentre leggendo da un adc dobbiamo a ripetere il confronto in continuazione.
anche i grandi uomini, come gli uomini comuni, possono talvolta cadere in errore (Voltaire)
acilde
postato il: 21.12.2022, alle ore 19:36
in
pippodue: Dico una cosa ovvia, i comparatori danno l'interrupt solo nell'istante in cui la soglia viene attraversata, mentre leggendo da un adc dobbiamo a ripetere il confronto in continuazione.
infatti e' proprio quello che aspiro ad ottenere,
slegare il software pic da eventi esterni per esempio varia la resistenza di una fotoresistenza , o una ptc/ntc, una variazione di capacita' o altre cose che si possono fare basndosi sugli schemi col NE555.
il software fa altro mentre la parte che farebbe il 555 la fanno i comparatori
con poco altro.
In oltre non tutti i pic hanno l'adc
clikka sulle mie stelline per vedere i miei progetti
I motori di ricerca possono aiutarti, usarli prima di chiedere non sarebbe male.
La terra è l'aereo che ci trasporta nel cielo
ma dal quale non possiamo scendere (almeno per ora) , perchè danneggiarlo?
acilde
postato il: 21.12.2022, alle ore 19:48
nel data sheet del pic 16F627a-28a 48a paragrafo 10 pag.65
forniscono questo codice vorrei abbinarlo alla gestione dei timer
per esempio misurare la variazione di periodo o di duty cycle
FLAG_REG EQU 0X20
CLRF FLAG_REG ;Init flag register
CLRF PORTA ;Init PORTA
MOVF CMCON, W ;Load comparator bits
ANDLW 0xC0 ;Mask comparator bits
IORWF FLAG_REG,F ;Store bits in flag register
MOVLW 0x03 ;Init comparator mode
MOVWF CMCON ;CM<2:0> = 011
BSF STATUS,RP0 ;Select Bank1
MOVLW 0x07 ;Initialize data direction
MOVWF TRISA ;Set RA<2:0> as inputs
;RA<4:3> as outputs
;TRISA<7:5> always read ‘0’
BCF STATUS,RP0 ;Select Bank 0
CALL DELAY10 ;10?s delay
MOVF CMCON,F ;Read CMCON to end change
;condition
BCF PIR1,CMIF ;Clear pending interrupts
BSF STATUS,RP0 ;Select Bank 1
BSF PIE1,CMIE ;Enable comparator interrupts
BCF STATUS,RP0 ;Select Bank 0
BSF INTCON,PEIE ;Enable peripheral interrupts
BSF INTCON,GIE ;Global interrupt enable
clikka sulle mie stelline per vedere i miei progetti
I motori di ricerca possono aiutarti, usarli prima di chiedere non sarebbe male.
La terra è l'aereo che ci trasporta nel cielo
ma dal quale non possiamo scendere (almeno per ora) , perchè danneggiarlo?
acilde
postato il: 05.01.2023, alle ore 18:17
riprendo la questione
acilde: nel data sheet del pic 16F627a-28a 48a paragrafo 10 pag.65
forniscono questo codice vorrei abbinarlo alla gestione dei timer
per esempio misurare la variazione di periodo o di duty cycle
FLAG_REG EQU 0X20
CLRF FLAG_REG ;Init flag register
CLRF PORTA ;Init PORTA
MOVF CMCON, W ;Load comparator bits
ANDLW 0xC0 ;Mask comparator bits
IORWF FLAG_REG,F ;Store bits in flag register
MOVLW 0x03 ;Init comparator mode
MOVWF CMCON ;CM<2:0> = 011
BSF STATUS,RP0 ;Select Bank1
MOVLW 0x07 ;Initialize data direction
MOVWF TRISA ;Set RA<2:0> as inputs
;RA<4:3> as outputs
;TRISA<7:5> always read ‘0’
BCF STATUS,RP0 ;Select Bank 0
CALL DELAY10 ;10?s delay
MOVF CMCON,F ;Read CMCON to end change
;condition
BCF PIR1,CMIF ;Clear pending interrupts
BSF STATUS,RP0 ;Select Bank 1
BSF PIE1,CMIE ;Enable comparator interrupts
BCF STATUS,RP0 ;Select Bank 0
BSF INTCON,PEIE ;Enable peripheral interrupts
BSF INTCON,GIE ;Global interrupt enable
secondo qualcuno di piu' esperto c'e' qualche possibilita' di semplificarlo?
clikka sulle mie stelline per vedere i miei progetti
I motori di ricerca possono aiutarti, usarli prima di chiedere non sarebbe male.
La terra è l'aereo che ci trasporta nel cielo
ma dal quale non possiamo scendere (almeno per ora) , perchè danneggiarlo?
acilde
postato il: 15.02.2023, alle ore 17:47
ci sto provando ma non vuole funzionare, qualcun altro ci prova ?
clikka sulle mie stelline per vedere i miei progetti
I motori di ricerca possono aiutarti, usarli prima di chiedere non sarebbe male.
La terra è l'aereo che ci trasporta nel cielo
ma dal quale non possiamo scendere (almeno per ora) , perchè danneggiarlo?
acilde
postato il: 18.02.2023, alle ore 22:03
rcc.roberto vorrei sfruttare i 16f628a /648a che ho.
il link non mi fa accedere (non sono iscritto a facebook e non intendo farlo)
in oltre non mi sono mai comperato un arduino, non lo ho ancora considerato , intanto speravo di utilizzare quei quattro o cinque pic che mi avanzano nei cassetti comperati e quasi mai usati se non in in progetti gia' fatti (tranne in uno che ho realizzato da zero, il vu meter col 12f675 che poi ho portato da 8 a 12led e al quale ho fatto pure il peak hold, magari un giorno lo posto su grix )
clikka sulle mie stelline per vedere i miei progetti
I motori di ricerca possono aiutarti, usarli prima di chiedere non sarebbe male.
La terra è l'aereo che ci trasporta nel cielo
ma dal quale non possiamo scendere (almeno per ora) , perchè danneggiarlo?
pensavo che pur essendo per Arduino potesse darti una idea di come procedere.
primok
postato il: 27.02.2023, alle ore 22:35
; Codice assembler per realizzare un NE55
; Compilatore pic-as (V2.36) MPLAB-X IDE V6.00
; PIC 16F628A quarzo 20 MHz
; In questo esempio sono usati :
; 1. Interrupt su RB0 per accendere e spegnere un led sulla porta b -->pin RB2
; 2. Interrupt per comparatori C1 e C2. Uscita OUT su RB4, DISCH su RB3
; 3. TRIGGER su RA1, THRESHOLD SU RA3,control voltage su RA0
#include <xc.inc>
CONFIG FOSC = HS ; Oscillator Selection bits (HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN)
CONFIG WDTE = OFF ; Watchdog Timer Enable bit (WDT disabled)
CONFIG PWRTE = OFF ; Power-up Timer Enable bit (PWRT disabled)
CONFIG MCLRE = ON ; RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
CONFIG BOREN = ON ; Brown-out Detect Enable bit (BOD enabled)
CONFIG LVP = OFF ; Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
CONFIG CPD = OFF ; Data EE Memory Code Protection bit (Data memory code protection off)
CONFIG CP = OFF ; Flash Program Memory Code Protection bit (Code protection off)
return
;---------------------------------------------------------------------------
; Impostazione porta A e B , Interrupt Comparatori e INT0
;---------------------------------------------------------------------------
;------------------------AZZERAMENTO PORTA A E B --------------------------
CLRF PORTB
CLRF PORTA
BCF INTCON,1 ;azzera INTF
BCF PIR1,6 ;Clear pending interrupts
BCF STATUS,5 ;Select Bank 0
BSF INTCON,6 ;Enable peripheral interrupts
movlw (1<<7)|(1<<4);abilita GIE e abilita INTE
IORWF INTCON
BCF STATUS,0; azzera carry BCF INTCON,0
main:
;lampeggio led su RB1
BSF PORTB,1
call _delay_500ms ;500 msec
Come utente anonimo puoi leggere il contenuto di questo forum ma per aprire una discussione
o per partecipare ad una discussione esistente devi essere registrato ed accedere al sito