Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problema XOR PIC16F1713

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[1] Problema XOR PIC16F1713

Messaggioda Foto UtenteDavide90 » 2 mar 2015, 20:37

Salve ragazzi, ho un problema con delle righe di codice:

con questo codice :
Codice: Seleziona tutto
PORTA = PORTA | pin_attivo;

dove pin_attivo=0b00000001;
dichiarato come INT oppure dichiarandolo come CHAR

accendo la porta RA1,

con questo altro codice :

Codice: Seleziona tutto
PORTA^=pin_attivo;


teoricamente dovrei spegnere la stessa porta.

In realtà, collegano un led, vedo che dopo la seconda istruzione il Led rimane acceso.
Sapete mica suggerirmi il motivo?

Simulando funziona bene, in real time ( debug) non si spegne mai il led
Avatar utente
Foto UtenteDavide90
29 6
Frequentatore
Frequentatore
 
Messaggi: 130
Iscritto il: 5 lug 2012, 11:34

0
voti

[2] Re: Problema XOR PIC16F1713

Messaggioda Foto UtenteWALTERmwp » 3 mar 2015, 1:24

Ciao Foto UtenteDavide90, forse è meglio se riporti la sezione completa del codice che prevede l'esecuzione delle due differenti assegnazioni.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[3] Re: Problema XOR PIC16F1713

Messaggioda Foto UtenteDavide90 » 3 mar 2015, 8:03

CiaoFoto UtenteWALTERmwp, il problema era nella configurazione del registro ANSELA, sistemata la configurazione , le operazioni vengono eseguite correttamente . Grazie per la disponibiltà..
Avatar utente
Foto UtenteDavide90
29 6
Frequentatore
Frequentatore
 
Messaggi: 130
Iscritto il: 5 lug 2012, 11:34

0
voti

[4] Re: Problema XOR PIC16F1713

Messaggioda Foto UtenteWALTERmwp » 3 mar 2015, 12:33

Davide90 ha scritto:il problema era nella configurazione del registro ANSELA
meglio così però, se sei d'accordo, potresti riportare ugualmente la porzione di codice e la impostazione del registro, prima e dopo, in modo tale che il thread abbia una valenza "didattica" per chi lo ha letto, me compreso, ovviamente; diversamente ne rimane ben poco.
Grazie.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[5] Re: Problema XOR PIC16F1713

Messaggioda Foto UtenteDavide90 » 4 mar 2015, 8:59

Si hai ragione, riporto la parte di codice in cui effettuo prima la OR per accendere il led, e poi la XOR per spegnerlo.

Codice: Seleziona tutto
TMR1IF=0;
TMR1H = 255;
TMR1L = 176;
T1CON=0x01;
PORTA = PORTA | pin_attivo;//accendo il led sulla PORTA lasciando invariati gli altri BIT
while(!TMR1IF);

    PORTA^=pin_attivo;// spengo solo il led acceso precedentemente, lasciando invariati gli altri BIT della PORTA

T1CON=0x00;

ricordo che pin_attivo è una maschera di bit:

Codice: Seleziona tutto
pin_attivo=0b00000001;


Dato che il PIC che sto usando (PIC16F1713) , contiene , tra le altre periferiche, anche dei convertitori A/D , bisogna impostare correttamente i registri ANSEL di PORTA,PORTB,PORTC.
Nel mio caso, l'impostazione corretta, per la PORTA è la seguente:

Codice: Seleziona tutto
ANSELA=0x00; // configuro le porte come DIGITAL I/O

Nel primo post, semplicemente non configuravo mai tale registro.
Avatar utente
Foto UtenteDavide90
29 6
Frequentatore
Frequentatore
 
Messaggi: 130
Iscritto il: 5 lug 2012, 11:34

0
voti

[6] Re: Problema XOR PIC16F1713

Messaggioda Foto UtenteWALTERmwp » 4 mar 2015, 11:47

Grazie Foto UtenteDavide90.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
30,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 8982
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino


Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti