Ajuda com geração de sinal PWM

Estou usando a biblioteca servo.h para gerar um pulso minimo e uma máximo para uma saída pwm do Arduíno, pelo que me parece essa biblioteca é meio bugada, alguém conhece uma biblioteca melhor ou uma função na qual eu consigo gerar pulsos (mínimos e máximos) para uma saída pwm?

OBS: Preciso gerar um sinal aonde eu controlo o mim e o max em milissegundos.

Tente usar a biblioteca timer

http://arduino.cc/playground/Code/Timer#Usage

Se quiseres podes sempre tentar usar os registos para poderes atingir esse fim. Mas teras de fazer umas continhas à old school http://newbiehack.com/TimersandCountersDefaultandBasicUsage.aspx Vê este video ALias recomendo ver todos eles muito bem detalhados sobre alguns registos. Deve fazer parte dos estudos de qualquer fan do arduino :D

HugoPT: Se quiseres podes sempre tentar usar os registos para poderes atingir esse fim.

Eu diria "deves" usar sempre os registos para atingir esse fim.

É quase como o meu instrutor de condução disse acerca das mudanças automáticas: "Eu quero controlar o carro. Não quero que ele se controle a ele próprio."

Os analogWrite() e delay() não bastam para isso?

neuron_upheaval: Os analogWrite() e delay() não bastam para isso?

Sabes quando o teu computador congela? Fica ali a processar e não te dá feedback nenhum ao input do rato e teclado? Isso é o que o delay faz... fica ali congelado a literalmente contar carneirinhos. Mas enquanto o teu computador faz isso por ficar demasiado carregado, o Arduino faria isso por má programacão. Achas isso boa prática?

O analogWrite configura os pinos de saída dos timers como saídas PWM... e se for esse o caso, usar o delay é desnecessário. O problema é que o pwm pode ser rápido demais para controlar o servo.

Um pulso mínimo é um pulso com duty cycle zero e um pulso máximo, com 100%. Qual seria o problema em gerar isso? Nem é preciso PWM, pode gerar com o digitalWrite() e o delay() mesmo. Além disso, o servo provavelmente vai precisar de pulsos da ordem de grandeza de milissegundos. Se o clock do Arduino estiver em 16 MHz, milissegundos equivalem a milhares de ciclos de CPU e tendo um delay() ou fazendo malabarismos para não tê-lo, dá na mesma, ou melhor, o último é muito mais complicado e pessoas não letradas em programação, coisa comum no mundo Arduino, não teriam conhecimento suficiente para fazê-lo.

Obviamente não percebes o quão errado é usar delay()... boa sorte com os teus projectos.

Ola pessoal Tenho uma duvida para um trabalho, como gerar um PWM sem usar bibliotecas no Arduino. Agradeço desde já.

Ja leste o manual do ATmega328?