Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Stranezze con timer e compilatori.

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] Stranezze con timer e compilatori.

Messaggioda Foto Utentempeino » 14 giu 2012, 18:40

Di solito uso il MikroC ma volevo provare HI TECH C e ho scoperto qualcosa di strano.
Questo è il codice MikroC:
Codice: Seleziona tutto
void main() {
TRISA =0;
TRISB=0;
TRISC=0;
INTCON =0b10100000;
OPTION_REG =0b10000011;
TMR0=196;
}

void interrupt(void)
{
if(INTCON.T0IF=1){
RB1_bit=RB1_bit^1;

}
TMR0=196;
INTCON.T0IF=0;
}


questo è il codice HI TECH C
Codice: Seleziona tutto
#define  XTAL_FREQ 4MHZ
#include <PIC.h>
#include "delay.c"

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

OPTION_REG=0b10000011;
INTCON=0b10100000;
TMR0=196;
while(1){
}
   
}

void interrupt ISR (void)
{
    if (T0IF=1){
       RB1=RB1^1;
        }
TMR0 =196;
T0IF=0;
    
      }


per entrambi non ci sono errori e generano un onda quadra con periodo di 2ms.

Ma se analizziamo i due codici notiamo che nel HI TECH C vi è un ciclo while infinito SENZA IL QUALE L'ONDA NON VIENE GENERATA e nel MikroC non c'è .

I timer non sono indipendenti dall' andamento del programma ?????
C' è qualcosa di sbagliato nel codice HI TECH C (visto che non lo conosco)???
HELP.
Massimo.
Avatar utente
Foto Utentempeino
595 4 11
Frequentatore
Frequentatore
 
Messaggi: 117
Iscritto il: 27 mar 2011, 18:21

0
voti

[2] Re: Stranezze con timer e compilatori.

Messaggioda Foto UtenteTardoFreak » 14 giu 2012, 18:43

C'e qualcosa di sbagliato nel primo programma. Manca il ciclo infinito di funzionamento.
Ed è un errore grave!
Probabilmente il compilatore della MikroE lo vede e lo inserisce alla fine del main. Diciamo che fa una cortesia al "programmatore". :roll:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[3] Re: Stranezze con timer e compilatori.

Messaggioda Foto Utentempeino » 14 giu 2012, 18:47

acc sei stato velocissimo GRAZIE !!!!
quindi il ciclo infinito va comunque messo anche se i timer sono diciamo "indipendenti".
Avatar utente
Foto Utentempeino
595 4 11
Frequentatore
Frequentatore
 
Messaggi: 117
Iscritto il: 27 mar 2011, 18:21

0
voti

[4] Re: Stranezze con timer e compilatori.

Messaggioda Foto UtenteAjKDAP » 14 giu 2012, 18:47

mpeino ha scritto:C' è qualcosa di sbagliato nel codice HI TECH C (visto che non lo conosco)???


Visto lo scopo (generare un'onda quadra tramite interrupt) il codice HITECH mi sembra il più sensato. La stessa cosa dovrebbe essere adottata su mikroC.

Se funziona lo stesso sarà a causa del compilatore che genera un codice che non termina ma permette alle interruzioni di continuare a generare l'onda quadra.

In ogni caso, anche se funziona senza, è meglio mettere un ciclo infinito anche su mikroC.

Per pura correttezza formale :D
'˙˙˙·٠•● Alberto ●•٠·˙˙˙'
________________________
http://www.ajk.altervista.org
Avatar utente
Foto UtenteAjKDAP
1.255 2 6 9
Expert EY
Expert EY
 
Messaggi: 796
Iscritto il: 17 mag 2006, 0:13
Località: nella coda dei pronti

0
voti

[5] Re: Stranezze con timer e compilatori.

Messaggioda Foto UtenteTardoFreak » 14 giu 2012, 19:21

No, [-X non si tratta di correttezza formale ma di una necessità.

Ora, che MikroC lo metta di default per aiutare, consentitemi il temine, i programmatori improvvisati è un conto, che serva davvero è un altro.
Tutti i programmi per micrcontrollori hanno un ciclo infinito di funzionamento.
La lettura di QUESTO articolo forse può giovare.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare


Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti