atmega16 + servomotor(SG90) + 8bit timer

Stačí chvilka hledání :

Je to tam jednom v odstavci vedle obrázku s polohama serva a impulzama do něj. Při použití interního oscilátoru (1/2/4/8 MHz) jsi schopný se dostat na 30,5 Hz nebo 61 Hz.

Pokud bys trval na 50 Hz, pak bys musel použít krystal 3,2768MHz (nebo jiný, vypočítaný z požadované frekvence, rozlišení čítače a jednoho z dostupných prescalerů), startovat impulzy druhým časovačem nebo signál generovat zcela softwarově.


To byla reakce na Tvojí prosbu o radu (první příspěvek) a teď odpověď na Tvou otázku (druhý příspěvek) :

Pochopil jsi to správně. Nicméně pokud použiješ HW PWM, pak s tím má procesor daleko méně práce, než když budeš generovat signál plně softwarově. Zkusil bych PWM s frekvencema, jak jsem psal výše (30,5 nebo 61 Hz). Pokud by to dělalo potíže, pak by asi záleželo na tom, co všechno má procesor na starosti.

  1. Pokud v podstatě jenom generuje signál pro servo a na polohu dostává po UARTu nebo AD převodníkem a nic jinýho, pak bych asi sahnul po té variantě s použitím jednoho časovače v PWM režimu na generování pulzu s tím, že při TOV by se vypnul a druhý časovač v CTC režimu nastavený tak, aby k přerušení docházelo s periodou cca 50 Hz a startoval bych PWM časovač pomocí něho.

  2. Pokud by toho měl na starosti mnohem více, pak bych asi sahnul po variantě HW PWM + krystal.