From: Shane K. <ski...@uc...> - 2008-06-17 18:52:36
|
Hi, I would like to generate a square wave with 50% duty cycle of any frequency between 1kHz and 10kHz. I would like to have it in place of or with the heart beat signal with the the current bootloader. Has anyone done this already? No use reinventing the wheel. ~Shane |
From: Dave H. <dhy...@gm...> - 2008-06-17 19:59:49
|
Hi Shane, > I would like to generate a square wave with 50% duty cycle of any > frequency between 1kHz and 10kHz. I would like to have it in place of > or with the heart beat signal with the the current bootloader. Has > anyone done this already? No use reinventing the wheel. You should be able to do it using one of thetimer modes in the ATMega128. You would do something similar to the servo script found in robostix/gumstix/i2c-io/servo <http://websvn.gumstix.com/filedetails.php?repname=Buildroot&path=%2Fbranches%2Fprojects%2Frobostix%2Fgumstix%2Fi2c-io%2Fservo> It depends on how precise the frequency needs to be as well. Let's say I want 5 kHz. That's a period of 200 usec. So you could use the same pre-scalar as the servo example, but set ICR to 200 * 2 = 400. And set the OCR register to 50% of that. Read up in the ATMega128 datasheet for all of the details. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |
From: Shane K. <ski...@uc...> - 2008-07-08 15:28:27
|
Hi Dave, I'm finally to a point where I can use this e-mail...I modded the 'servo' code (using the i2c-io code) I want to use PWM 3A,3B,3C and 1A at 5kHz. Here's what I am doing: i2c-io 0x0b wr TCCR1A 0xAA i2c-io 0x0b wr TCCR1B 0x1A i2c-io 0x0b wr ICR1 400 i2c-io 0x0b wr TCNT1 0 i2c-io 0x0b wr OCR1A 200 i2c-io 0x0b wr TCCR3A 0xAA i2c-io 0x0b wr TCCR3B 0x1A i2c-io 0x0b wr ICR3 400 i2c-io 0x0b wr TCNT3 0 i2c-io 0x0b wr OCR3A 200 i2c-io 0x0b wr OCR3B 200 i2c-io 0x0b wr OCR3C 200 #timer1 i2c-io 0x0b setdir b.5 out i2c-io 0x0b setdir b.6 out i2c-io 0x0b setdir b.7 out #timer 3 i2c-io 0x0b setdir e.3 out i2c-io 0x0b setdir e.4 out i2c-io 0x0b setdir e.5 out i2c-io 0x0b wr OCR3A 200 i2c-io 0x0b wr OCR3B 200 i2c-io 0x0b wr OCR3C 200 i2c-io 0x0b wr OCR1A 200 If I want to run the code at 2kHz (or 500usec)I would make ICR = 500*2=1000 and OCR = 500? Does this all look right, I don't really have access to a scope at the moment. Thanks! ~Shane -----Original Message----- From: gum...@li... [mailto:gum...@li...] On Behalf Of Dave Hylands Sent: Tuesday, June 17, 2008 2:00 PM To: General mailing list for gumstix users. Subject: Re: [Gumstix-users] add PWM to 12c bootloader Hi Shane, > I would like to generate a square wave with 50% duty cycle of any > frequency between 1kHz and 10kHz. I would like to have it in place of > or with the heart beat signal with the the current bootloader. Has > anyone done this already? No use reinventing the wheel. You should be able to do it using one of thetimer modes in the ATMega128. You would do something similar to the servo script found in robostix/gumstix/i2c-io/servo <http://websvn.gumstix.com/filedetails.php?repname=Buildroot&path=%2Fbranche s%2Fprojects%2Frobostix%2Fgumstix%2Fi2c-io%2Fservo> It depends on how precise the frequency needs to be as well. Let's say I want 5 kHz. That's a period of 200 usec. So you could use the same pre-scalar as the servo example, but set ICR to 200 * 2 = 400. And set the OCR register to 50% of that. Read up in the ATMega128 datasheet for all of the details. -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ gumstix-users mailing list gum...@li... https://lists.sourceforge.net/lists/listinfo/gumstix-users |
From: Dave H. <dhy...@gm...> - 2008-07-08 23:35:52
|
HI Shane, On Tue, Jul 8, 2008 at 8:28 AM, Shane Kirkbride <ski...@uc...> wrote: > Hi Dave, > I'm finally to a point where I can use this e-mail...I modded the 'servo' > code (using the i2c-io code) I want to use PWM 3A,3B,3C and 1A at 5kHz. > Here's what I am doing: > i2c-io 0x0b wr TCCR1A 0xAA > i2c-io 0x0b wr TCCR1B 0x1A > > i2c-io 0x0b wr ICR1 400 > i2c-io 0x0b wr TCNT1 0 > > i2c-io 0x0b wr OCR1A 200 > > i2c-io 0x0b wr TCCR3A 0xAA > i2c-io 0x0b wr TCCR3B 0x1A > > i2c-io 0x0b wr ICR3 400 > i2c-io 0x0b wr TCNT3 0 > > i2c-io 0x0b wr OCR3A 200 > i2c-io 0x0b wr OCR3B 200 > i2c-io 0x0b wr OCR3C 200 > #timer1 > i2c-io 0x0b setdir b.5 out > i2c-io 0x0b setdir b.6 out > i2c-io 0x0b setdir b.7 out > #timer 3 > i2c-io 0x0b setdir e.3 out > i2c-io 0x0b setdir e.4 out > i2c-io 0x0b setdir e.5 out > > i2c-io 0x0b wr OCR3A 200 > i2c-io 0x0b wr OCR3B 200 > i2c-io 0x0b wr OCR3C 200 > i2c-io 0x0b wr OCR1A 200 > If I want to run the code at 2kHz (or 500usec)I would make ICR = 500*2=1000 > and OCR = 500? > Does this all look right, I don't really have access to a scope at the > moment. Thanks! Looks reasonable, although you're writing most of the OCR registers multiple times and not writing all of them (for example OCR1B and OCR1C aren't being written). > ~Shane > -----Original Message----- > From: gum...@li... > [mailto:gum...@li...] On Behalf Of Dave > Hylands > Sent: Tuesday, June 17, 2008 2:00 PM > To: General mailing list for gumstix users. > Subject: Re: [Gumstix-users] add PWM to 12c bootloader > > Hi Shane, > >> I would like to generate a square wave with 50% duty cycle of any >> frequency between 1kHz and 10kHz. I would like to have it in place of >> or with the heart beat signal with the the current bootloader. Has >> anyone done this already? No use reinventing the wheel. > > You should be able to do it using one of thetimer modes in the > ATMega128. You would do something similar to the servo script found in > > robostix/gumstix/i2c-io/servo > <http://websvn.gumstix.com/filedetails.php?repname=Buildroot&path=%2Fbranche > s%2Fprojects%2Frobostix%2Fgumstix%2Fi2c-io%2Fservo> > > It depends on how precise the frequency needs to be as well. > > Let's say I want 5 kHz. That's a period of 200 usec. So you could use > the same pre-scalar as the servo example, but set ICR to 200 * 2 = > 400. And set the OCR register to 50% of that. > > Read up in the ATMega128 datasheet for all of the details. > > -- > Dave Hylands > Vancouver, BC, Canada > http://www.DaveHylands.com/ > > ------------------------------------------------------------------------- > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > > > ------------------------------------------------------------------------- > Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW! > Studies have shown that voting for your favorite open source project, > along with a healthy diet, reduces your potential for chronic lameness > and boredom. Vote Now at http://www.sourceforge.net/community/cca08 > _______________________________________________ > gumstix-users mailing list > gum...@li... > https://lists.sourceforge.net/lists/listinfo/gumstix-users > -- Dave Hylands Vancouver, BC, Canada http://www.DaveHylands.com/ |