Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

interrupt zero crossing

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[11] Re: interrupt zero crossing

Messaggioda Foto Utentesorecaro » 30 ago 2015, 18:20

Già abilitato con
Codice: Seleziona tutto
IOC=     0b001000;


ora ho fatto cosi è riesco a ricavare un impulso ogni passaggio per lo zero, ma c'è ancora qualcosa che non mi convince.
Codice: Seleziona tutto
if(gpio.f3=!gpio.f3)



Codice: Seleziona tutto
if (gpio.f3==gpio.f3)
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

0
voti

[12] Re: interrupt zero crossing

Messaggioda Foto Utentelelerelele » 30 ago 2015, 18:40

non capisco, verifichi se f3 è diverso da se stesso? come può funzionare?

sorecaro ha scritto:
Codice: Seleziona tutto
if(gpio.f3=!gpio.f3)

[/code]
Avatar utente
Foto Utentelelerelele
4.899 3 7 9
Master
Master
 
Messaggi: 5509
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

0
voti

[13] Re: interrupt zero crossing

Messaggioda Foto Utentesorecaro » 30 ago 2015, 18:58

non lo capisco neanche io ma con proteus funziona. Domani lo provo con la scheda
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

0
voti

[14] Re: interrupt zero crossing

Messaggioda Foto Utenteedgar » 30 ago 2015, 21:17

Se il circuito è alimentato tramite la solita catena ponte / condensatore / stabilizzatore potresti inserire un diodo a valle del ponte e prima del condensatore così potresti prelevare la tensione raddrizzata pulsante a 100 Hz. Potresti scegliere il trigger su fronte di salita o di discesa come meglio ti aggrada
Avatar utente
Foto Utenteedgar
10,0k 4 5 8
Master
Master
 
Messaggi: 5230
Iscritto il: 15 set 2012, 22:59

3
voti

[15] Re: interrupt zero crossing

Messaggioda Foto UtentePietroBaima » 30 ago 2015, 21:26

lelerelele ha scritto:non capisco, verifichi se f3 è diverso da se stesso? come può funzionare?

Alle volte queste porcate (non riesco a definirle diversamente) funzionano perché, scrivendo quella linea di codice proprio così, faccio leggere due volte di seguito l'ingresso al uC.
Se la commutazione è molto ripida si ha una momentanea differenza fra due letture consecutive.
Inutile dire che questa è anche la ragione per la quale ogni tanto viene persa qualche lettura.

Bisogna cambiare il codice e renderlo affidabile, per esempio emulando o usando un ICP.

Ciao,
Pietro.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12207
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[16] Re: interrupt zero crossing

Messaggioda Foto Utentesorecaro » 30 ago 2015, 21:53

PietroBaima
la mia era solo una prova. Sono stato il primo a dire che c'era qualcosa che non andava e infatti ho riscritto la routine di interrupt in questo modo e la sto testando, naturalmente se hai qualche consiglio è bene accetto :-) :-) :-)
Codice: Seleziona tutto
void interrupt (void){
if (INTCON.GPIF){              //se c'è stato interrupt

      if((gpio.f3==1)   &&   (stato==0))
      {
              zero_crossing=1;
             stato=1;
             INTCON.GPIF=0;
                             
         }

      if ((gpio.f3==0)  &&   (stato==1))
       {
       zero_crossing=1;
              ++i;
             stato=0;
             INTCON.GPIF=0;
         }

          }
          }
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

1
voti

[17] Re: interrupt zero crossing

Messaggioda Foto UtentePietroBaima » 30 ago 2015, 22:02

PietroBaima ha scritto:Bisogna cambiare il codice e renderlo affidabile, per esempio emulando o usando un ICP.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12207
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[18] Re: interrupt zero crossing

Messaggioda Foto Utentesorecaro » 30 ago 2015, 22:09

PietroBaima ha scritto:
Bisogna cambiare il codice e renderlo affidabile, per esempio emulando o usando un ICP.

potresti darmi qualche spunto???
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

2
voti

[19] Re: interrupt zero crossing

Messaggioda Foto UtentePietroBaima » 30 ago 2015, 22:31

Se vuoi fare tutto via software complementa un flag ad ogni interrupt e poi fai il compare con quello.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12207
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[20] Re: interrupt zero crossing

Messaggioda Foto Utentesorecaro » 30 ago 2015, 22:38

Codice: Seleziona tutto
Se vuoi fare tutto via software complementa un flag ad ogni interrupt e poi fai il compare con quello.


Grazie per la risposta.
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti