Buongiorno a tutti,
il mio quesito che mi lascia perplesso e:
con il 18m2 usando interrupt es.: pin c.1 si resetta ogni volta che metto c.1 a massa sia con transistor che con pulsante meccanico.
il collegamento del pin e' ancorato al positivo con resistenza da 10kohm e un condensatore da 0.1uF a massa.
Lo strano e' che se replico la stessa configurazione del pin con lo stesso processore montato sul mio dispositivo su scheda breadboard funziona correttamente.
L'alimentazione e' la stesa per tutte due le prove.
Naturalmente ho creato un programma che e' caricato nel 18m2 in prova.
Dalla prova ho dedotto che non e' un problema hw, ma daltronde perche lo stesso sw sulla breadboard va e nella apparecchiatura in costruzione no, usando le stesse condizioni?
Perche lo stesso sw montato sullo stesso processore non va?
Spero che la spiegazione sia accurata Vi invio il programma di test.
Ringrazio chi eventualmente rispondera'.
[codice]
s_campanello:
;Symbol f_campanello_pinc.1=bit1 ;0 premuto 1=normale
;Symbol T_campanello_pinc.1=b12 ;tempo per ripristino suoni
if f_campanello_pinc.1=1 then ;chiamata da campanello (bit1)
if t_campanello_pinc.1=0 then ;toccata placca la prima volta (b12)
n_suono=4 ;tipo suono campanello
gosub s_Bip ;genera suono impostato da n_suono
f_campanello_pinc.1=0
T_campanello_pinc.1= 10
finisci se
finisci se
ritorno
-------------------------------------------------- --------
s_irq:
Impostazione o %00100000,%00100010,c
ritorno
-------------------------------------------------- -------
interrompere:
;Simbolo d_pin_int=pinsc
;Simbolo d_irq=b17 ;valore irq
;symbol leggi_bit=b18 ;valore singolo bit
;Symbol N_placca_c.1=b16 ;numero volte del comando
d_irq=pinsc ;legge chi chiama
do loop while pinc.1 = 0 or pinc.5=1 ;loop here until il pulsante e premuto
leggi_bit=d_irq & %00100010 ;pin c.5
se leggi_bit=%00100000 allora ;----------------------c.5 (reimposta)
inc N_placca_c.1
finisci se
leggi_bit=d_irq & %00000000 ;pin c.1
if leggi_bit=%00000000 then ;-----------------------c.1 (campanello)
f_Reset_0v_c.5=0
if t_campanello_pinc.1 =0 then ;impedisce riattivazione
f_campanello_pinc.1=1
finisci se
finisci se
Ritorno
[/codice]
il mio quesito che mi lascia perplesso e:
con il 18m2 usando interrupt es.: pin c.1 si resetta ogni volta che metto c.1 a massa sia con transistor che con pulsante meccanico.
il collegamento del pin e' ancorato al positivo con resistenza da 10kohm e un condensatore da 0.1uF a massa.
Lo strano e' che se replico la stessa configurazione del pin con lo stesso processore montato sul mio dispositivo su scheda breadboard funziona correttamente.
L'alimentazione e' la stesa per tutte due le prove.
Naturalmente ho creato un programma che e' caricato nel 18m2 in prova.
Dalla prova ho dedotto che non e' un problema hw, ma daltronde perche lo stesso sw sulla breadboard va e nella apparecchiatura in costruzione no, usando le stesse condizioni?
Perche lo stesso sw montato sullo stesso processore non va?
Spero che la spiegazione sia accurata Vi invio il programma di test.
Ringrazio chi eventualmente rispondera'.
[codice]
s_campanello:
;Symbol f_campanello_pinc.1=bit1 ;0 premuto 1=normale
;Symbol T_campanello_pinc.1=b12 ;tempo per ripristino suoni
if f_campanello_pinc.1=1 then ;chiamata da campanello (bit1)
if t_campanello_pinc.1=0 then ;toccata placca la prima volta (b12)
n_suono=4 ;tipo suono campanello
gosub s_Bip ;genera suono impostato da n_suono
f_campanello_pinc.1=0
T_campanello_pinc.1= 10
finisci se
finisci se
ritorno
-------------------------------------------------- --------
s_irq:
Impostazione o %00100000,%00100010,c
ritorno
-------------------------------------------------- -------
interrompere:
;Simbolo d_pin_int=pinsc
;Simbolo d_irq=b17 ;valore irq
;symbol leggi_bit=b18 ;valore singolo bit
;Symbol N_placca_c.1=b16 ;numero volte del comando
d_irq=pinsc ;legge chi chiama
do loop while pinc.1 = 0 or pinc.5=1 ;loop here until il pulsante e premuto
leggi_bit=d_irq & %00100010 ;pin c.5
se leggi_bit=%00100000 allora ;----------------------c.5 (reimposta)
inc N_placca_c.1
finisci se
leggi_bit=d_irq & %00000000 ;pin c.1
if leggi_bit=%00000000 then ;-----------------------c.1 (campanello)
f_Reset_0v_c.5=0
if t_campanello_pinc.1 =0 then ;impedisce riattivazione
f_campanello_pinc.1=1
finisci se
finisci se
Ritorno
[/codice]