Newsgroup: it.hobby.elettronica.digitale
Titolo: Come generare un impulso 0..5V

Salve a tutti!
Ho la necessità di poter generare un impulso della durata max di
qualche frazione di secondo (da pochi millesimi di secondo fino a
massimo massimo 3-4 decimi) per poter generare un interrupt con un PIC
(16F84A).
Subito avevo pensato ad un pulsante tipo Push Switch: quando premo il
pulsante, il circuito si chiude e il segnale va a 0 (parte
l'interrupt) e quando rilascio il pulsante il circuito si apre e il
segnale torna ad 1 (il segnale è provvisto di una resistenza di
pull-up). Il problema insorge qualora un utente sprovveduto tenesse il
pulsante premuto per tutta la durata dell'interrupt: infatti così
facendo al rilascio del pulsante il pic produce un'altra interrupt con
conseguente riesecuzione della routine.... cosa che io voglio
assolutamente evitare!!! (ma qualora l'utente ripremesse il pulsante
una seconda volta, la routine deve essere rieseguita correttamente,
ovviamente solo al termine della prima esecuzione :)
Esiste quindi un pulsante tipo Push Switch (quelli che quando premuti
chiudono il circuito e appena si rilasciano lo riaprono) che invece di
mantenere il circuito chiuso per tutto l'arco di tempo di "pressione",
chiudono il circuito per una frazione di secondo generando un picco
brevissimo?
Reminiscenze delle mie nozioni di elettronica delle superiori mi
dicono che la cosa è realizzabile anche tramite 2 porte logiche (TTL
in questo caso): se io ho un ingresso A, una porta AND e una porta NOT
e collego A sia al primo ingresso della AND che all'ingresso della NOT
con l'uscita della NOT connessa all'altro ingresso della AND
(chiaramente così facendo la AND darà sempre 0 :), nel momento in cui
io permuto il segnale A da 0 a +5V il ritardo dovuto alla circuiteria
della porta NOT fa in modo che il segnale 5V arrivi correttamente al
primo ingresso della AND, ma che all'uscita della NOT (secondo
ingresso AND) rimanga ancora il segnale 5V per un brevissimo arco di
tempo (la "lag" della porta NOT appunto), abbastanza lungo per
permettere alla AND di generare in uscita un picco a 5V.
Se serve posso includere un circuitino in FIDOCAD (beh spero non serva
per 2 porte :)
Sapete indicarmi, qualora esistessero, una sigla o qualcosa che possa
identificare pulsanti come quelli descritti sopra? Oppure esistono
integrati (se non sbaglio dovrebbero esistere) che fanno il lavoro di
quel piccolo circuito con la AND e la NOT?
Ho scritto un papiro spero che qualcuno lo legga :)
Ciao ciao!
- The Plash -
(No Fancy Signature Available)


wrote:

Prova ad usare un timer ne555, lo metti in configurazione in cui alla
pressione di un pulsante generi un impulso di lunghezza fissata da te.
ogni volta che lo ripremi rigenera l'impulso. sul datasheet trovi la
configurazione gia fatta, non vorrei sbagliare ma mi sembra che si
chiami astabile.
Ciao

 brevissimo?
[FIDOCAD]
LI 30 55 40 55
MC 40 55 0 0 170
LI 50 55 70 55
SA 30 55
SA 55 55
LI 65 50 70 55
LI 70 55 65 60
TY 75 50 5 3 0 0 0 * All'ingresso del PIC
MC 55 35 1 0 080
MC 30 35 1 0 080
LI 55 45 55 55
LI 30 45 30 55
MC 30 55 0 0 860
MC 30 70 0 0 045
LI 30 30 55 30
MC 45 30 3 0 010
SA 45 30
LI 30 35 30 30
LI 55 35 55 30
-- 
IBM: Illustrious Bankruptcy Malenfactor
News 2000 [v 2.06] / StopDialer / PopDuster - 
http://www.socket2000.com
Akapulce portal: 
http://www.akapulce.net

 chiami astabile.
questa configurazione si chiama monostabile. l'astabile è in pratica un 
"oscillatore" a onda quadra.
ciao,
Marco / iw2nzm

 chiami astabile.
a-stabile (non stabile) è in pratica un oscillatore.
mono-stabile (stabile su una sola condizione) serve generalmente per 
'allargare' brevi impulsi
bi-stabile (stabile su tutte e due le condizioni) è un classico flip 
- flop
ciao.
-- 
Avoid the Fortran arithmetic IF (or better yet, just avoid Fortran).
News 2000 [v 2.06] - 
http://www.akapulce.net/socket2000

 (16F84A).
[megacut]
Scusa ma perchč complicarsi la vita e gestire un pulsante tramite interrupt
?
Forse hai dei cicli tali da rendere troppo lenta la soluzione del polling ?
In ogni caso, interrupt o no, č sufficiente gestire un flag nel software,
una volta eseguito il ciclo desiderato, attendi la riapertura del pulsante
per resettarne lo stato e bloccare quindi la riesecuzione non desiderata.
Spero di avere capito cosa intendevi.
Ciao, Robby

Ciao
Ho risolto il problema, mettendo un controllo interno alla routine per
vedere se, al momento dell'esecuzione, il valore della lina di
Interrupt sia alta o bassa, escludendo cosi la possibilità di eseguire
l'interrupt qualora la linea fosse alta.
Ho dovuto mettere un ciclo di ritardo per poter fare la rilevazione
sulla porta, altrimenti mi dava dei valori abbastanza casuali :)
Cmq carino il componente che mi hai indicato.... devo studiarne
qualche utilizzo magari, e tenermi a mente che esiste!!! :)))
Ciao ciao grazie ancora!
