اطلاعیه

Collapse
No announcement yet.

تغییر دیوتی سایکل در مد phase correct Mode اتمگا

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    تغییر دیوتی سایکل در مد phase correct Mode اتمگا

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

Name:	Screenshot 2021-10-01 104606.jpg
Views:	1
Size:	21.7 کیلو بایت
ID:	1126285


    اینم کدی که برای اتمگا 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)
    {
    }
    }


    به سمت نور خورشيد حرکت کن،تو ميتوني تابش خورشيد رو حس کني ،حتي اگه کور باشي.
    (پيش به سوي هدف)

    #2
    پاسخ : تغییر دیوتی سایکل در مد phase correct Mode اتمگا

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


    اینم کدی که برای اتمگا 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)
    {
    }
    }


    با درود

    دیدگاه

    لطفا صبر کنید...
    X