Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

PIC12F683, errori compilazione su end main

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: PIC12F683, errori compilazione su end main

Messaggioda Foto Utenteangelorosso » 24 set 2011, 16:44

No, gli interrupt non li ho mai usati, ho solo letto sulla rete qualche esempio in assembler.
Al momento la tua proposta l'ho modificata così

Codice: Seleziona tutto
#include <htc.h>
   
#define INCH GP0
#define   INAP GP1
#define   OUT1 GP2
#define   OUT2 GP4
#define   OUT3 GP5
#define TRISIO_0b00001011

   void main (void)
    {
       
       // A questo punto avvio un ciclo infinito
       while (1)
       {
          // Solo se sono presenti gli INPUT procedo, altrimenti non si fa nulla
          if (GetInput() == TRUE)
          {
             if (INCH == TRUE) // Se è giunto l'input di INCH procedo
             {
                while (INCH==TRUE); // Attendo il rilascio di INCH
                while (TimerINCH()!=0) // Se il timer di INCH non è ancora scaduto, attendo il secondo impulso
                {
                   if (INCH == TRUE)
                   {
                      OUT1 = 1;
                      delay_s (x); // valore che devi stabilire tu
                      OUT1 = 0;
                               }
                }
           

       } else if (INAP == TRUE)
           
      { while (INAP==TRUE); // Attendo il rilascio di INAP
                while (TimerINAP()!=0) // Se il timer di INAP non è ancora scaduto, attendo il secondo impulso
                {
                   if (INAP == TRUE)
                   {
                         OUT1 = 1;
          OUT2 = 1
                         OUT3 = 1;
                         delay_s (x); // valore che devi stabilire tu
                         OUT1 = 0;
         OUT2 = 0;
                         delay_s (y-x)
                         OUT3 = 0;
                   }
           
          }
       
       }
    }


Per il setup del PIC provvedo tramite MPLAB specificando di quale PIC si tratta, includo il file di libreria e imposto i paramentri di funzionamento dalla board del programma, in particolare imposto il clock interno al PIC (INTOSCIO)
Invece l'istruzione Getinput non l'avevo mai vista, e anche cercando con google non ho trovato nulla...che funzione svolge ?
Avatar utente
Foto Utenteangelorosso
40 3
New entry
New entry
 
Messaggi: 61
Iscritto il: 17 lug 2011, 22:36

0
voti

[12] Re: PIC12F683, errori compilazione su end main

Messaggioda Foto UtenteTardoFreak » 24 set 2011, 16:48

La devi scrivere tu.
"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

[13] Re: PIC12F683, errori compilazione su end main

Messaggioda Foto Utenteangelorosso » 24 set 2011, 16:57

ma cosa scrivo se non ho mai visto quel comando? cosa ci va nelle parentesi?
Avatar utente
Foto Utenteangelorosso
40 3
New entry
New entry
 
Messaggi: 61
Iscritto il: 17 lug 2011, 22:36

0
voti

[14] Re: PIC12F683, errori compilazione su end main

Messaggioda Foto UtenteTardoFreak » 24 set 2011, 18:53

Devi scrivere la funzione
Codice: Seleziona tutto
char GetInput(void)
{
  // ritorna valore TRUE se ci sono ingressi attivi FALSE se non ce ne sono
}

Ma devi scriverla tu. Scrivere il sorgente, progettarla, studiarla, metterci dentro le istruzioni necessarie affinché ti restituisca un TRUE o FALSE.
Spero di essere stato chiaro.
"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

[15] Re: PIC12F683, errori compilazione su end main

Messaggioda Foto UtentePaolino » 24 set 2011, 20:16

angelorosso ha scritto:Invece l'istruzione Getinput non l'avevo mai vista...

Per forza che non la avevi mai vista: non è una ISTRUZIONE del C, ma è una FUNZIONE (nota anche come routine)! E, come ha detto Foto UtenteTardoFreak, all'interno di tale funzione il codice lo devi scrivere tu.

angelorosso ha scritto:No, gli interrupt non li ho mai usati, ho solo letto sulla rete qualche esempio in assembler.

Se non hai grosse "pretese" in termini di prestazioni, credo proprio che per iniziare tu possa fare a meno degli interrupt (per il momento).

Ma scusa: un semplice programmino che faccia accendere e spegnere un LED, no? Se è da molto tempo (10 anni, se non ho capito male) che non mastichi il C, consiglio vivamente di partire con qualcosa di facile. La palestra con le cose semplici ti serve per fare applicazioni via via più complesse.

Ciao.

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

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

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

0
voti

[16] Re: PIC12F683, errori compilazione su end main

Messaggioda Foto Utenteangelorosso » 25 set 2011, 18:12

Paolo hai ragione...ma dal semplice lampeggio del led al programma che mi occorre c'è un abisso, ci sono tante funzioni da usare che nel lampeggio del led non ci sono..

Ho provato a scrivere qualcosa seguendo i Vs suggerimenti.
Al posto di timerch ho messo delay_s
ecco
Codice: Seleziona tutto
#include <htc.h>

int INCH, GP0_bit;                // segnale di ingresso chiusura su GP0
int INAP, GP1_bit;                // segnale di ingresso apertura su GP1
int OUT1, GP5_bit;               // segnale di uscita 1 su GP5
int OUT2, GP4_bit;               // segnale di uscita 2 su GP4
int OUTPLUS, GP2_bit;            // segnale di uscita temporizzato (antipozzanghera)
int TRUE = 1;                     // vero corrisponde allo stato alto
int FALSE = 0;                     // falso corrisponde allo stato basso



#define TRISIO_b00001011;         //imposto le porte tutte uscite tranne gp0 e gp1 che sono ingressi
#define char GetInput (INCH,INAP);   //prototipo funzione getinput
#define void main (void);         //prototipo funzione main
   
void main (void)
    {
     
       while (1)
       {
         
          if (GetInput(INCH^INAP) == TRUE)      // Solo se sono presenti gli INPUT procedo, altrimenti non si fa nulla
             {
                if (INCH == TRUE) // Se è giunto l'input di INCH procedo
                {
                           {delayms(100); }             // ritardo per antirimbalzo
                        if (INCH == TRUE)             // se non si tratta di un rimbalzo
                        {delay_s(3); }      //al rilascio parte il countdowns di 3 sec.
                        
                            while (delay_s()!=0) // Se il timer di INCH non è ancora scaduto, attendo il secondo impulso
                            {
                               if (INCH == TRUE)   // al secondo impulso attivo le uscite
                               {
                                  OUT1 = 1;
                             delay_s (4);
                                  OUT1 = 0;
                             OUT2 = 0;
                                  }
                                  }
                                     }
               else if (INAP == TRUE)
                {
                           {delayms(100); }             // ritardo per antirimbalzo
                        if (INAP == TRUE)             // se non si tratta di un rimbalzo
                        {delay_s(3); }      //al rilascio parte il countdowns di 3 sec.
                        
                            while (delay_s()!=0) // Se il timer di INCH non è ancora scaduto, attendo il secondo impulso
                            {
                               if (INAP == TRUE)   // al secondo impulso attivo le uscite
                               {
                                  OUT1 = 1;
                             OUT2 = 1;
                                  OUT3 = 1;
                                  delay_s (4);
                                  OUT1 = 0;
                             OUT2 = 0;
                                  delay_s (6);
                                  OUT3 = 0;
                               }
                                  }
                                     }
                                       } //end getinput
                                       }   // endwhile(1)
                                          }   // endmain
   return 0;


Solo che adesso ho una sfilza di errori di compilazione, specie quelli riguardanti le dichiarazioni iniziali!!!

Executing: "C:\Program Files\HI-TECH Software\PICC\9.70\bin\picc.exe" --pass1 C:\Users\Angelo\MiDe\listato.c -q --chip=12F683 -P --runtime=default,+clear,+init,-keep,+osccal,-download,-resetbits,-stackcall,-stackwarn,+clib --opt=default,+asm,-debug,-speed,+space,9 --warn=0 --debugger=pickit2 --double=24 --float=24 --addrqual=ignore -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Warning [361] C:\Users\Angelo\MiDe\listato.c; 26.2 function declared implicit int
Executing: "C:\Program Files\HI-TECH Software\PICC\9.70\bin\picc.exe" --pass1 C:\Users\Angelo\Desktop\listato2.c -q --chip=12F683 -P --runtime=default,+clear,+init,-keep,+osccal,-download,-resetbits,-stackcall,-stackwarn,+clib --opt=default,+asm,-debug,-speed,+space,9 --warn=0 --debugger=pickit2 --double=24 --float=24 --addrqual=ignore -g --asmlist "--errformat=Error [%n] %f; %l.%c %s" "--msgformat=Advisory[%n] %s" "--warnformat=Warning [%n] %f; %l.%c %s"
Error [194] C:\Users\Angelo\Desktop\listato2.c; 17.31 ")" expected
Error [313] C:\Users\Angelo\Desktop\listato2.c; 17.31 function body expected
Error [285] C:\Users\Angelo\Desktop\listato2.c; 17.32 no identifier in declaration
Warning [374] C:\Users\Angelo\Desktop\listato2.c; 17.32 missing basic type; int assumed
Error [314] C:\Users\Angelo\Desktop\listato2.c; 17.32 ";" expected
Error [285] C:\Users\Angelo\Desktop\listato2.c; 27.16 no identifier in declaration
Warning [374] C:\Users\Angelo\Desktop\listato2.c; 27.16 missing basic type; int assumed
Error [314] C:\Users\Angelo\Desktop\listato2.c; 27.16 ";" expected
Error [285] C:\Users\Angelo\Desktop\listato2.c; 28.1 no identifier in declaration
Warning [374] C:\Users\Angelo\Desktop\listato2.c; 28.1 missing basic type; int assumed
Error [314] C:\Users\Angelo\Desktop\listato2.c; 28.1 ";" expected
Error [285] C:\Users\Angelo\Desktop\listato2.c; 29.14 no identifier in declaration
Warning [374] C:\Users\Angelo\Desktop\listato2.c; 29.14 missing basic type; int assumed
Error [314] C:\Users\Angelo\Desktop\listato2.c; 29.14 ";" expected
Error [285] C:\Users\Angelo\Desktop\listato2.c; 31.1 no identifier in declaration
Warning [374] C:\Users\Angelo\Desktop\listato2.c; 31.1 missing basic type; int assumed
Error [314] C:\Users\Angelo\Desktop\listato2.c; 31.1 ";" expected
Error [194] C:\Users\Angelo\Desktop\listato2.c; 36.10 ")" expected
Warning [374] C:\Users\Angelo\Desktop\listato2.c; 37.6 missing basic type; int assumed
Warning [374] C:\Users\Angelo\Desktop\listato2.c; 38.6 missing basic type; int assumed
Error [285] C:\Users\Angelo\Desktop\listato2.c; 39.1 no identifier in declaration
Warning [374] C:\Users\Angelo\Desktop\listato2.c; 39.1 missing basic type; int assumed
Error [314] C:\Users\Angelo\Desktop\listato2.c; 39.1 ";" expected
Error [285] C:\Users\Angelo\Desktop\listato2.c; 40.1 no identifier in declaration
Warning [374] C:\Users\Angelo\Desktop\listato2.c; 40.1 missing basic type; int assumed
Error [314] C:\Users\Angelo\Desktop\listato2.c; 40.1 ";" expected
Error [285] C:\Users\Angelo\Desktop\listato2.c; 41.1 no identifier in declaration
Warning [374] C:\Users\Angelo\Desktop\listato2.c; 41.1 missing basic type; int assumed
Error [314] C:\Users\Angelo\Desktop\listato2.c; 41.1 ";" expected
Error [285] C:\Users\Angelo\Desktop\listato2.c; 42.1 no identifier in declaration
Warning [374] C:\Users\Angelo\Desktop\listato2.c; 42.1 missing basic type; int assumed
Error [314] C:\Users\Angelo\Desktop\listato2.c; 42.1 ";" expected
Advisory[1] too many errors (21)

********** Build failed! **********
Avatar utente
Foto Utenteangelorosso
40 3
New entry
New entry
 
Messaggi: 61
Iscritto il: 17 lug 2011, 22:36

0
voti

[17] Re: PIC12F683, errori compilazione su end main

Messaggioda Foto UtenteTardoFreak » 25 set 2011, 18:17

Codice: Seleziona tutto
#define char GetInput (INCH,INAP);   //prototipo funzione getinput
#define void main (void);         //prototipo funzione main

||O

Ehm ,,, sei sicuro di ricordarti come si programma in C?
Senza offesa eh!
"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

[18] Re: PIC12F683, errori compilazione su end main

Messaggioda Foto Utenteangelorosso » 25 set 2011, 18:20

TardoFreak ha scritto:
Codice: Seleziona tutto
#define char GetInput (INCH,INAP);   //prototipo funzione getinput
#define void main (void);         //prototipo funzione main

||O

Ehm ,,, sei sicuro di ricordarti come si programma in C?
Senza offesa eh!


con le funzioni no, difatti ho reperito delle indicazioni sul web
Avatar utente
Foto Utenteangelorosso
40 3
New entry
New entry
 
Messaggi: 61
Iscritto il: 17 lug 2011, 22:36

0
voti

[19] Re: PIC12F683, errori compilazione su end main

Messaggioda Foto UtenteAjKDAP » 25 set 2011, 19:07

non si usano i
Codice: Seleziona tutto
#define
per dichiarare i prototipi di funzione [-X

inoltre nel prototipo di funzione vanno dichiarati i tipi dei dati che verranno passati alla funzione e/o che verranno restituiti dalla funzione stessa.
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

[20] Re: PIC12F683, errori compilazione su end main

Messaggioda Foto UtentePaolino » 25 set 2011, 20:30

Sarà, ma io resto fermo su un punto: sei troppo digiuno di C, "acerbo". Hai bisogno di rinverdire i ricordi e ribadisco il mio suggerimento: partire con cose semplici, come il lampeggio di un LED, non potrà che farti del bene! Ti servirà come palestra per incamminarti su percorsi più complessi e accidentati. Passami il paragone: cercare di leggere Hamlet in lingua originale è difficile; è meglio iniziare con qualche fumetto in inglese, se proprio la lingua non la mastichi del tutto.

Poi, come dice una nota pubblicità, sei libero di...

Ciao.

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

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

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

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti