Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Dubbi sul timer2.

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] Dubbi sul timer2.

Messaggioda Foto Utentempeino » 14 giu 2012, 19:59

Innanzitutto il codice:
Codice: Seleziona tutto
#define  XTAL_FREQ 4MHZ
#include <PIC.h>
#include "delay.c"

void main(void)
{
TRISA=0;
TRISB=0;
TRISC=0;

OPTION_REG=0b10000000;
INTCON=0b11000000;
T2CON=0b00000111;
TMR2IE=1;
TMR2=196;
while(1){
   }
}

void interrupt ISR (void)
{
    if (TMR2IF=1){
       RB1=RB1^1;
        }
TMR2 =196;
TMR2IF=0;
      }


con questo codice genero un onda quadra con un periodo di 2ms. Fin qui tutto ok.

Poi quando vado a porre a 1 il bit 5 del registro INTCON quindi abilito T0IE l'interrupt del timer0, l'onda viene ridotta nel periodo . perché???
Ma non sono due cose separate e distinte??? il problema è che a me serve anche il timer0.
HELP.
Massimo.
Avatar utente
Foto Utentempeino
590 4 10
Frequentatore
Frequentatore
 
Messaggi: 107
Iscritto il: 27 mar 2011, 18:21

2
voti

[2] Re: Dubbi sul timer2.

Messaggioda Foto UtentePaolino » 14 giu 2012, 21:03

Quale PIC stai usando?

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: 4203
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

2
voti

[3] Re: Dubbi sul timer2.

Messaggioda Foto UtentePaolino » 14 giu 2012, 22:08

Allora, certo le cose sono svincolate ma c'è un aspetto che è da considerare come molto importante. Le routine di interrupt DEVONO essere il più breve possibile, pena risultati inattesi. Se la routine di TMR0 fosse troppo lunga, potrebbe andare ad inficiare tutto il resto. Purtroppo la ISR relativa a Timer0 non l'hai mostrata, quindi le mie sono soltanto ipotesi.

Una domanda: l'anomalia l'hai riscontrata direttamente su scheda oppure usando il simulatore MPSIM, o in entrambi i casi?

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: 4203
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[4] Re: Dubbi sul timer2.

Messaggioda Foto Utentempeino » 15 giu 2012, 19:06

sto usando il pic16f876a.

Sto usando REAL PIC SIMULATOR.

quello è il codice completo (sto facendo delle prove ), su rb1 troverai un 'onda quadra di 2ms di periodo.

Ma se al bit 5 di INTCON metti 1 ovvero abiliti l'interrupt del timer0(senza fare nient'altro) il compilatore non genera errori ma l'onda quadra cambia periodo . BOOO!!!!
Massimo.
Avatar utente
Foto Utentempeino
590 4 10
Frequentatore
Frequentatore
 
Messaggi: 107
Iscritto il: 27 mar 2011, 18:21

2
voti

[5] Re: Dubbi sul timer2.

Messaggioda Foto UtentePaolino » 15 giu 2012, 20:05

Ahhhhhhhhhhhh, Foto Utentempeino! Orrore :D :D :D Cosa hai combinato?

Guarda qui:

Codice: Seleziona tutto
void interrupt ISR (void)
{
    if (TMR2IF=1){  // QUESTA RIGA È SBAGLIATA!!!
       RB1=RB1^1;
        }
...
...


In C, il simbolo "=" è usato per l'assegnazione. Per il confronto devi usare il "=="
Altrimenti la tua routine potrebbe avere seri problemi. Inoltre la routine che hai scritto spegne TMR2IF troppo tardi (vedi codice proposto dopo).

Poi, perché non usi MPLAB SIM? Dovresti riuscire a simulare il tuo codice.

Ancora: quale combinazione di FUSES stai usando (configuration bit)?

Di nuovo: prova questa routine:

Codice: Seleziona tutto
void interrupt ISR (void)
{
    if (TMR2IF==1)
    {
        TMR2IF = 0; // Resetto TMR2IF
        RB1=RB1^1;
        TMR2 =196;
     }

    if (TMR0IF==1)
    {
        TMR0IF = 0; // Resetto TMR0IF
        RB0=RB0^1;
     }
}


Poi, fammi 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: 4203
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

1
voti

[6] Re: Dubbi sul timer2.

Messaggioda Foto Utentempeino » 15 giu 2012, 21:39

Innanzitutto GRAZIE!!!!!
un errore da principiante (ora che ci penso lo sono) e pensare che sui libri è spiegato a caratteri cubitali.

FUSES ?????? (configuration bit)???? forse conosco l'argomento con altro nome .

Poi, perché non usi MPLAB SIM? cio provato esce la scritta
CORE-W0003: Watchdog Timer event occurred. Break in execution requested
Massimo.
Avatar utente
Foto Utentempeino
590 4 10
Frequentatore
Frequentatore
 
Messaggi: 107
Iscritto il: 27 mar 2011, 18:21

2
voti

[7] Re: Dubbi sul timer2.

Messaggioda Foto UtentePaolino » 15 giu 2012, 21:47

I configuration bit (noti anche come fuses) sono dei registri accessibili una sola volta, durante la programmazione del microcontrollore.Questi registri contengono alcune info utili come ad esempio:
- tipo di oscillatore (interno o esterno, alta velocità HS oppure XT o a basso consumo LP);
- codice inaccessibile in lettura (Code Protect)
- abilitazione Watch Dog Timer
- Brown out reset
- Powert up timer
- eccetera

Per vedere quali valori sono stati impostati, lancia MPLAB, seleziona il microcontrollore nel menu CONFIGURE -> SELECT DEVICE. Poi seleziona ancora il menu CONFIGURE e scegli la voce CONFIGURATION BITS

Ecco, cattura la schermata e inviala ;-)

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: 4203
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[8] Re: Dubbi sul timer2.

Messaggioda Foto Utentempeino » 15 giu 2012, 22:11

ma la invio nel forum
Avatar utente
Foto Utentempeino
590 4 10
Frequentatore
Frequentatore
 
Messaggi: 107
Iscritto il: 27 mar 2011, 18:21

1
voti

[9] Re: Dubbi sul timer2.

Messaggioda Foto UtentePaolino » 15 giu 2012, 22:14

Sì. Assicurati che l'immagine abbia queste caratteristiche:
- sia in formato JPEG
- abbia dimensioni minori o uguali a 640x480 pixel

Per allegarla, è sufficiente usare la voce "Invia allegato" che trovi appena sotto i pulsanti "Salva bozza", "Anteprima" e "Invia".

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: 4203
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

1
voti

[10] Re: Dubbi sul timer2.

Messaggioda Foto UtentePaolino » 15 giu 2012, 22:15

Ah, dimenticavo: non inviare la foto di TUTTO LO SCHERMO ;-) Ci basta vedere i configuration bits :lol:

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: 4203
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

Prossimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti