collapse

* Posts Recentes

Ajuda na identificação de componente de portatil por jm_araujo
[15 de Setembro de 2019, 11:41]


Loja online "McMaster" na europa? por senso
[09 de Setembro de 2019, 23:54]


Carregador Solar para Baterias - EBay por almamater
[09 de Setembro de 2019, 22:47]


Pasta térmica por thx1011
[04 de Setembro de 2019, 19:35]


Livros opensource de electrónica, transístores e OpAmps. por thx1011
[03 de Setembro de 2019, 19:56]


Que métodos utilizam para limpar as vossas placas após soldadura? por KammutierSpule
[21 de Agosto de 2019, 22:42]


Contas para saber a duração das baterias. por vasco
[21 de Agosto de 2019, 11:10]


Fabricantes de PCB e Assemblage (produção em massa) por Kristey
[21 de Agosto de 2019, 08:51]


Máquina de soldar a fio sem gás LIDL por Hugu
[16 de Agosto de 2019, 18:28]


Hugu por jm_araujo
[14 de Agosto de 2019, 00:50]

Autor Tópico: Problema em converter codigo C arduino para C + Pigpio na raspberry  (Lida 905 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline luisjustin

  • Mini Robot
  • *
  • Mensagens: 157
    • Meu site
Código: [Seleccione]
volatile int power = 100; 
 
void zero_crosss_int() 
{
  // Cálculo do ângulo de disparo: 60Hz-> 8.33ms (1/2 ciclo)
  // (8333us - 8.33us) / 256 = 32 (aprox)
  int powertime = (32*(256-power));     
  // Mantém o circuito desligado por powertime microssegundos
  delayMicroseconds(powertime);   
  // Envia sinal ao TRIAC para que ele passe a conduzir
  digitalWrite(loadR, HIGH); 
  // Espera alguns microssegundos para que o TRIAC perceba o pulso
  delayMicroseconds(8.33);     
  // Desliga o pulso
  digitalWrite(loadR, LOW);   
}

meu problema era que não existe a  função
delayMicroseconds no pigpio e nem no C o que eu posso fazer para contornar esse problema ?

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.433
    • Tróniquices
Re: Problema em converter codigo C arduino para C + Pigpio na raspberry
« Responder #1 em: 08 de Dezembro de 2017, 03:47 »
Provavelmente só consegues implementar isso usando as funções de WAVES, pois num sistema operativo como a versão Linux do Pi (que não é Real-Time, se não estou em erro) não consegues garantir timmings a não ser dentro do kernel.

Offline vasco

  • Mini Robot
  • *
  • Mensagens: 382
Re: Problema em converter codigo C arduino para C + Pigpio na raspberry
« Responder #2 em: 08 de Dezembro de 2017, 19:22 »
Um sistema operativo multiuser como o linux não tem funções de delay no mesmo sentido que o arduino tem, pelo que não deves encontrar um port direto desse tipo de coisa.

Tens a função

       #include <unistd.h>

       int usleep(useconds_t usec);

Mas é para esquecer esse tipo de resolução, usleep(8.33) não vai acontecer nunca num OS que não seja realtime.
A man page tem a seguinte nota

       The usleep() function suspends execution of the calling thread for
       (at least) usec microseconds.  The sleep may be lengthened slightly
       by any system activity or by the time spent processing the call or by
       the granularity of system timers.
Stupid men are often capable of things the clever wouldn't dare to contemplate.