pic non mi vede pulsante

12 Anni 9 Mesi fa #1 da Guido
pic non mi vede pulsante è stato creato da Guido
Ciao, su una bredboard ho montato un pic 18f4550, ho fatto il debug per il lampeggio di un led e questo funziona correttamente, ora sono passato all' accensione del led premendo un pulsante e non succede nulla. Come compilatore uso MPLABX e come programmer il pickit2. Un filo del pulsante lo collegato a RB5 (pin 38) l'altro al negativo, avete dei suggerimenti?
Grazie
Ecco il codice:

#include <p18cxxx.h>

#include <portb.h>



#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF



//OSC = HS Impostato per lavorare ad alta frequenza
//WDT = OFF Disabilitato il Watchdog Timer
//LVT = OFF Disabilitato programmazione LVT
//PBADEN = OFF Disabilitato gli ingrassi analogici

void main (void){





// Imposto PORTA tutti ingrassi


LATA = 0x00;
TRISA = 0xFF;


// Imposto PORTB tutti ingressi

LATB = 0x00;
TRISB = 0xFF;


//Imposto PORTC tutti ingressi

LATC = 0x00;
TRISC = 0xFF;

// Imposto PORTD tutte uscite

LATD = 0x00;
TRISD = 0b11111110;

// Imposto PORTE tutti ingressi


LATE = 0x00;
TRISE = 0xFF;

EnablePullups (); //Abilito resistori di pullups

while (1) { //ciclo infinito

if (PORTBbits.RB5 == 0) { // Controllo la pressione di RB4
LATDbits.LATD0= 1 ;

}
else {
LATDbits.LATD0 = 0; //Spengo LED
}

}
}

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido
  • Platinum Member
  • Platinum Member
Di più
12 Anni 9 Mesi fa - 12 Anni 9 Mesi fa #2 da gcupini
Risposta da gcupini al topic Re: pic non mi vede pulsante
ciao,
il programma mi sembra OK,
1) visto che non ci sono ritardi tra l'accensione e lo spegnimento del led, il led sta acceso solo se mantieni spinto il pulsante. appena rilasci si spegne !
2) in alternativa (se non si accevde tenedo spinto il pulsante) sei sicuro che il pulsante sia collegato correttamente a massa ?
3) il led da solo funziona su RD0 ?

Saluti
Ultima Modifica 12 Anni 9 Mesi fa da gcupini.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • gcupini
  • Visitatori
  • Visitatori
12 Anni 9 Mesi fa #3 da Guido
Risposta da Guido al topic Re: pic non mi vede pulsante
Ciao, grazie per avermi risposto, ho combiato codice e scritto cosi funziona, hai qualche idea?

#include <p18cxxx.h>

#include <portb.h>

#pragma config FOSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF


//OSC = HS Impostato per lavorare ad alta frequenza
//WDT = OFF Disabilitato il Watchdog Timer
//LVT = OFF Disabilitato programmazione LVT
//PBADEN = OFF Disabilitato gli ingrassi analogici
void main (void) {

unsigned int i; //variabile usata per creare un conteggio fittizio


//Imposto PORTA tutti ingrrssi

LATA = 0x00;
TRISA = 0xFF;

//Imposto PORTB tutti ingrrssi

LATB = 0x00;
TRISB = 0xFF;

//Imposto PORTC tutti ingressi

LATC = 0x00;
TRISC = 0xFF;

//Imposto PORTD tutte uscite

LATD = 0x00;
TRISD = 0x00;

//Imposto PORTE tutti ingrrssi

LATE = 0x00;
TRISE = 0xFF;


EnablePullups (); //Abilito resistori di pullups

while (1) { //ciclo infinito
for (i=0; i<10000; i++) { // Pausa filtraggio spike

}
if (PORTBbits.RB4 == 0) { // Controllo la pressione di RB4
LATDbits.LATD1 = 0x01;
}
else {
LATDbits.LATD1 = 0x00;
}
LATDbits.LATD0 = 0x01; //Accendo il led0 per il lampeggio
for (i=0; i<64000; i++) {
}
LATDbits.LATD0 = 0x00; //Spengo il led0 per il lampeggio
}
}

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Guido
  • Platinum Member
  • Platinum Member
Di più
12 Anni 9 Mesi fa #4 da Akuryu
Risposta da Akuryu al topic Re: pic non mi vede pulsante
A me sembra solo che tu abbia cambiato la porta, nel senso che nel codice di cui il primo posto la porta utilizzata era la RB5 anche se nel commento scrivevi RB$, mentre nel secondo codice usi proprio RB4

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Akuryu
  • Avatar di Akuryu
  • Premium Member
  • Premium Member
Di più
12 Anni 9 Mesi fa #5 da gcupini
Risposta da gcupini al topic Re: pic non mi vede pulsante
ciao,
se bastano quei piccoli cicli di delay per farla funzionare, allora può dipendere dal fatto che
utilizzi if (PORTBbits.RB4 == 0) . Prova a sostituirlo con iif (PORTBbits.LATB4 == 0) e ad eliminare i cili per vedere se funziona come dovrebbe.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • gcupini
  • Visitatori
  • Visitatori
Moderatori: Mauro LaurentiPinnaStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login