Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

problema IF mplab x pic16

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] problema IF mplab x pic16

Messaggioda Foto Utentelorenzo01 » 2 feb 2020, 15:03

buongiorno, ho un problema riguardo ad un codice di prova che ho scritto per un pic16f1773 su mplab x con compilatore XC8, sostanzialmente il programma non funziona, anche se compila senza dare errori e il codice viene correttamente scaricato sul mcu dal pickit 3.
precedentemente ho provato a far blinkare un led e tutto funzionava quindi escluderei che sia un problema hardware o dei registri di configurazione posto qui il codice completo:

Codice: Seleziona tutto
#pragma config FOSC = HS        // Oscillator Selection Bits (HS Oscillator, High-speed crystal/resonator connected between OSC1 and OSC2 pins)
#pragma config WDTE = OFF        // Watchdog Timer Enable (WDT enabled)
#pragma config PWRTE = OFF      // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = ON       // MCLR Pin Function Select (MCLR/VPP pin function is MCLR)
#pragma config CP = OFF         // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config BOREN = ON       // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = ON    // Clock Out Enable (CLKOUT function is enabled on the CLKOUT pin)
#pragma config IESO = ON        // Internal/External Switchover Mode (Internal/External Switchover Mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)

#pragma config WRT = OFF        // Flash Memory Self-Write Protection (Write protection off)
#pragma config PPS1WAY = ON     // Peripheral Pin Select one-way control (The PPSLOCK bit cannot be cleared once it is set by software)
#pragma config ZCD = OFF        // Zero-cross detect disable (Zero-cross detect circuit is disabled at POR)
#pragma config PLLEN = OFF       // Phase Lock Loop enable (4x PLL is always enabled)
#pragma config STVREN = ON      // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO        // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LPBOR = OFF      // Low-Power Brown Out Reset (Low-Power BOR is disabled)
#pragma config LVP = ON         // Low-Voltage Programming Enable (Low-voltage programming enabled)

#include <xc.h>
#define _XTAL_FREQ 20000000
#define led PORTCbits.RC4               
#define encoder PORTAbits.RA1     
void main() {                     
TRISC = 0b00000000;
TRISA = 0b11111111;
led = 0;                         
while(1) {   
  if(encoder)
  {                 
     led=1;                     
  }                 
}
}



il problema sta nella variabile dell if che corrisponde ad un ingresso digitale RA1 collegato ad un encoder ottico non da errori ma non funziona
mentre inserendo 2 dentro le parentesi dell if il led si accende e viceversa inserendo uno 0, quindi mi viene da dire che sbaglio qualcosa nella variabile "encoder"
Avatar utente
Foto Utentelorenzo01
5 2
 
Messaggi: 9
Iscritto il: 16 ott 2019, 16:37

1
voti

[2] Re: problema IF mplab x pic16

Messaggioda Foto UtentePaolino » 2 feb 2020, 15:11

Ciao Foto Utentelorenzo01.

Leggendo il datasheet, è indicato che la porta PORTA è inizialmente imposata come ANALOG, quindi devi dire al micro che la vuoi usare come DIGITAL.
Per far ciò, prima del while(1) devi porre a zero il registro ANSELA:

Codice: Seleziona tutto
void main() {                     

ANSLEA = 0x00;
TRISC = 0b00000000;
TRISA = 0b11111111;

led = 0;                         
while(1) {   
  if(encoder)
  {                 
     led=1;                     
  }                 
}
}


Prova e poi facci sapere.

CIao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,4k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4208
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

1
voti

[3] Re: problema IF mplab x pic16

Messaggioda Foto Utentelorenzo01 » 6 feb 2020, 21:16

ok configurando correttamente tutti i registri del porto funziona correttamente grazie per la dritta
Avatar utente
Foto Utentelorenzo01
5 2
 
Messaggi: 9
Iscritto il: 16 ott 2019, 16:37


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti