Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Problemi programmazione in c per microcontrollori

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: Problemi programmazione in c per microcontrollori

Messaggioda Foto UtenteDavidark » 9 apr 2013, 21:28

Ok ragazzi ho risolto grazie al Prof. Vi posto il codice:
#include <led.h>
int1 a=0;
#int_RTCC
void RTCC_isr(void)
{
if(a==1){
output_high(PIN_A0);
a=0;
}
else{
output_low(PIN_A0);
a=1;
}
}
void main()
{

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_32); //1.0 s overflow
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
enable_interrupts(INT_RTCC);
enable_interrupts(GLOBAL);
setup_oscillator(OSC_8MHZ|OSC_INTRC|OSC_31250|OSC_PLL_OFF);
while(1);
}

Ho capito che la classe RTCC_isr(void) rappresenta l'interrupt giusto? Dentro di essa devo mettere il codice che fa scattare l'interrupt. Spero serva d'aiuto a qualcuno!! Se avete suggermenti di qualsiasi tipo dite pure! =)
Avatar utente
Foto UtenteDavidark
5 3
 
Messaggi: 23
Iscritto il: 8 apr 2013, 11:39

2
voti

[12] Re: Problemi programmazione in c per microcontrollori

Messaggioda Foto UtenteAjKDAP » 9 apr 2013, 22:21

ancora un po' di bacchettate sulle dita! :twisted:

1-il codice va racchiuso dentro i tag CODE:

Codice: Seleziona tutto
[code] ...qui dentro scrivi il codice... [/code]


2-RTCC_isr() non è una classe ma una funzione.

3-RTCC_isr() non fa scattare l'interrupt ma è il codice che viene eseguito allo scattare dell'interrupt.

4-hai provato se effettivamente funziona? non conosco bene il CCS ma secondo me manca qualcosa ;-)
'˙˙˙·٠•● Alberto ●•٠·˙˙˙'
________________________
http://www.ajk.altervista.org
Avatar utente
Foto UtenteAjKDAP
1.250 2 6 9
Expert EY
Expert EY
 
Messaggi: 796
Iscritto il: 17 mag 2006, 0:13
Località: nella coda dei pronti

0
voti

[13] Re: Problemi programmazione in c per microcontrollori

Messaggioda Foto UtenteDavidark » 9 apr 2013, 23:26

Che significa che il codice va racchiuso dentro i code?? è una regola fondamentale? il prof non ha detto niente su questo! Il codice l'ho provato e funziona!
Chiedo perdono per gli errori di definizione ma conosco decentemente solo java ed è la prima volta che affronto C !! So di doverlo imparare bene per combinare qualcosa di decente!!! In ogni caso grazie ;)
Avatar utente
Foto UtenteDavidark
5 3
 
Messaggi: 23
Iscritto il: 8 apr 2013, 11:39

0
voti

[14] Re: Problemi programmazione in c per microcontrollori

Messaggioda Foto UtenteAjKDAP » 9 apr 2013, 23:31

L'utilizzo dei tag CODE non è una regola fondamentale per la programmazione :D ma dovrebbe essere una buona abitudine quando si posta un codice sorgente in un forum.

Se funziona allora significa che il CCS gestisce in automatico il reset dei flag di interrupt, qualcuno che utilizza CCS lo può confermare? :roll:
Ultima modifica di Foto UtenteAjKDAP il 9 apr 2013, 23:42, modificato 1 volta in totale.
'˙˙˙·٠•● Alberto ●•٠·˙˙˙'
________________________
http://www.ajk.altervista.org
Avatar utente
Foto UtenteAjKDAP
1.250 2 6 9
Expert EY
Expert EY
 
Messaggi: 796
Iscritto il: 17 mag 2006, 0:13
Località: nella coda dei pronti

0
voti

[15] Re: Problemi programmazione in c per microcontrollori

Messaggioda Foto UtenteTardoFreak » 9 apr 2013, 23:41

Oibò :(
"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,8k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15763
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

1
voti

[16] Re: Problemi programmazione in c per microcontrollori

Messaggioda Foto UtentePaolino » 10 apr 2013, 7:08

AjKDAP ha scritto:Se funziona allora significa che il CCS gestisce in automatico il reset dei flag di interrupt, qualcuno che utilizza CCS lo può confermare? :roll:


Ho usato CCS in passato e, a meno che ultimamente non abbiano cambiato qualcosa nel compilatore, la gestione del reset dei flag di interrupt dovrebbe essere ancora a carico del programmatore.

Ciao.

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

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

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

1
voti

[17] Re: Problemi programmazione in c per microcontrollori

Messaggioda Foto UtentePaolino » 10 apr 2013, 7:14

Codice: Seleziona tutto
void RTCC_isr(void)
{
    if(a==1)
    {
       output_high(PIN_A0);
       a=0;
    } else{
        output_low(PIN_A0);
        a=1;
    }
}

Foto UtenteAjKDAP, secondo me il codice funziona, grazie alla variabile a.

Ascolta, Foto UtenteDavidark, prova a sostituire la tua routine di interrupt con questa:

Codice: Seleziona tutto
void RTCC_isr(void)
{
   if(a==1)
   {
      output_high(PIN_A0);
      } else{
      output_low(PIN_A0);
   }
}


Continua a funzionare? Io ho qualche dubbio... 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,5k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4220
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[18] Re: Problemi programmazione in c per microcontrollori

Messaggioda Foto UtenteAjKDAP » 10 apr 2013, 9:33

Si, sono convinto che la variabile "a" serva ad alternare accensione e spegnimento del LED, ma io personalmente sono abituato a resettare il flag di interrupt una volta finita l'esecuzione del relativo codice di interrupt così da prepararmi per la successiva interruzione.

Ed in questo codice non ho visto nulla del genere.

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

0
voti

[19] Re: Problemi programmazione in c per microcontrollori

Messaggioda Foto UtenteDavidark » 10 apr 2013, 10:19

No no!! Avete ragione!Senza a il codice non funziona. Il prof non ha spiegato come fare avvenire il "flag dell'interrupt"!!
Qualcuno riuscirebbe a illuminarmi su questo? Anche per spiegarmi semplicemente cos'è questo flag! =) Grazie!
Avatar utente
Foto UtenteDavidark
5 3
 
Messaggi: 23
Iscritto il: 8 apr 2013, 11:39

0
voti

[20] Re: Problemi programmazione in c per microcontrollori

Messaggioda Foto UtenteDavidark » 10 apr 2013, 14:38

Come avrei dovuto fare?
Avatar utente
Foto UtenteDavidark
5 3
 
Messaggi: 23
Iscritto il: 8 apr 2013, 11:39

PrecedenteProssimo

Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti