دوستان تو عکس زیر که مد phase correct Modeهست . و من میخوام مقادیر ocra1 رو تغییر بدم با اینتراپت هایی که میشه از TOP و BOTOM و اینتراپت لحظه ی تطبیق گرفت .
برای اینکار باید چیزی رو یا مفهومی رو دقت کنم ؟
مثلا تو عکس زیر من باید برای تغییر مقدار - چه چیزهایی رو بفهمم؟که تو یک پریود که از TOP تا TOP هست برای تغییرشون استفاده کنم؟

اینم کدی که برای اتمگا 8 و تایمر یک 16 بیتی نوشتم .مقدار OCR1A رو من لحظه ی اول 400 گذاشتم و بعد اون خواستم که بیام با اینتراپتی که تو TOP اتفاق میاوفته مقدارشو تغییر بدم . ولی این اتفاق نمیاوفته.دلیلش چی میتونه باشه؟
برای اینکار باید چیزی رو یا مفهومی رو دقت کنم ؟
مثلا تو عکس زیر من باید برای تغییر مقدار - چه چیزهایی رو بفهمم؟که تو یک پریود که از TOP تا TOP هست برای تغییرشون استفاده کنم؟
اینم کدی که برای اتمگا 8 و تایمر یک 16 بیتی نوشتم .مقدار OCR1A رو من لحظه ی اول 400 گذاشتم و بعد اون خواستم که بیام با اینتراپتی که تو TOP اتفاق میاوفته مقدارشو تغییر بدم . ولی این اتفاق نمیاوفته.دلیلش چی میتونه باشه؟
[FONT=Yekan]#include <avr/io.h>[/FONT]
#define F_CPU 8000000UL
#include <avr/interrupt.h>
int i;
ISR(TIMER1_CAPT_vect )
{
PORTD ^= 0x01;
OCR1A = 750;
}
int main(void)
{
/* Replace with your application code */
DDRB = 0xff;
DDRD = 0xff;
DDRC = 0xff;
sei();
TCCR1A = (1<<COM1A1) | (1<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (1<<WGM11) | (0<<WGM10);
TCCR1B = (1<<WGM13) | (0<<WGM12) | (0<<CS12) | (1<<CS11) | (1<<CS10);
TIMSK = (1<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (1<<TOIE1);
ICR1 = 800;
OCR1A = 400;
while (1)
{
}
}
دیدگاه