From: Dave H. <dhy...@gm...> - 2006-08-21 05:27:46
|
Hi Rodrigo, > reading more in depth how PWM is generated at the mega128, guess it wont > work as is for a digital servo. > whereas a standard servo works like this and from what i undersantd, the > mega128 generates PWM as: > _____ _____ > | | | | > | | | | > | |____________| |____________ > <-------------------------> <--------------------------> > cycle 20ms cycle 20ms That's just one of many methods that PWM can ge generated, > A digital servo signal expect a PWM like this (the widht of pulse also > varies like standard) > __ __ __ __ __ __ __ __ __ __ __ __ > | | | | | | | | | | | | | | | | | | | | | | | | > | | | | | | | | | | | | | | | | | | | | | | | | > | |_| |_| |_ | |_| |_| |_| |_ | |_| |_| |_| |_ | | > <---------------------------><------------------------------> > cycle 20ms cycle 20ms > So to sum up a digital servo expect a more spreaded signal in the same cycle > of 20 ms > As of what i read, it expects 6 pules in one cycle so in one second a > standard servo receives 50 pulses and a digital one 300. > So to set the PWM generator i should generate a shorter pulse 6 times like > in a loop what do you think? Change the 40000 to 40000/6 = 6667, and you'll get 6 times as many pulses in the same time period. > On the other hand, in the script, you are using fast PWM with compare output > mode right? > so on compare match OCnA/OCnB/OCnC will clear and set at TOP, this is set on > TCCRnA > and then you set TCCRnB fot Fast PWM with ICRn for saving TOP and prescaler > 8 > I guess i understand now the script, but setting TOP at 40000 means a PWM > cycle of 40 milisecs? wouldnt it be about 20 milisecs the needed? or am i > doing something wrong? The 40000 means 40000 ticks. With a 16 MHz clock and a divide by 8 prescalar, this means 2000000 ticks/sec, which means each tick is 1/2 usec. 40000 * 1/2 = 20000 usec = 20 millisec. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |