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


PIC 16F819 - non riesco ad usare il PORTA.5 come ingresso digitale
     
Autore Messaggio opzioni
piero55




una ogni 10 livelli


postato il:
21.01.2023, alle ore 14:35
PIC 16F819 - non riesco ad usare il PORTA.5 come ingresso digitale 

Sto lavorando ad un piccolo progetto con il 16F819. Vorrei usare il PORTA.5 come ingresso digitale per un pulsante ma non riesco. Ho verificato che il registro PORTA relativo al bit 5, non varia alla pressione del pulsante che mette a massa l'ingresso. Ovviamente, essendo il pin il MCLR, dalla configuration word ho impostato MCLR_OFF quindi il pin dovrebbe essere un ingresso digitale.... ma non va.... Ho provato anche a scrivere un piccolissimo programma di 10 righe che sente il pulsante sul PORTA.5 e accende/spegne un led ma nulla da fare. Qualche suggerimento?
piero55




una ogni 10 livelli


postato il:
21.01.2023, alle ore 14:36
scusate, nel titolo scrivo analogico ma in realtà e DIGITALE



corretto
roberto
pippodue




una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli una ogni 10 livelli


postato il:
21.01.2023, alle ore 17:23
piero55:
ho impostato MCLR_OFF

Con gli Attiny sarebbe un disastro. Sei sicuro che lo puoi programmare?



anche i grandi uomini, come gli uomini comuni, possono talvolta cadere in errore (Voltaire)
primok




una ogni 100 livelli
una ogni 10 livelli


postato il:
21.01.2023, alle ore 19:10
piero55:
Sto lavorando ad un piccolo progetto con il 16F819. Vorrei usare il PORTA.5 come ingresso digitale per un pulsante ma non riesco. Ho verificato che il registro PORTA relativo al bit 5, non varia alla pressione del pulsante che mette a massa l'ingresso. Ovviamente, essendo il pin il MCLR, dalla configuration word ho impostato MCLR_OFF quindi il pin dovrebbe essere un ingresso digitale.... ma non va.... Ho provato anche a scrivere un piccolissimo programma di 10 righe che sente il pulsante sul PORTA.5 e accende/spegne un led ma nulla da fare. Qualche suggerimento?


 /* 
 * File:   main.c
 * Author: Utente
 *
 * Created on 21 gennaio 2023, 18.08
 */
#define _XTAL_FREQ  4000000UL
#include <stdio.h>
#include <stdlib.h>
// 'C' source line config statements

// CONFIG
#pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON     // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF      // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is digital I/O, MCLR internally tied to VDD)
#pragma config BOREN = ON     // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF        // Low-Voltage Programming Enable bit (RB3/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF        // Data EE Memory Code Protection bit (Code protection off)
#pragma config WRT = OFF        // Flash Program Memory Write Enable bits (Write protection off)
#pragma config CCPMX = RB2      // CCP1 Pin Selection bit (CCP1 function on RB2)
#pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)

// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.



#define IN  PORTAbits.RA5

#include <xc.h>
/*
 * 
 */
void main() {
    
    ADCON1=6;
    TRISAbits.TRISA5=1;
    TRISB=0x00;
    PORTB=0;
    
    while(1){
        
        if (PORTAbits.RA5==0){
          __delay_ms(5);
          PORTBbits.RB0=1;
          
        }else{
         PORTBbits.RB0=0; 
        }
  
    }



Più piccola è la mente più grande è la presunzione.
primok




una ogni 100 livelli
una ogni 10 livelli


postato il:
21.01.2023, alle ore 19:15
Compilatore XC8 V 2.36.
Ambiente di sviluppo MPLABX 6.0. Pull up su MCLR.

Normamente se non si preme il pulsante verso massa l'uscita su RB0 è bassa. Appena pigi il pulsante l'uscita va alta per poi ritornare bassa al rilascio.
Quarzo usato 4 MHz.

Primok_V



Più piccola è la mente più grande è la presunzione.
piero55




una ogni 10 livelli


postato il:
22.01.2023, alle ore 09:24
pippodue:
piero55:
ho impostato MCLR_OFF

Con gli Attiny sarebbe un disastro. Sei sicuro che lo puoi programmare?


si, si può fare infatti il MCLR è interno al pic ed è ininfluente dallo stato di PORTA.5
piero55




una ogni 10 livelli


postato il:
22.01.2023, alle ore 09:30
primok:
Compilatore XC8 V 2.36.
Ambiente di sviluppo MPLABX 6.0. Pull up su MCLR.

Normamente se non si preme il pulsante verso massa l'uscita su RB0 è bassa. Appena pigi il pulsante l'uscita va alta per poi ritornare bassa al rilascio.
Quarzo usato 4 MHz.

Primok_V


Grazie,non conosco il C ma riesco a capirlo e interpretarlo.
Penso che il problema sia ADCON1=6 che imposta tutta la PORTA come ingressi digitali. Nel mio progetto, non è possibile perchè utilizzo RA0..RA4 come ingressi analogici e +Vref esterna. Dovrò studiarci su ma temo che sia così anche se nel datasheet non si parla di questa condizione, dice solo che PORTA.5 può essere MCLR esterno o input digitale non mette altre condizioni.
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