Pagina 1 di 3

Tensione ingresso PIC

MessaggioInviato: 3 nov 2010, 14:56
da genzostyle
Ciao a tutti,
ho un problemino per quanto riguarda una resistenza di pull-up in un ingresso.

L'ingresso riceve una tensione, l'uscita deve semplicemente accendere un led.
Per quanto riguarda l'ingresso, è presente un interruttore e una resistenza di pull-up, però questo sistema non funziona. Provando manualmente a cambiare l'ingresso posizionando il filo da piede a + o - funziona.

Volevo quindi far due domande:
1. qual è il parametro del datasheet (in questo caso un 16f84a) che devo leggere per capire i valori di tensioni di ingresso?
2. su cosa mi baso per la scelta di una resistenza di pull-up?

Re: Tensione ingresso PIC

MessaggioInviato: 3 nov 2010, 16:15
da DonJ
Sembra che il PIC non abbia riferimento di massa.
Che segnale arriva al PIC? Come hai collegato il tutto?

Re: Tensione ingresso PIC

MessaggioInviato: 3 nov 2010, 18:07
da aduri
Guarda in questo link:

http://stor.altervista.org/PIC/lmpic05/Image1.gif

Chiaramente la logica la devi gestire tu a programma, devi decidere se farla reagire a seguito di un livello alto o livello basso sul pin che hai scelto.


ciao
Antonio

Re: Tensione ingresso PIC

MessaggioInviato: 3 nov 2010, 18:15
da genzostyle
lo schema è identico a http://stor.altervista.org/PIC/lmpic05/Image1.gif,
varia solamente la resistenza, 1k.

il sw dovrebbe funzionare perché se manualmente vario il pin scelto portandolo a +5 o a massa, vedo che il led di accende e si spegne.

grazie
Alex

Re: Tensione ingresso PIC

MessaggioInviato: 3 nov 2010, 18:27
da Paolino
Verifica se funziona il pulsante/interruttore. E verifica di averlo connesso a dovere.
Ciao.

Paolo.

Re: Tensione ingresso PIC

MessaggioInviato: 3 nov 2010, 18:29
da TardoFreak
Attenzione che potrebbe essere il software a non funzionare. Se hai settato la PORTA come uscita e forzi il pin a Vcc o massa il PIC ti legge il pin come se fosse un ingresso. Il buffer di uscita non e' contento perche' ... suda sette camice.
Verifica bene bene il software, capisciamme'. ;-)

Re: Tensione ingresso PIC

MessaggioInviato: 4 nov 2010, 12:48
da genzostyle
L'interruttore funziona, testato il funzionamento con un led.

questo è il codice:
Codice: Seleziona tutto
...
#define LED1   RA0
#define BTN1   RA2    // pulsante 1
void settings(void)
{
TRISA = 0x00001100;
LED1 = 0;
//RBPU=0;
}

void main(void)
{
settings();
while(1){
   // controllo pulsante 1
    if (!BTN1) // se pulsante1 premuto
   {
   DelayMs(100); // ritardo per antirimbalzo
   if (!BTN1)
      {
      LED1=1; // accendo led 1
      }
   }
   else
   {
   LED1=0; // se pulsante 1 non premuto, spengo led 1
   }
}


cosa ottengo in pratica:
Quando alimento il circuito, il LED1 si accende.
Se premo il pulsante, LED1 rimane acceso.
Ho provato con una R di 160, 1.6K e altre, ma l'esito non varia.

Ancora una volta se porto il pin BTN1 a 5v e poi a massa, LED1 si spegne e poi si riaccende.

Alex

Re: Tensione ingresso PIC

MessaggioInviato: 4 nov 2010, 13:27
da crestus
prova a cambiare la routine inserendo un cambio di stato del led....cioè:
Codice: Seleziona tutto
if (!BTN1) // se pulsante1 premuto
   {
   DelayMs(100); // ritardo per antirimbalzo
   if (!BTN1)
      {
      LED1= ~ LED1; // Cambio di stato  led 1
      }
   }
   // else --> non è più necessario


Inoltre dovresti inizializzare anche il registro LAT o PORT
Codice: Seleziona tutto
PORTA=0x00;


e hai disattivato le porte analogiche?

altra cosa... prova a farci vedere anche lo schema elettrico... magari hai commeso qualche errore di distrazione che non vedi... ;-)

Re: Tensione ingresso PIC

MessaggioInviato: 4 nov 2010, 18:34
da genzostyle
utilizzando la modifica alla routine
Codice: Seleziona tutto
if (!BTN1) // se pulsante1 premuto
   {
   DelayMs(100); // ritardo per antirimbalzo
   if (!BTN1)
      {
      LED1= ~ LED1; // Cambio di stato  led 1
      }
   }
   // else --> non è più necessario

il LED1 si accende e si spegne continuamente.

anche aggiungendo PORTA=0x00; nel settaggio

questo è l'immagine della breadboard http://host.presenze.com/showpic-2180/led.jpg

Alex

Re: Tensione ingresso PIC

MessaggioInviato: 4 nov 2010, 19:34
da crestus
Oddio!! Hai mille fili per effettuare i collegamenti! :D puoi ridurre.. ti semplifica la vita!..
A parte questo, se ha quel comportamento vuol dire che entra in continuo nel'if.. e vuol dire che il caso else del tuo programma originale non lo vede mai! il che sta a significare che rileva sempre 0 il segnale logico del pulsante... anche quando lo premi...molto molto strano...

prova comunque a scrivere
Codice: Seleziona tutto
if( BTN1 == 0 ) {}

O a cambiare porta, ad esempio prova con la RB3 che magari l'hai bruciata o è difettosa....anche se mi sembra molto strano...

Oppure ancora inverti la polarità del pulsante e quindi anche la condizione dell'if

Altra cosa: hai dimenticato i condensatori del quarzo! ;-)

molto strano il tuo problema... :?