Autor Tópico: Problemas com porta paralela e mach3  (Lida 17407 vezes)

Description:

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

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re:Problemas com porta paralela e mach3
« Resposta #45 Online: 29 de Dezembro de 2013, 07:47 »
Pode ser que eu tenha algum déficit de atenção, então vou me redimir:

Durante toda a discussão, acredite ser: "fazer funcionar utilizando o arduino". Se minhas colocações foram contrárias a isso, peço desculpas.

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re:Problemas com porta paralela e mach3
« Resposta #46 Online: 29 de Dezembro de 2013, 08:14 »
O Gil está correto em partes.

Não Cláudio, o Gil está plenamente correto.

Citar
Discordo apenas quando ele afirma que o problema de velocidade está na linguagem C.

Não foi isso que ele disse ... o Gil referia-se a peculiaridades do Arduino ...

Citar
Jorge, você deve prestar mais atenção ao que lê. Disse nunca ter utilizado a IDE Arduino.

É exatamente disto que se trata ...  ;D

a IDE do Arduino É essencialmente o Arduino ... a utilização de outra coisa conduz a outros resultados e não estaremos mais falando exatamente do Arduino ... é a IDE que faz do Arduino o que ele é, incluindo idiossincrasias importantes como o Gil enfatizou ... sem IDE Arduino o que temos é uma breakout board como qualquer outra ...

Citar
Um observação: No caso, interrupção iria atrasar o programa.

He, he, he ... e polling, faz o que ?  ;D ;D ;D

Interrupções são temidas por muitos, mas não pq atrasam alguma coisa, mas sim pq são eventos assíncronos e são extremamente úteis exatamente para o tratamento desse tipo de eventos  ;D

Interrupção é a ÚNICA maneira decente de lidar com a coisa ... é, ao contrário do que vc diz, um tratamento muito rápido e que proporciona o absolutamente necessário sincronismo com os pulsos de passo / direção ... polling só funciona em condições muito específicas e impõe severas restrições, não é solução adequada para o prob que discutimos ou pelo menos não é a solução mais genérica, de maior abrangência.

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re:Problemas com porta paralela e mach3
« Resposta #47 Online: 29 de Dezembro de 2013, 08:52 »
Não Cláudio, o Gil está plenamente correto.

Você acaba de assinar embaixo das seguintes colocações:

"O seu programa não terá a velocidade suficiente, pois é feito em C e há várias coisas a serem feitas, que exigem conhecimento e experiência."
Repito: Deixa o C em paz! Ele desempenha o papel dele muito bem.

"Não exatamente a lingagem C, mas a biblioteca (em C) de motores de passo do Arduino é boa para iniciantes, porém acho-a lenta para um CNC, mesmo para amadores"
Isso é muito relativo. E como não sabemos em qual placa ele está desenvolvendo, faça o teste em um Arduino Due. Imagine rodando na Tre.

"Se o programa coincidir de ler um pulso igual a zero no exato momento em que isso acontecer e não pode demorar muito para isso (apenas alguns microssegundos). Ou seja, jogue na loteria que talvez seja mais provável acertar!!"
O problema no código dele está após identificar o pulso. E do jeito que foi apresentado, seria capaz de identificar um pulso de 1 uS sem problemas.

"Também já fiz vários experimentos da velocidade máxima em trens de pulsos via programa, usando um oscilosópio, não chega a algumas dezenas de KHz em linguagem C"
Outra colocação errada!


Não foi isso que ele disse ... o Gil referia-se a peculiaridades do Arduino ...

Concorco com você, mas ele deveria ter feito melhores colocações.



É exatamente disto que se trata ...  ;D

a IDE do Arduino É essencialmente o Arduino ... a utilização de outra coisa conduz a outros resultados e não estaremos mais falando exatamente do Arduino ... é a IDE que faz do Arduino o que ele é, incluindo idiossincrasias importantes como o Gil enfatizou ... sem IDE Arduino o que temos é uma breakout board como qualquer outra ...

Apesar de não tem usado a IDE arduino, tenho conhecimento o suficiente para afirmar que funcionará e que será bastante lento.

E não é que a lógica funcionou?

Postei um código - para ser compilado na IDE arduino - há alguns posts atrás, apesar de não ter testado, deve funcionar perfeitamente.


He, he, he ... e polling, faz o que ?  ;D ;D ;D

Interrupções são temidas por muitos, mas não pq atrasam alguma coisa, mas sim pq são eventos assíncronos e são extremamente úteis exatamente para o tratamento desse tipo de eventos  ;D

Interrupção é a ÚNICA maneira decente de lidar com a coisa ... é, ao contrário do que vc diz, um tratamento muito rápido e que proporciona o absolutamente necessário sincronismo com os pulsos de passo / direção ... polling só funciona em condições muito específicas e impõe severas restrições, não é solução adequada para o prob que discutimos ou pelo menos não é a solução mais genérica, de maior abrangência.

Aqui você foi bastante infeliz. Sugiro que você estude antes de palpitar.

Existem mais coisas acontecendo do que você consegue observar na IDE do arduino.

Vou te dar uma força. Vou montar alguns exemplos pra vc entender os motivos da minha afirmação.
« Última modificação: 29 de Dezembro de 2013, 09:21 por Cláudio Freund »

Offline C N C N o w !

  • CNCMASTER
  • ******
  • Posts: 6300
  • Sexo: Masculino
Re:Problemas com porta paralela e mach3
« Resposta #48 Online: 29 de Dezembro de 2013, 10:21 »

Você acaba de assinar embaixo ...

Isso mesmo, assino embaixo de tudo o que o Gil disse. Vou convidar mais uma vez: mantenha-se no contexto ... procure entender o que foi dito dentro do contexto em que foi dito. Mais importante do que estar certo é que possamos nos entender, né ?

Citar
Concordo com você, mas ele deveria ter feito melhores colocações.

Claro, é sempre possível melhorar nossas colocações, vc tb pode se esforçar um pouquinho nesse sentido, né ? ;D

Aquela "... interrupção iria atrasar o programa" foi de doer  ;D ;D ;D

Citar
Apesar de não tem usado a IDE arduino, tenho conhecimento o suficiente para afirmar que funcionará e que será bastante lento.

Cláudio, pontificar sobre o que não se conhece não é muito saudável ... não vai custar a vc muito tempo nem muito esforço pra conhecer a IDE e então falar com conhecimento de causa, como tem feito o Gil ...

A manipulação direta dos registradores para operações I/O permite uma execução pelo menos dez vezes mais rápida que as funções arduinianas, mas eu não diria que é "bastante lento", o que eu diria é que pode não ser suficientemente rápido pra uma dada aplicação ... neste contexto eu certamente preferiria fazer a coisa de maneira semelhante ao seu exemplo.

Citar
Postei um código - para ser compilado na IDE arduino - há alguns posts atrás, apesar de não ter testado, deve funcionar perfeitamente.

Claro, dá pra contornar inteiramente o "jeitinho Arduino" de fazer as coisas, afinal o que temos embrulhado ali é o bom e velho avr-gcc, né ? ... mas de novo estaríamos nos colocando fora do contexto ...

Citar
Aqui você foi bastante infeliz. Sugiro que você estude antes de palpitar.

Posso devolver a bola ?  ;D

Aqui você foi bastante infeliz. Sugiro que você estude antes de palpitar. ;D ;D ;D

Citar
Existem mais coisas acontecendo do que você consegue observar na IDE do arduino.

Pois é, isto e o que temos dito ...  ;D

Mas isto nada tem a ver com interrupções vs polling ...

Citar
Vou te dar uma força. Vou montar alguns exemplos pra vc entender os motivos da minha afirmação.

Obrigado, mas não se dê ao trabalho, aproveite seu tempo pra aprender sobre interrupções, inclusive fora do contexto desta discussão, é coisa utilíssima  ;D

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re:Problemas com porta paralela e mach3
« Resposta #49 Online: 29 de Dezembro de 2013, 11:08 »
Isso mesmo, assino embaixo de tudo o que o Gil disse. Vou convidar mais uma vez: mantenha-se no contexto ... procure entender o que foi dito dentro do contexto em que foi dito. Mais importante do que estar certo é que possamos nos entender, né ?

Não tente distorcer.

Gil passou a impressão de que o problema estava na linguagem e continuou insistindo mesmo após eu apontar o erro de colocação.

Qual a conclusão que se tira disso? Pode deixar o Tico dormindo, o Teco é suficiente para intender que o problema é conceitual.


Claro, é sempre possível melhorar nossas colocações, vc tb pode se esforçar um pouquinho nesse sentido, né ? ;D

Aquela "... interrupção iria atrasar o programa" foi de doer  ;D ;D ;D

Confesso que sou péssimo em português. Quem sabe um dia eu consiga tempo para consertar isso.

"... atrasaria o programa." Melhorou?


Cláudio, pontificar sobre o que não se conhece não é muito saudável ... não vai custar a vc muito tempo nem muito esforço pra conhecer a IDE e então falar com conhecimento de causa, como tem feito o Gil ...

Onde eu falei besteira?

Experimente lêr os relatos do dono do tópico.


A manipulação direta dos registradores para operações I/O permite uma execução pelo menos dez vezes mais rápida que as funções arduinianas, mas eu não diria que é "bastante lento", o que eu diria é que pode não ser suficientemente rápido pra uma dada aplicação ... neste contexto eu certamente preferiria fazer a coisa de maneira semelhante ao seu exemplo.

Claro, dá pra contornar inteiramente o "jeitinho Arduino" de fazer as coisas, afinal o que temos embrulhado ali é o bom e velho avr-gcc, né ? ... mas de novo estaríamos nos colocando fora do contexto ...

Qual o seu conceito de Arduino? Você acha que se resume a meia duzia de bibliotecas?

Não estou apelando para magia negra para fazer funcionar e assim ter razão. Isto está ao alcance de todos. Basta "estudar".

"See the libraries page for interfacing with particular types of hardware. Try the list of community-contributed code. The Arduino language is based on C/C++. It links against AVR Libc and allows the use of any of its functions; see its user manual for details."
Fonte: http://arduino.cc/en/Reference/HomePage


Obrigado, mas não se dê ao trabalho, aproveite seu tempo pra aprender sobre interrupções, inclusive fora do contexto desta discussão, é coisa utilíssima  ;D

Contra fatos não há argumentos. Concorda?

Irei postar sim. Se você não tiver condições de debater sobre, poderá servir de referência para alguém.


Respeito bastante a bagagem e conhecimento de vocês. Frequento este fórum a anos e aprendi muito. Obrigado por isso!
Estou aqui tentando somar. E acredito que todos aprendemos aqui. Em nenhum momento tentei ser pejorativo ou fazer inflar meu ego.

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re:Problemas com porta paralela e mach3
« Resposta #50 Online: 29 de Dezembro de 2013, 13:09 »
Para a aplicação, apenas interrupções por borda são rápidas o suficiente. Ou seja, PCINT não serve.

Utilizando ATmega2560 e tomando o seguinte código como exemplo:

Código: [Selecionar]
#include <avr/io.h>
#include <avr/interrupt.h>

ISR(INT0_vect){
GPIOR0 = PIND & (1 << PIND0);
}

int main(void){
   
EICRA = (1 << ISC01) | (1 << ISC00);
EIMSK = (1 << INT0);

sei();

while(1){
while((PIND & (1 << PIND0)) == 0);
GPIOR0 = PIND0;
while((PIND & (1 << PIND0)));
    }
}

Parte do arquivo .lss:
Código: [Selecionar]
00000000 <__vectors>:
   0: 71 c0        rjmp .+226    ; 0xe4 <__ctors_end>
   2: 00 00        nop
   4: 7a c0        rjmp .+244    ; 0xfa <__vector_1>
   6: 00 00        nop

000000fa <__vector_1>:
  fa: 1f 92        push r1 ; 2 clocks
  fc: 0f 92        push r0 ; 2 clocks
  fe: 0f b6        in r0, 0x3f ; 1 clock
 100: 0f 92        push r0 ; 2 clocks
 102: 11 24        eor r1, r1 ; 1 clock
 104: 8f 93        push r24 ; 2 clocks
 106: 89 b1        in r24, 0x09 ; 1 clock
 108: 81 70        andi r24, 0x01 ; 1 clock
 10a: 8e bb        out 0x1e, r24 ; 1 clock
 10c: 8f 91        pop r24 ; 2 clocks
 10e: 0f 90        pop r0 ; 2 clocks
 110: 0f be        out 0x3f, r0 ; 1 clock
 112: 0f 90        pop r0 ; 2 clocks
 114: 1f 90        pop r1 ; 2 clocks
 116: 18 95        reti ; 5 clocks

00000148 <main>:
 154: 48 9b        sbis 0x09, 0 ; 2 clocks
 156: fe cf        rjmp .-4      ; 2 clocks
 158: 1e ba        out 0x1e, r1 ; 1 clock
 15a: 48 99        sbic 0x09, 0 ; 2 clocks
 15c: fe cf        rjmp .-4      ; 2 clocks
 15e: fa cf        rjmp .-12      ; 2 clocks

Já temos um problema: Durante uma interpolação as três interrupções serão chamadas no mesmo instante.
Como isso não é permitido, será executada uma interrupção por vez respeitando ordem de prioridade.
Mas estamos falando de tempo de execução, então vamos adiante;

Retirado do datasheet do ATmega2560:

7.8.1 Interrupt Response Time
The interrupt execution response for all the enabled AVR interrupts is five clock cycles minimum.
After five clock cycles the program vector address for the actual interrupt handling routine is executed.
During these five clock cycle period, the Program Counter is pushed onto the Stack. The
vector is normally a jump to the interrupt routine, and this jump takes three clock cycles. If an
interrupt occurs during execution of a multi-cycle instruction, this instruction is completed before
the interrupt is served. If an interrupt occurs when the MCU is in sleep mode, the interrupt execution
response time is increased by five clock cycles. This increase comes in addition to the
start-up time from the selected sleep mode.
A return from an interrupt handling routine takes five clock cycles. During these five clock cycles,
the Program Counter (three bytes) is popped back from the Stack, the Stack Pointer is incremented
by three, and the I-bit in SREG is set.

Então, temos:

Objetivo: Setar GPIO0 com o valor de PIND0;

Utilizando interrupção:

1 clock para leitura do pino
5 clocks para chamar vetor
2 clocks para chamar <__vector_1>
27 clocks para executar rotina de interrupção

14 Clocks para setar GPIOR0 ou 875 nanosegundos.
Total de 35 Clocks  ou 2 microsegundos.

Pooling:
1 clock para leitura do pino
2 clocks para sbis
1 clock para out

Total de 4 Clocks ou 250 nanosegundos.

Deu para entender?

Qual valor é menor? 875 ou 250?

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Problemas com porta paralela e mach3
« Resposta #51 Online: 29 de Dezembro de 2013, 16:22 »
Primeiramente, gostaria de desejar que o Sijoga continue seguindo em seu aprendizado. Você percebeu as dificuldades em usar apenas um Arduino, ou de um Arduino entre o PC e os motores de passo. Realmente a solução mais simples neste momento é o Phase Driver e depois aconselho-o a usar um driver mais elaborado que possua chopper.

Jorge,
Finalmente alguém entendeu os pontos de vista que eu estava tentando expor e fazer o coleguinha Cláudio entender....

Cláudio,

Primeiramente, você deveria entender o propósito deste fórum e o propósito deste tópico, criado por causa de um problema simples e bastante específico. Quando o colega "Sijoga" expôs suas dúvidas, ficou claro para mim onde ele queria chegar, apenas acionar seus motores de passo, mas "havia um Arduino no meio de caminho".

Por outro lado, você, de certa forma, acabou transformando este tópico numa exibição pessoal. Não sou contra exibicionismos, isso é fórum de cada um, mas quando não ajudam o colega e ocupam espaço, ficam totalmente fora de propósito e contraproducentes.

Gosto muito de programar e não quero desfiar a minha experiência e formação (graduação, mestrado, doutorado, ....) em vários assuntos relacionados, inclusive programação. Trabalho "de carteira assinada" com automação industrial (nas áreas de manutenção, engenharia, desenvolvimento, ensino, pesquisa, ....) há mais de 28 anos, mas, não quero ocupar mais ainda este tópico com minha exibição de ego.

Você deveria aprender que em automação industrial, controle de processos, robótica, CNC, ....nem tudo se resolve com programação, frequentemente, deve-se partir para soluções intergradas, usando dispostivos específicos (DSP, PLD, FGPA, ....), hardware dedicado, redes de alta velocidade e de baixa velocidade, comunicação entre sistemas, sistemas distribuídos,  circuitos analógicos, mecânica, química, óptica, física, .... Na engenharia, vale mais o bom senso e saber aplicar a melhor solução, mas, isso exige conhecimento, experiência, talento, formação, networking, .....

Me parece que para você a programação é um "martelo" e todos os problemas se chamam "pregos". E você parece que só conhece um "martelo chamado C" e parece não enxergar que num simples CNC o programa (seja em C, código G, Java, Python, Matlab, LabView, Assembly, ....) é parte de um todo, que deve funcionar harmonicamente, com baixo jitter, com eficácia, ....

Além disso, você não entendeu nada do que eu disse e ainda distorceu o que eu afirmei aqui. Você parece não saber ouvir o que o interessado postou e nem o que outras pessoas postaram e estão postando.

Eu fiz um programa para o meu Arduino e consegui alcançar a frequência de 250KHz acionando um motor de passo, mas foi necessário algum malabarismo e usando diretamente alguns registradores do ATMega. Coisa que o IDE do Arduino não disponibiliza para principiantes. Assim mesmo, isso só me deixou ainda mais convencido de que o Arduino somente, e com o melhor programa, não atende a finalidade demandada neste tópico, simplesmente porque não implementa um controle de corrente (e que se for implementado vai gastar mais recursos da CPU e torná-la mais lenta), para que vou gastar ainda mais meu tempo nisto? Cabeça é para pensar e pesar as coisas...

Não sei se você já percebeu, neste fórum há pessoas que estão começando e devem ser ajudadadas sem elocubrações, tem se procurado manter os tópicos bem focados e com começo, meio e fim, sem baboseiras e pavonices. Finalmente, o respeito mútuo é um ítem de muito valor e que se preza em todas as dicussões.

Se você quiser criar seu tópico para discutir o assunto em profundidade, ok, poderia até participar. Mas ao menos, não fique poluindo ainda mais esse tópico com suas demonstrações de suposto conhecimento e pirotecnia de leitura de manual.
« Última modificação: 29 de Dezembro de 2013, 16:31 por minilathe »

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Problemas com porta paralela e mach3
« Resposta #52 Online: 29 de Dezembro de 2013, 17:07 »
Cláudio,

Utilizando interrupção:

1 clock para leitura do pino
5 clocks para chamar vetor
2 clocks para chamar <__vector_1>
27 clocks para executar rotina de interrupção

14 Clocks para setar GPIOR0 ou 875 nanosegundos.
Total de 35 Clocks  ou 2 microsegundos.

Pooling:
1 clock para leitura do pio no
2 clocks para sbis
1 clock para out

Total de 4 Clocks ou 250 nanosegundos.

Deu para entender?

Qual valor é menor? 875 ou 250?

Você não considerou que existe uma coisa chamada jitter, que vai fazer pulsos ocorrerem no meio do programa e esses pulsos eventualmente serão perdidos, se o programa não for suficientemente rápido. Esse tipo de problema não se trata desse jeito profissionalmente, usa-se um processador cuja interrupção possua latência adequada ao problema ou, mais frequentemente, parte-se para algo do tipo FPGA, hardware dedicado, ....

Você está usando uma teoria simplista em seu raciocínio, faltam alguns fundamentos estatísticos, melhor metodologia, .... para saber medir e expressar esse tipo de situação na realidade (jitter, eventos simultâneos, ...). A leitura do manual é necessária, mas é insuficiente, um teste de bancada bem orientado e focado é mais conclusivo que copiar e colar linhas do data sheet.

Se quer mostrar algo útil, deixe de poluir ainda mais esse tópico, crie o seu tópico e faça medições e demonstre o que diz. Manuais não se defendem e podem ser mal interpretados...

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re:Problemas com porta paralela e mach3
« Resposta #53 Online: 29 de Dezembro de 2013, 17:45 »
Primeiramente, gostaria de desejar que o Sijoga continue seguindo em seu aprendizado. Você percebeu as dificuldades em usar apenas um Arduino, ou de um Arduino entre o PC e os motores de passo. Realmente a solução mais simples neste momento é o Phase Driver e depois aconselho-o a usar um driver mais elaborado que possua chopper.

Pra variar, você está enganado.

Se você criticasse menos e prestasse mais atenção, saberia que ele não achou um driver com valor condizente a aplicação. Ele pediu orientação nisso. E como é seu metiê, acredito que você poderia ajudá-lo a encontrar uma controladora barata e funcional.

Graças ao Enéias, ele resolveu da melhor forma PARA ELE. Colocou pra funcionar e economizou uma grana.


Jorge,
Finalmente alguém entendeu os pontos de vista que eu estava tentando expor e fazer o coleguinha Cláudio entender....

Você errou! Simples não? Mas não se preocupe, isso acontece. E te garanto que vai ficar tudo bem.

Ficou sem saída Gil? Sua última cartada é tentar me ridicularizar? Que pena que você preferiu ir por esse lado. Não era necessário.

O bacana é que aqui no fórum está tudo gravado. Se você realmente não sabe onde errou, basta voltar à primeira página.

Apesar de não acreditar nisso, vou me defender beirando a demência levando em consideração que você está perdido até agora.

Cláudio,

Primeiramente, você deveria entender o propósito deste fórum e o propósito deste tópico, criado por causa de um problema simples e bastante específico. Quando o colega "Sijoga" expôs suas dúvidas, ficou claro para mim onde ele queria chegar, apenas acionar seus motores de passo, mas "havia um Arduino no meio de caminho".

Problema tão simples, mas você chegou com os dois pés na porta!

E problema realmente era simples. O circuito dele funcionava no programa "RoutOut Manager V 3.5", mas não funcionara no TurboCNC e Mach3. Ele queria entender o porquê disso, mas você mandou ele desistir, pois não funcionaria.


Por outro lado, você, de certa forma, acabou transformando este tópico numa exibição pessoal. Não sou contra exibicionismos, isso é fórum de cada um, mas quando não ajudam o colega e ocupam espaço, ficam totalmente fora de propósito e contraproducentes.

Não sou eu quem estou me exibindo. Você caiu do cavalo.

Em vez de dar a mão a palmatória, ou pelos menos ser humilde e perguntar como funcionaria, afirmou que era impossível.

Eu só fiz mostrar onde você estava errando e responder aos seus questionamentos.

Gosto muito de programar e não quero desfiar a minha experiência e formação (graduação, mestrado, doutorado, ....) em vários assuntos relacionados, inclusive programação. Trabalho "de carteira assinada" com automação industrial (nas áreas de manutenção, engenharia, desenvolvimento, ensino, pesquisa, ....) há mais de 28 anos, mas, não quero ocupar mais ainda este tópico com minha exibição de ego.

Parabéns Gil! Fico contente por você. Estou falando sério, fico feliz em ver pessoas dedicadas e que conseguem atingir seus objetivos.

Mas espero que esteja sempre se renovando. Afinal de contas, não usamos mais válvulas.


Você deveria aprender que em automação industrial, controle de processos, robótica, CNC, ....nem tudo se resolve com programação, frequentemente, deve-se partir para soluções intergradas, usando dispostivos específicos (DSP, PLD, FGPA, ....), hardware dedicado, redes de alta velocidade e de baixa velocidade, comunicação entre sistemas, sistemas distribuídos,  circuitos analógicos, mecânica, química, óptica, física, .... Na engenharia, vale mais o bom senso e saber aplicar a melhor solução, mas, isso exige conhecimento, experiência, talento, formação, networking, .....

Gil,

Mais suposições... Você me conhece? Sabe da minha vida?

DSP, PLD e FGPA precisam ser programados para funcionar. Trabalho com esses caras também. Meu projeto atual, contém uma SPARTAN-6, CoolRunnerII e um LPC4088.


Me parece que para você a programação é um "martelo" e todos os problemas se chamam "pregos". E você parece que só conhece um "martelo chamado C" e parece não enxergar que num simples CNC o programa (seja em C, código G, Java, Python, Matlab, LabView, Assembly, ....) é parte de um todo, que deve funcionar harmonicamente, com baixo jitter, com eficácia, ....

Fugindo do contexto Gil? Achei que nossa discussão fosse sobre o Arduino!


Além disso, você não entendeu nada do que eu disse e ainda distorceu o que eu afirmei aqui. Você parece não saber ouvir o que o interessado postou e nem o que outras pessoas postaram e estão postando.

Tome um gole de café e releia a sua participação neste tópico. Você não agregou em nada. Só criticou.


Eu fiz um programa para o meu Arduino e consegui alcançar a frequência de 250KHz acionando um motor de passo, mas foi necessário algum malabarismo e usando diretamente alguns registradores do ATMega. Coisa que o IDE do Arduino não disponibiliza para principiantes. Assim mesmo, isso só me deixou ainda mais convencido de que o Arduino somente, e com o melhor programa, não atende a finalidade demandada neste tópico, simplesmente porque não implementa um controle de corrente (e que se for implementado vai gastar mais recursos da CPU e torná-la mais lenta), para que vou gastar ainda mais meu tempo nisto? Cabeça é para pensar e pesar as coisas...

Gil, está registrado! Até ontem você não conseguia fazer um pino pulsar a mais de 70 kHz no Arduino. Hoje já elaborou um driver de 250 kHz? Isso é o que se chama curva de aprendizado.

Mas, se for mentira, sei que você aprendeu como fazer seu arduino pulsar em até 8 MHz.


Não sei se você já percebeu, neste fórum há pessoas que estão começando e devem ser ajudadadas sem elocubrações, tem se procurado manter os tópicos bem focados e com começo, meio e fim, sem baboseiras e pavonices. Finalmente, o respeito mútuo é um ítem de muito valor e que se preza em todas as dicussões.

Esse é o ponto em que eu mais me preocupo. Uma pessoa que não tem a sua experiência, ou não convive com você, pode interpretar errado o que você diz. Cuidado com isso. Você pode estar prejudicando alguém.

Quando uma pessoa te pedir ajuda, ou pedir ajuda neste fórum, tente entender o problema e a situação, leia, re-leia se for necessário, e pense na resposta. Faça um rascunho. Veja se está condizente.


Se você quiser criar seu tópico para discutir o assunto em profundidade, ok, poderia até participar. Mas ao menos, não fique poluindo ainda mais esse tópico com suas demonstrações de suposto conhecimento e pirotecnia de leitura de manual.

Isso depende de você. Quer esclarecer mais algum ponto?

Apesar de tudo, se achar que eu possa te ajudar em algo, mande uma PM, e-mail ou ..., sei lá! Eu não tenho medo de passar conhecimento, nem de aprender e muito menos de discutir pontos de vista.

Eu levo isso na esportiva, pois tenho um pai com 63 anos e cabeça dura. Formado em Engenharia Eletrônica. Ele sabe que existe 1000 maneiras de se fazer algo, mas só a dele é a correta.

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re:Problemas com porta paralela e mach3
« Resposta #54 Online: 29 de Dezembro de 2013, 17:55 »
Cláudio,

Você não considerou que existe uma coisa chamada jitter, que vai fazer pulsos ocorrerem no meio do programa e esses pulsos eventualmente serão perdidos, se o programa não for suficientemente rápido. Esse tipo de problema não se trata desse jeito profissionalmente, usa-se um processador cuja interrupção possua latência adequada ao problema ou, mais frequentemente, parte-se para algo do tipo FPGA, hardware dedicado, ....

Você está usando uma teoria simplista em seu raciocínio, faltam alguns fundamentos estatísticos, melhor metodologia, .... para saber medir e expressar esse tipo de situação na realidade (jitter, eventos simultâneos, ...). A leitura do manual é necessária, mas é insuficiente, um teste de bancada bem orientado e focado é mais conclusivo que copiar e colar linhas do data sheet.

Se quer mostrar algo útil, deixe de poluir ainda mais esse tópico, crie o seu tópico e faça medições e demonstre o que diz. Manuais não se defendem e podem ser mal interpretados...

Está piorando Gil.

Agora você quer usar um canhão para matar uma mosca.

Fundamente sua teoria sobre jitter.

Você disse que iria testar meu programa. O que te fez mudar de ideia?

Ahh, todos esses códigos, foram feitos com base em AVR. E não para PC como você pensou!

Gil, entendo que você esteja perdido, pois você não é especialista nisso. Mas o manual é de extrema importância para desenvolvimento.

Faço referência ao Manual, pois gosto de discutir assuntos com fundamento.

Eu posso muito bem falar que o AVR é o uC mais rápido do mundo. E dai? Você vai acreditar em mim? Claro que não! Não poderia fazer afirmação mais idiota. Mas como você teria certeza? Lendo fóruns na internet? hmm... vai procurar datasheets não é verdade?

Então, por favor, da um tempo. Tópico está considerado fechado. Não precisamos ficar medindo quem tem o maior membro.

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Problemas com porta paralela e mach3
« Resposta #55 Online: 29 de Dezembro de 2013, 18:24 »
Cláudio,

Só vou comentar uma coisa....

Mas espero que esteja sempre se renovando. Afinal de contas, não usamos mais válvulas.

Você realmante não me conhece, acho que sou bem mais atualizado e bem formado do que você, não é a idade que conta, meu jovem.... Eu não preciso me alongar e nem provar nada a você.

Outra coisa, você realmente não sabe de nada, .... quem disse que não se usam válvulas. Não sabe o que ocorre à sua volta, jovem? E o Magnetron do forno de microondas de sua cozinha é o que? E os satélites que usam TWTs? Você sabe o que é um TWT? E os laboratórios de física de alta anergia que usam válvulas fotomultiplicadoras? E os tubos de Raios X dos dentistas? E os aparelhos de tomografia que usam tubos de Raio X? , ... Ainda bem que elas existem, estão bem ativas e se modernizam...

Muita coisa não mudou, inclusive a física dos semicondutores, já a educação para alguns (como você) saiu da agenda.

Quanto as besteirras que você escreveu, quem sabe um dia alguém lhe ensina, se você não o destratar antes.

Realmente está tudo registrado, talvez nem isso deve estar, são coisas e falatórios inúteis a meu ver.
« Última modificação: 29 de Dezembro de 2013, 18:30 por minilathe »

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re:Problemas com porta paralela e mach3
« Resposta #56 Online: 29 de Dezembro de 2013, 18:37 »
kkkkkkk... Calma Gil! Não vá ter um ataque cardíaco!

Foi apenas uma brincadeirinha para responder a altura.

Já disse em outro post. Respeito muito sua bagagem e conhecimento.

Mas aqui você errou. É uma pena que lhe falte humildade para reconhecer isso.

E que a vida continue...  ;)
« Última modificação: 29 de Dezembro de 2013, 18:39 por Cláudio Freund »

Offline minilathe

  • How to ask questions - The Smart Way...
  • Moderador
  • CNCMASTER
  • ******
  • Posts: 4295
  • Sexo: Masculino
  • http://science-lakes.com/article43-html.html
  • Cidade - UF: Rio de Janeiro - RJ
  • Nome:: Gil Pinheiro
  • Profissão: Engenheiro e professor universitário
Re:Problemas com porta paralela e mach3
« Resposta #57 Online: 29 de Dezembro de 2013, 23:22 »
Cláudio,

kkkkkkk... Calma Gil! Não vá ter um ataque cardíaco!

Não se preocupe, estou tranquilo e saudável, mas acho que você deveria tomar uns remedinhos para a sua cabeça. Quem sabe assim deixa de truncar e torcer o que as pessoas postam.

Já disse em outro post. Respeito muito sua bagagem e conhecimento.

Mas aqui você errou. É uma pena que lhe falte humildade para reconhecer isso.

Não errei não e a minha opinião é a mesma desde o início deste tópico. Além disso, passei a conhecer uma pessoa que muito provavelmente tem dificuldades de relacionamento, não enxerga o que acontece à sua volta e não sabe reconhecer seus erros.

Sei reconhecer quando erro e sempre estou aprendendo, sou um profissional do ensino e sei bem o que é aprender.

Por outro lado, procure se informar mais e melhorar seus conhecimentos de programação em tempo real aplicada e não apenas teórica. E lembre-se, nem tudo se resolve só com a "linguagem C", o mundo do CNC e da automação é bem maior do que isso....

Offline RGG

  • Temos o que somos
  • Fuso
  • **
  • Posts: 185
  • Sexo: Masculino
  • GUIA-CNC
  • Cidade - UF: Ribeirão Preto-sp
  • Nome:: Reginaldo
Re:Problemas com porta paralela e mach3
« Resposta #58 Online: 30 de Dezembro de 2013, 06:34 »
Gil,graças a DEUS você não desisti eu aprendi muito com seus post,sou seu fâ,
Grato,Reginaldo

Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re:Problemas com porta paralela e mach3
« Resposta #59 Online: 30 de Dezembro de 2013, 08:03 »
Não se preocupe, estou tranquilo e saudável, mas acho que você deveria tomar uns remedinhos para a sua cabeça. Quem sabe assim deixa de truncar e torcer o que as pessoas postam.

Não errei não e a minha opinião é a mesma desde o início deste tópico. Além disso, passei a conhecer uma pessoa que muito provavelmente tem dificuldades de relacionamento, não enxerga o que acontece à sua volta e não sabe reconhecer seus erros.

Sei reconhecer quando erro e sempre estou aprendendo, sou um profissional do ensino e sei bem o que é aprender.

Por outro lado, procure se informar mais e melhorar seus conhecimentos de programação em tempo real aplicada e não apenas teórica. E lembre-se, nem tudo se resolve só com a "linguagem C", o mundo do CNC e da automação é bem maior do que isso....


Gil,

Mais ofensas pessoais? Acredito que você tenha boa reputação neste fórum. Não estrague isso. Você consegue fazer melhor.

Não se preocupe com minha vida pessoal. Mas se te interessa: vai muito bem, obrigado!

Não estou aqui atrás de amigos e nem de coleguinhas. Este fórum já me ajudou bastante, aprendi muito com vocês e nas mais diversas áreas.

Voltemos ao assunto técnico ok? Esse é o objetivo.

Você quer debater sobre jitter? É sério isso, ou você está ficando sem argumentos?


Vamos recapitular. Se passaram tantas coisas que pode ter caído no esquecimento.

Você afirmou:
Citar
"Tenho desconfiança que um Arduino dos mais simples consiga fazer isso com as bibliotecas padrão e o compilador C usual."

"Também já fiz vários experimentos da velocidade máxima em trens de pulsos via programa, usando um oscilosópio, não chega a algumas dezenas de KHz em linguagem C"

"Pois bem, testei um Arduino Mega-SDK (processador ATmega2560 @ 16MHz) com um programa bem simples:
 A frequência obtida no pino 13 foi de aproximadamente 70 KHz.
 Concluindo, o Arduino é capaz de acionar um motor de passo. A questão é, a que velocidade de acionamento do motor e se é possível o sincronismo do movimento com o Mach3 ou TurboCNC sem perder nenhum passo, sem jitter no acionamento do motor e com todos os eixos do CNC sincronizados. Aí, a coisa fica bem complicada se for usar um Arduino e seu ambiente padrão de programação (compilador, bibliotecas, ...) apenas...."

Te respondi dizendo:
Citar
"O que define a velocidade é a experiência do programador."

E postei exemplos de como poderia fazer funcionar, mesmo utilizando o arduino. Que é a ferramenta que o criador do tópico tem em mãos.


E então, você me desafiou:
Citar
"Ok, agora faça um Arduino gerar os sinais para o motor a partir dos sinais Step e Dir..."

"Faça um que funciona, otimizado ou não, mas o motor não deve girar apenas a algumas dezenas ou centenas de RPM, o programa não deve perder pulsos gerados pelo Mach3 ou TurboCNC e não deve haver jitter no acionamento do motor em relação ao sinal gerado pelo Mach3 ou TurboCNC. Como você mesmo disse, com o "sinal para o motor balançando" a várias centenas de KHz."


Eu como bom aluno, aceitei o desafio e elaborei, em uma hora, um programa simples com seus requisitos.

Entenda, a idéia era fazer funcionar e não criar um produto comercial a prova de falhas.

Você falou sobre jitter oriundo do pc, eu levei isso em consideração sim. Existe uma janela de 800ns. Mesmo a 25 kHz, temos uma folga de 2%.

Existem difersas maneiras de se fazer isso, inclusive mais eficientes. Porém, serviu para o propósito: Demonstrar que é possível.

Se não for pedir muito, fundamente suas argumentações. Se eu estou errado, por gentileza, aponte o erro, mas de forma sucinta.

Estou aqui para aprender. E gosto de evoluir.

 

/** * */