• Advertisement

Derattizzatore sweep

Dove discutere di Elettronica/Elettrotecnica
  • Advertisement

Re: Derattizzatore sweep

Messaggioda RsX » 28 febbraio 2012, 19:47

si, ccs c, metti 20Mhz altrimenti non ci stai con i tempi
ovvio devi mettere main, dichiarare le var... :)
Avatar utente
RsX
Amministratore
 
Messaggi: 104
Iscritto il: 8 gennaio 2012, 0:33

Advertisement

Re: Derattizzatore sweep

Messaggioda FranGu » 28 febbraio 2012, 20:05

Viene fuori più o meno questo.
12F o 12C alla fine è lo stesso.O no? Se no che razza di pappa pronta è.....

#include <12F508.h>
#fuses INTRC,NOPROTECT,NOWDT,NOMCLR
#use delay(clock=20000000)
#define OUT PIN_B0
#define ENABLE PIN_B1

while(TRUE)
output_high(PIN_B0);
delay_us(10+x);
output_low(PIN_B0);
delay_us(10+x);
}
#INT_TIMER1
void incdec(){
if(ud){
x++;
if(x==15) ud=0;
}else{
x--;
if(x==0) ud=1;
}
}
Avatar utente
FranGu
Amministratore
 
Messaggi: 70
Iscritto il: 8 gennaio 2012, 1:12

Advertisement

Re: Derattizzatore sweep

Messaggioda RsX » 28 febbraio 2012, 20:35

hai definito OUT ed ENABLE ma non li hai usati
non hai definito x e ud come int e non li hai inizializzati
non hai creato la funzione main()
stai usando un pic che lavora a massimo 4Mhz
i 12x5xx non hanno il timer1
non hai impostato il timer0 e non hai abilitato gli interrupt
enable_interrupt(INT_TIMER0);
enable_interrupt(GLOBAL);
Avatar utente
RsX
Amministratore
 
Messaggi: 104
Iscritto il: 8 gennaio 2012, 0:33

Advertisement

Re: Derattizzatore sweep

Messaggioda FranGu » 28 febbraio 2012, 20:55

Mi pareva di averlo detto che cercavo di farlo col 508.
Oltre che di averlo tutto come codice. :lol:
Avatar utente
FranGu
Amministratore
 
Messaggi: 70
Iscritto il: 8 gennaio 2012, 1:12

Advertisement

Re: Derattizzatore sweep

Messaggioda RsX » 1 marzo 2012, 0:39

dovrebbe passare da 50khz a 20khz in circa 100mS, stesso tempo per il contrario
sicuramente non riuscirai ad avere 20khz con tutte le istruzioni che ci sono in mezzo ai delay e una soluzione potrebbe essere quella di ridurre la costante MIN da 10 a 9-8-7... poi verificherai con l'oscillo
Codice: Seleziona tutto
#include <12F508.h>
#fuses INTRC,NOPROTECT,NOWDT,NOMCLR
#use delay(clock=4000000)
#define OUT PIN_B0
#define ENABLE !input(PIN_B1)
#define MIN 10 //metà del periodo, 1/50khz=20uS, quindi 10uS di partenza, da verificare con un oscillo
int x=0,ud=1;

#INT_TIMER1
void incdec(){
   if(ud){
      x++;
      if(x==15) ud=0;
   }else{
      x--;
      if(x==0) ud=1;
   }
}

void main(){
   setup_timer0(T0_INTERNAL|T0_DIV_256);
   port_b_pullups(TRUE);
   output_low(OUT);
   while(TRUE)
      if(ENABLE){
         output_high(OUT);
         delay_us(MIN+x);
         output_low(OUT);
         delay_us(MIN+x);
      }
   }
}
Avatar utente
RsX
Amministratore
 
Messaggi: 104
Iscritto il: 8 gennaio 2012, 0:33

Advertisement

Re: Derattizzatore sweep

Messaggioda FranGu » 1 marzo 2012, 17:27

Ci sono 3 errori in compilazione.O meglio erano 4 e uno l'ho sistemato. :) avevi messo una parentesi in più mi pare.
Invalid Pre-Processor directive
Undefined identifier setup timer0 Ma è timer0 o timer1?
Undefined identifier port_b_pullups
Cazzo significa?
Avatar utente
FranGu
Amministratore
 
Messaggi: 70
Iscritto il: 8 gennaio 2012, 1:12

Advertisement

Re: Derattizzatore sweep

Messaggioda RsX » 1 marzo 2012, 17:58

Codice: Seleziona tutto
#include <12F508.h>
#fuses INTRC,NOPROTECT,NOWDT,NOMCLR
#use delay(clock=4000000)
#define OUT PIN_B0
#define ENABLE !input(PIN_B1)
#define MIN 10 //metà del periodo, 1/50khz=20uS, quindi 10uS di partenza, da verificare con un oscillo
int x=0,ud=1;

#INT_TIMER1
void incdec(){
   if(ud){
      x++;
      if(x==15) ud=0;
   }else{
      x--;
      if(x==0) ud=1;
   }
}

void main(){
   setup_timer_0(T0_INTERNAL|T0_DIV_256);
   output_low(OUT);
   while(TRUE){
      if(ENABLE){
         output_high(OUT);
         delay_us(MIN+x);
         output_low(OUT);
         delay_us(MIN+x);
      }
   }
}


la parentesi era in meno, mancava dopo la while
probabilmente non funziona l'istruzione pullups sui 12f...vabbè metticela esterna... :rolleyes:
Avatar utente
RsX
Amministratore
 
Messaggi: 104
Iscritto il: 8 gennaio 2012, 0:33

Advertisement

Re: Derattizzatore sweep

Messaggioda FranGu » 1 marzo 2012, 18:13

No,ho letto il file di configurazione,12f508.h e contiene il comando pullups,
Infati ora ho solo un errore Invalid PreProcessor directive relative alla riga dove c'è #INT_TIMER1
Che vuole? Non riesce ad inizializzare il timer? Oltretutto mi pare che esista solo lui. :wtf:
Avatar utente
FranGu
Amministratore
 
Messaggi: 70
Iscritto il: 8 gennaio 2012, 1:12

Advertisement

Re: Derattizzatore sweep

Messaggioda RsX » 1 marzo 2012, 19:27

dovrebbe essere #INT_TIMER0 , non 1
Avatar utente
RsX
Amministratore
 
Messaggi: 104
Iscritto il: 8 gennaio 2012, 0:33

Advertisement

Re: Derattizzatore sweep

Messaggioda FranGu » 1 marzo 2012, 19:50

Almeno li ci arrivo da solo,non è Timer0,da lo stesso problema.
Avatar utente
FranGu
Amministratore
 
Messaggi: 70
Iscritto il: 8 gennaio 2012, 1:12

Advertisement

PrecedenteProssimo


  • Advertisement

Torna a Elettronica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

  • Advertisement
cron