home | area personale         schemi | tutorial | robotica | pic micro | recensioni         forum | chat irc         faq | contatti         store | Ordina PCB
username
password
cerca

 
FORUM: Pic Micro
Tutto quanto riguarda questi microprocessori... progetti, suggerimenti, aiuti, discussioni...ecc


problema pic 16f628a
     
Autore Messaggio opzioni
cele93





postato il:
21.04.2012, alle ore 15:55
problema pic 16f628a 

salve ragazzi sto progettando un contagiri con il pic 16f628a ed un sensore ottico a forcella, per ora sto progettando la parte software con il pic e continuo a riscontrare un problema a livello di input. questo è il programma:

program display_test_2

DIM LAP AS BYTE

main:
 STATUS.5=1                            'passaggio al banco 1
 TRISA=%00000000                       'trisA uscita
 TRISB=%11111111                       'trisB ingresso
 STATUS.5=0                            'ritorno al banco 0
 CMCON=7                               'configurazione cmcon per il display
 LCD_CONFIG(PORTA,6,7,0,1,PORTA,2,4,3) 'configurazione piedini per il display
 LCD_CMD(LCD_CURSOR_OFF)               'spengo il cursore del display
 
 LAP=48                                'nella tabella CHR il 48 Ã¨ lo 0
 LCD_CHR(1,1,LAP)                      'visualizza il carattere 0 su display
 
 CONTROL:                              'inizio procedura di controllo
  IF (PORTB.0=1)                       'se RB0 Ã¨ 1:
   THEN GOTO COUNTER                   'allora vai alla procedura di conteggio
   ELSE GOTO CONTROL                   'altrimenti torna al controllo
  END IF                               'fine ciclo if
 
 COUNTER:                              'inizio procedura di conteggio
  LAP=LAP+1                            'la variabile LAP si incrementa di 1
  LCD_CHR(1,1,LAP)                     'il display viene aggiornato
  WHILE (PORTB.0=1)                    'finchè RB0 resta 1:
   LAP=LAP                             'la avriabile LAP resta uguale
  WEND                                 'quando RB0 torna a 0 fine ciclo while
  GOTO CONTROL                         'torna a controllo
END.


in poche parole ogni volta che il piedino 0 del portB va alto (5V) la variabile lap viene incrementata di 1 e il valore è visualizzato sul display.
il mio problema (che mi sta facendo letteralmente impazzire) è che la variabile LAP comincia a incrementarsi da sola senza che RB0 sia collegato a 5v.

PS: il passaggio dal banco 0 all'1 viene eseguito per motivi di sicurezza (anche se in mikrobasic non sarebbe necessario)
Jasson





postato il:
21.04.2012, alle ore 16:08
Ovviamente dovrai metere una resistenza di pull-down sul pin rb0, altrimenti il pic potrebbe rilevare un 1 logico, quando questo è scollegato.

poi prova a scrivere


CONTROL:
IF (PORTB.0=1)
THEN
GOTO COUNTER
ELSE
GOTO CONTROL
END IF


anche se potresti semplicemente scrivere


CONTROL:
while (portb.0=0)
wend
cele93





postato il:
21.04.2012, alle ore 16:24
per resistenze di pull-down cosa intendi? perchè io so che il bit 7 del registro option_reg (RBPU) riguarda le resistenze di pull-up che se messo a zero le attiva...
Jasson





postato il:
21.04.2012, alle ore 16:28
una resitenza esterna da almeno 1k tra l'ingresso rb0 e la massa.
cele93





postato il:
21.04.2012, alle ore 18:02
Jasson:
una resitenza esterna da almeno 1k tra l'ingresso rb0 e la massa.


TI AMO
gigino_90





postato il:
11.03.2014, alle ore 22:21
Salve ragazzi è possibile avere il file HEX e magari qualche foto??
segui questo thread con grixFC, per questa funzione devi aver installato il software grixFC

torna su
     

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




 







 
 
indietro | homepage | torna su copyright © 2004/2024 GRIX.IT - La community dell'elettronica Amatoriale