Attiny85 y Atmega328 para proyectos RC

0

Estoy diseñando módulos para aviones controlados por radio. La mayoría de las veces tengo que leer un pulso PWM y producir un pulso PWM entre 1000 y 2000 microsegundos. Cuando uso un Atmega328 (@ 16 MHz con cristal) no hay problemas, pero si uso un Attiny85 (oscilador interno de @ 8 MHz) obtengo un servo jitter (debido a problemas de tiempo de pulsos PWM). Mi pregunta es; ¿Se puede explicar este comportamiento con la diferencia entre un cuarzo y un oscilador R / C? Gracias ...

    
pregunta Sumer Yamaner

2 respuestas

1

En primer lugar, asegúrese de que no tenga el fusible "CKDIV8" configurado en 1, esto reducirá la frecuencia real de reloj a 1MHz si está usando el oscilador interno de 8MHz. Este es el estado predeterminado del chip ATTiny85 cuando sale de fábrica.

Además ...

Puede configurar la frecuencia interna de la CPU a 16MHz (consulte " Tabla 6-4 " en la hoja de datos) utilizando los siguientes fusibles en el diálogo de programación ...

  • EXTENDED = 0xFF
  • ALTO = 0xDC
  • LOW = 0xC1

Puede escribir esos números en hexadecimal en los 3 campos de texto en la sección "Fusibles" del cuadro de diálogo de programación del dispositivo; esto actualizará automáticamente la lista de casillas de verificación correspondientes al conjunto completo de fusibles en el dispositivo.

Si ajusta su código para compensar la frecuencia más alta, esto podría ser suficiente para darle una mejor resolución de temporización del pulso.

Utilizo estos fusibles cuando estoy conduciendo los LED de NeoPixel, que requieren tiempos poco exigentes y ajustados.

Como alternativa, como sugirió, puede utilizar simplemente un oscilador de cristal externo de hasta 20MHz. Como siempre, siga la hoja de datos y podrá hacer esto.

    
respondido por el Wossname
0
  

¿Se puede explicar este comportamiento con la diferencia entre un cuarzo y un oscilador R / C?

Posible pero poco probable.

El jitter de un t.v. El oscilador está en el rango de sub us. Y nada a largo plazo (rango ms)

El procesamiento, si se realiza correctamente, será de 100 a 200 tics por borde. Entonces, aproximadamente 400 ticks en un período de 20000 ticks, incluso si el Mic funciona a 1Mhz.

Por lo tanto, es probable que el problema sea su software.

editar: acabo de probarlo en un atmega328p que se ejecuta en 1MIPS. La generación de 5 canales de señales RC simultáneas e independientes utiliza menos del 6% de la potencia de procesamiento del mcu. o 1200 ticks / 6 - > 200 tics por canal en un período de 20 ms.

El enfoque se describe aquí: enlace

así que creo que sus problemas son probablemente con su software.

    
respondido por el dannyf

Lea otras preguntas en las etiquetas