Sir i have to generate pulse at 4 saperate pins of atmega16 with time period of each pulse would be 250ms....so plz suggest me how can i do it...i have also studied about the delay generation concept of atmega16 MCU.sir is it possible while using a single timer(0).i also tried to generate a code...so plz check it out sr...it is not showing any error while compiling but it doesn't show the output according to me....my output pins are PB3,PD4,PD5,PD7......and my code is
#include<avr/io.h>
#include<util/delay.h>
#include<avr/interrupt.h>
void t0_init(void);
#define FREQ 1000000 // crsytal freqeuncy
#define PRECSALER 1024
#define F_OUT 4 // output frequency
#define OCR0_VALUE ((((FREQ)/PRECSALER)/F_OUT)-1)
int main()
{
t0_init(); // timer initialize
sei(); // enable global interrupts
while(1);
}
void t0_init()
{
// WGM0[1:0]= 10, for CTC mode
// COM0[1:0]= 01, to toggle OC0 on compare match
// CS0[2:0] =010. for prescaler 8
TCCR0=(1<<WGM01)|(1<<COM00)|(1<<CS02)|(1<<CS00);
DDRB|=(1<<PB3);
DDRD|=(1<<PD4)|(1<<PD5)|(1<<PD7); // select as output pin
TIMSK|=(1<<TOIE0); //enable output compare interrupt
}
ISR(TIMER0_COMP_vect) // interrupt subroutine
{
OCR0=(uint8_t)OCR0_VALUE; //put OCR value
}