Hi Martin, > I'm having what I can only classify as annoying. I implemented a simple servo controller with a tiny 15 ( two position ) and it worked perfectly. I've also done some simple PWM stuff with Timer 2 on the Mega 8. Now, however I need to use the 16 bit timer to generate PWM. I need a bare minimum of 12 bits precision but more would be better ( 256 servo positions, 60 Hz update rate ). To that end I've tried to get 16 bit phase and frequency correct PWM working and I've had no luck. In the simulator the timer counts up to TOP (in my case 0xFFFE ) and promptly overflows to zero. Now it's my understanding that it is supposed to count up then down ( certainly that's how it works in 8 bit mode ). It wouldn't bug me so much, it overflowing, if I was able to get something useful out of it. However because it is overflowing the output pin is only getting set or cleared ( depending on the setting of the COM1nX pins ). Following is the code I use to initialize it. I wrote some code for the ATMega128 which uses Timer3, but it should work on Timer1 with a minor tweak (changing the SERVO_1 and SERVO_2 definitions to be 1A and 1B rather than 3A and 3B).. It uses the Fast PWM mode runs the timer at 2MHz, which means it will overflow every 32.7 msec (or 30.5 times per second). The sample code can be found here: <http://websvn.gumstix.com/listing.php?repname=Buildroot&path=%2Fbranches%2Fprojects%2Frobostix%2F&rev=0&sc=0> You'll be prompted for a username and password, use the word gumstix for both. To get the complete example to build, you'll need the Common directory, the Simple-Servo directory, and the Rules.mk file. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/
Message
Re: [AVR-Chat] Phase and Frequency Correct PWM on a Mega 8
2005-11-09 by Dave Hylands
Attachments
- No local attachments were found for this message.