12F683, GPIO5 digitale fisso a 0

  • Lello Guidi
  • Autore della discussione
  • Platino Utente
  • Platino Utente
Di più
5 Anni 4 Mesi fa #1 da Lello Guidi
12F683, GPIO5 digitale fisso a 0 è stato creato da Lello Guidi
Il listato, non funzionante, è il seguente:
Code:
/*********************** ******************************* * Fotocellula v3.0 IR * * data: 13 dicembre 2019 * descrizione: Lettura della uscita del sensore IS471F e attivazione * di un rele'¨per 10 secondi se IR rileva oggetto * librerie: Microchip * compilatore: MPLABX IDE v4.01 e XC8 v1.45 * picmicro: PIC12F683 * configurazione: * IRsensor = GP4 * Rele = GP0 * LED = GP2 * /********************************************************************/ // CONFIG #pragma config FOSC = INTOSCIO #pragma config WDTE = OFF #pragma config PWRTE = ON #pragma config MCLRE = OFF #pragma config CP = OFF #pragma config CPD = OFF #pragma config BOREN = OFF #pragma config IESO = OFF #pragma config FCMEN = OFF #include <xc.h> #define _XTAL_FREQ 8000000 #define IRsensor GPIObits.GP5 // pin2 #define Rele GPIObits.GP0 // pin7 #define Led GPIObits.GP2 // pin5 // funzioni void blink(); int main(void) { ADCON0 = 0b00000000; // convertitore A/D OFF CMCON0 = 0b00000111; // comparatore OFF VRCON = 0b00000000; // voltaggio reference OFF GPIO = 0b00000000; // tutte le uscite a ZERO TRISIO = 0b00100000; // GP5 IN, gli altri OUT ANSEL =0b00000000; // porte digitali while(1) { if (IRsensor == 0){ // IR attivo basso Led = 0; // led spento Rele = 0; // attivo a 0 se relè a stato solido, altrimenti a 1 for(int i = 0; i <= 10; i++) { __delay_ms(1000); } } else { Rele = 1; // relè caduto blink(); } } // end while } // end main void blink() { Led = Led^1; // pin5 __delay_ms(500); }

Lo schema è il seguente:

Come sensore IR uso un IS471F, che provato singolarmente quando metto davanti un ostacolo a 2cm, passa da livello alto(5volt) a livello basso(0).
Mi sono comunque accorto che l'ingresso GPIO5 è sempre fisso alto, quindi se inserisco il sensore IR non succede niente.
Ho il dubio che le configurazioni dei registri non siano impostate correttamente.
Le ho scritte leggendo il datasheet del pic 12F683.
Anche questa volta ho bisogno di un aiuto.
Saluti

Lello
Allegati:

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

  • Lello Guidi
  • Autore della discussione
  • Platino Utente
  • Platino Utente
Di più
5 Anni 4 Mesi fa - 5 Anni 4 Mesi fa #2 da Lello Guidi
Risposta da Lello Guidi al topic 12F683, GPIO5 digitale fisso a 0
Dal listato sorgente ho eliminati le impostazioni del registro "GPIO" e sembra funzionare.

Saluti

Lello
Ultima Modifica 5 Anni 4 Mesi fa da Lello Guidi. Motivo: Errore nello scrivere il registro

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

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.

Forum - Ultimi messaggi