hi there,
im using codevisionAVR to program Atmega8L,
PWW on timer 2 (8-bit)
Clock source: System Clock
Clock value: 1000.000 kHz
Mode: Phase correct PWM top=FFh
OC2 output: Non-Inverted PWM
im changing OCR2 from 0-255 to alter the duty cycle but
when putting OCR2=0 the PWM output PIN is high,still can't figure this out it should be zero but when using fast PWM with top=ffh Mode this problem is solved.
also when i tried to use PWM on timer1(16 bit)
for both Modes still got the same problem
here's my code
any help will be highly appreciated
thanx in advance
im using codevisionAVR to program Atmega8L,
PWW on timer 2 (8-bit)
Clock source: System Clock
Clock value: 1000.000 kHz
Mode: Phase correct PWM top=FFh
OC2 output: Non-Inverted PWM
im changing OCR2 from 0-255 to alter the duty cycle but
when putting OCR2=0 the PWM output PIN is high,still can't figure this out it should be zero but when using fast PWM with top=ffh Mode this problem is solved.
also when i tried to use PWM on timer1(16 bit)
for both Modes still got the same problem
here's my code
any help will be highly appreciated
thanx in advance
Rich (BB code):
#include <stdio.h>
#include <mega8.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
// Declare your global variables here
unsigned char w[2];
int show_variable_on_lcd(int x)
{
sprintf(w,"\r %04d",x);
lcd_clear();
lcd_puts(w);
delay_ms(200);
return;
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x08;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 1000.000 kHz
// Mode: Phase correct PWM top=FFh
// OC2 output: Non-Inverted PWM
ASSR=0x00;
TCCR2=0x61;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// LCD module initialization
lcd_init(16);
while (1)
{
// Place your code here
OCR2=0;
show_variable_on_lcd(OCR2);
};
}