--- In AVR-Chat@yahoogroups.com, "Philippe Habib" <phabib@...> wrote: > > Thanks for the reply. I looked through the data sheet for guidance about > the various counters but I wasn't able to figure out what I need. Maybe > someone here can help. > > I am using an ATMega 128 clocked at 16 mhz. What I'm trying to get is a > 10khz PWM from timer 1 and a 2 khz pwm from timer2. I am using the Bascom > BASIC. > > I expect that what I need to do is to use these like I use timer0 to set up > my 10ms timer tick. For that, I set the prescale to 1024 and by reloading > the timer to 99 each time my timer ISR executes, I get a 10ms tick. > > Since this is a PWM and I don't have an ISR, I'm looking for the way to set > that reload value one time when I configure the PWM. That's what I've been > unable to find. > > I have experimented with trying to set various timer related things but > haven't gotten it to work. > > Here are my declarations: > > Config Timer0 = Timer , Prescale = 1024 > Config Timer1 = Pwm , Pwm = 10 , Compare A Pwm = Clear Up , Prescale = 1 > Config Timer2 = Pwm , Pwm = On , Compare Pwm = Clear Up , Prescale = 8 > > > I'd appreciate any help from someone who knows the answer on this one. > > Thanks. > Philippe: I believe you need to use a PWM wave generation MODE that allows you to specify the "TOP" value. This value is specified in the OCRnA or ICRn register. While I haven't used an ATmega128, I did something similar with an ATmega8 to generate a PWM signal for RC servo control. I used timer1 in "fast PWM" mode, set the "TOP" value in the ICR1 register, and adjusted the duty cycle by loading different values in the OCR1A register. I assume something similar can be accomplished with the ATmega128. Rick
Message
Re: PWM question with ATMega128
2007-11-30 by Rick
Attachments
- No local attachments were found for this message.