با سلام.
من میخام با میکرو اتمگا 128، 2100 پالس با فرکانس 25 کیلو هرتز تولید کنم و سپس در هر لبه بالا رونده این فرکانس بیام ADC میکرو رو بخونم...
کسی میدونه فقط با تایمر یک پالس درست میکنیم؟ این پالس چند تاست؟ فقط یدونه است؟ چطوری میتونم به سطح صفر و یک این پالس دست پیدا کنم؟
من اومدم از مد FAST PWM تایمر یک استفاده کردم و پالس با فرکانس 25 کیلوهرتز را تولید کردم...حالا نمیدونم واسه اینکه این پالسها دقیقا 2100 باشد و در هر سطح های این فرکانسها ADC رو بخونم چی کار کنم؟
برای 2100 تا بیام از حلقه for استفاده کنم مثلا بگم:
و بعدش بیام اینتراپت رو فعال کنم و توی اینتراپت ADC رو بخونم؟
کسی میتونه کمک کنه؟
من میخام با میکرو اتمگا 128، 2100 پالس با فرکانس 25 کیلو هرتز تولید کنم و سپس در هر لبه بالا رونده این فرکانس بیام ADC میکرو رو بخونم...
کسی میدونه فقط با تایمر یک پالس درست میکنیم؟ این پالس چند تاست؟ فقط یدونه است؟ چطوری میتونم به سطح صفر و یک این پالس دست پیدا کنم؟
من اومدم از مد FAST PWM تایمر یک استفاده کردم و پالس با فرکانس 25 کیلوهرتز را تولید کردم...حالا نمیدونم واسه اینکه این پالسها دقیقا 2100 باشد و در هر سطح های این فرکانسها ADC رو بخونم چی کار کنم؟
برای 2100 تا بیام از حلقه for استفاده کنم مثلا بگم:
کد:
for(k=1; k<2100 ;k++) { TCCR1A = (1<<COM1A1)|(0<<COM1A0)|(1<<COM1B1)|(0<<COM1B0)|(0<<COM1C1)|(0<<COM1C0)|(1<<WGM11)|(0<<WGM10); TCCR1B = (0<<ICNC1) |(0<<ICES1) | (1<<WGM13) |(1<<WGM12 )|(0<<CS12 )|(0<<CS11 )|(1<<CS10 ); // N=1 ICR1L = 99; OCR1AL=ICR1L*0.5;}
کد:
interrupt [TIM1_OVF] void timer1_ovf_isr(void) { adc_value=read_adc(0); }
دیدگاه