From: dave w. <dav...@gm...> - 2005-08-11 15:28:28
|
Hi, Does anyone have an example of how to drive servos using the Robostix board with PWM? I'm a complete newbie to robotics and the Atmel chip... I've tried using the AVRLib Servo example without any success and I'm getting somewhat frustrated knowing that it's probably really easy for someone that knows what they are doing. Does anyone have a basic servo example, similar to the simple led example? Thanks! Dave |
From: Dave H. <dhy...@gm...> - 2005-08-11 15:57:31
|
Hi Dave, > Does anyone have an example of how to drive servos using the Robostix > board with PWM? I'm a complete newbie to robotics and the Atmel > chip... I've tried using the AVRLib Servo example without any success > and I'm getting somewhat frustrated knowing that it's probably really > easy for someone that knows what they are doing. Does anyone have a > basic servo example, similar to the simple led example? I presume that you're talking about R/C style servos? I'm planning on adding some motor control outputs to the Tachometer example to drive an H-Bridge. it would be pretty simple to add in a mode to drive servos as well. Give me a few days... --=20 Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: <ant...@fr...> - 2005-08-11 19:26:56
|
Hi You can look for avr code examples in our repository at savannah ( http://www.nongnu.org/paparazzi ). For the servos look at http://savannah.nongnu.org/cgi-bin/viewcvs/paparazzi/paparazzi2/sw/airbor= ne/fly_by_wire/servo.c?rev=3D1.13&content-type=3Dtext/vnd.viewcvs-markup Best Regards Antoine Selon dave westwood <dav...@gm...>: > Hi, > > Does anyone have an example of how to drive servos using the Robostix > board with PWM? I'm a complete newbie to robotics and the Atmel > chip... I've tried using the AVRLib Servo example without any success > and I'm getting somewhat frustrated knowing that it's probably really > easy for someone that knows what they are doing. Does anyone have a > basic servo example, similar to the simple led example? > > Thanks! > > Dave > > > ------------------------------------------------------- > SF.Net email is Sponsored by the Better Software Conference & EXPO > September 19-22, 2005 * San Francisco, CA * Development Lifecycle Pract= ices > Agile & Plan-Driven Development * Managing Projects & Teams * Testing &= QA > Security * Process Improvement & Measurement * http://www.sqe.com/bsce5= sf > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > |
From: Brian D. <bda...@gm...> - 2005-08-12 15:38:06
|
If you want to use the 3 PWM_1 pins for servos, here's some code that will let you do it with no CPU overhead. The ATmega128 datasheet is invaluable when trying to decipher these things. Jump to the section on 16-bit Timer/Counter (Timer/Counter1 and Timer/Counter3). Don't set ACR1n (where n is A, B, or C) outside of the normal range listed below (unless you know what you're doing) or you'll probably blow your servos up. #include <avr/io.h> int main(void) { /* Set up Timer 1 OC1A, OC1B, OC1C */ DDRB |= 0xE0; /* 3 pins are outputs */ /* TCCR1A, TCCR1B, TCCR1C are the 3 */ /* configuration registers for */ /* timer 1 output compares. */ /* We configure 4 things here: */ /* 1. Select Fast PWM mode */ /* 2. Use clk/8 prescaler */ /* 3. clear on match, set at top */ /* 4. Force output compare for A,B,C */ TCCR1A = 0xAA; TCCR1B = 0x1A; TCCR1C = 0xE0; /* The Fast PWM mode selected uses */ /* ICR1 as the TOP of the counter. */ /* counting to 40000 gives us a */ /* frequency of 50 Hz, which is what */ /* servos need. */ ICR1 = 40000; /* Example showing how to set the 3 pins to different values: */ OCR1A = 1000; /* 0.5 ms pulse (full left)*/ OCR1B = 5000; /* 2.5 ms pulse (right) */ OCR1C = 3000; /* 1.5 ms pulse (centered) */ /* Normal range is 2000 - 4000. Servos */ /* may be able to go to the extremes shown*/ /* here, but probably not. */ while(1) { /* Do nothing */ /* PWM does not require ANY processing */ /* cycles! It's all hardware based. */ } } On Aug 11, 2005, at 11:28 AM, dave westwood wrote: > Hi, > > Does anyone have an example of how to drive servos using the Robostix > board with PWM? I'm a complete newbie to robotics and the Atmel > chip... I've tried using the AVRLib Servo example without any success > and I'm getting somewhat frustrated knowing that it's probably really > easy for someone that knows what they are doing. Does anyone have a > basic servo example, similar to the simple led example? > > Thanks! > > Dave > > > ------------------------------------------------------- > SF.Net email is Sponsored by the Better Software Conference & EXPO > September 19-22, 2005 * San Francisco, CA * Development Lifecycle > Practices > Agile & Plan-Driven Development * Managing Projects & Teams * Testing > & QA > Security * Process Improvement & Measurement * > http://www.sqe.com/bsce5sf > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > |
From: Dave H. <dhy...@gm...> - 2005-08-12 17:12:00
|
Hi Brian, On 8/12/05, Brian Davidson <bda...@gm...> wrote: > If you want to use the 3 PWM_1 pins for servos, here's some code that > will let you do it with no CPU overhead. The ATmega128 datasheet is > invaluable when trying to decipher these things. Jump to the section > on 16-bit Timer/Counter (Timer/Counter1 and Timer/Counter3). Thanks for the 50 Hz. I updated the Simple-Servo sample to use the same. Timer1 or Timer3 can be both be used so you can drive upto 6 servos (Simple-Servo happens to use Timer3). --=20 Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |