ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 8 از 8
  1. #1
    2019/08/28
    130
    11

    درخواست رجیستر مربوط به OCR1B و OCR1A بصورت مجزا

    من روی آی سی ATMEGA32 دیپ میخوام از پایه PB4 و PB5 که همون OCR1B و OCR1A میشه میخوام جداگانه پالس PWM تولید کنم و به المنت و موتور بدم.

    رجیسترشون به چه شکل هست؟
    -برای OCR1B چی بزنم که فقط همین کار کنه؟
    -برای OCR1A چی بزنم که اینم جدا کار کنه؟

    هم موج PWM و هم Prescale ممنون.
  2. #2
    2019/08/28
    130
    11

    پاسخ : درخواست رجیستر مربوط به OCR1B و OCR1A بصورت مجزا

    نقل قول نوشته اصلی توسط shoniz

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    من روی آی سی ATMEGA32 دیپ میخوام از پایه PB4 و PB5 که همون OCR1B و OCR1A میشه میخوام جداگانه پالس PWM تولید کنم و به المنت و موتور بدم.

    رجیسترشون به چه شکل هست؟
    -برای OCR1B چی بزنم که فقط همین کار کنه؟
    -برای OCR1A چی بزنم که اینم جدا کار کنه؟

    هم موج PWM و هم Prescale ممنون.
    یعنی کسی انجام نداده؟
    همزمان از 2 پایه خروجی PWM بگیره؟
  3. #3
    2017/06/13
    1,252
    666

    پاسخ : درخواست رجیستر مربوط به OCR1B و OCR1A بصورت مجزا

    نقل قول نوشته اصلی توسط shoniz

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    یعنی کسی انجام نداده؟
    همزمان از 2 پایه خروجی PWM بگیره؟
    سلام
    سوالتون کمی مبهمه. منظورتون دقیقا چیه و کجاش مشکل دارید؟
  4. #4
    2019/08/28
    130
    11

    پاسخ : درخواست رجیستر مربوط به OCR1B و OCR1A بصورت مجزا

    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    سلام
    سوالتون کمی مبهمه. منظورتون دقیقا چیه و کجاش مشکل دارید؟
    میخوام از یک پایه OCR1B خروجی PWM بگیرم برای المنت و از پایه OCR1A خروجی بگیرم برای دور موتور
  5. #5
    2017/06/13
    1,252
    666

    پاسخ : درخواست رجیستر مربوط به OCR1B و OCR1A بصورت مجزا

    نقل قول نوشته اصلی توسط shoniz

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    میخوام از یک پایه OCR1B خروجی PWM بگیرم برای المنت و از پایه OCR1A خروجی بگیرم برای دور موتور
    خوب بگیرید؛ مشکلتون چیه؟
  6. #6
    2019/08/28
    130
    11

    پاسخ : درخواست رجیستر مربوط به OCR1B و OCR1A بصورت مجزا

    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    خوب بگیرید؛ مشکلتون چیه؟
    برای هر کدوم رجیسترش رو برام بنویسید

    مثلا راه اندازی اینقدر فرکانس روی OCR1B با این کد.
    اینقدر فرکانس برای OCR1A با این کد.

    من هرچی میزنم نمیشه.

    یا 0 هست یا 1 .

    نمیتونم تنظیم کنم.


    البته تو ویزارد هم بگید هم مابقیش رو انجام میدم.
  7. #7
    2017/06/13
    1,252
    666

    پاسخ : درخواست رجیستر مربوط به OCR1B و OCR1A بصورت مجزا

    نقل قول نوشته اصلی توسط shoniz

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    برای هر کدوم رجیسترش رو برام بنویسید

    مثلا راه اندازی اینقدر فرکانس روی OCR1B با این کد.
    اینقدر فرکانس برای OCR1A با این کد.

    من هرچی میزنم نمیشه.

    یا 0 هست یا 1 .

    نمیتونم تنظیم کنم.


    البته تو ویزارد هم بگید هم مابقیش رو انجام میدم.
    خوب تایمر 1 کمی با دوتای دیگه فرق داره و حقم دارید کمی گیج بشید. ببینید من این کد رو داخل AVR-GCC (همون Atmel Studio) کمپایل کردم و تایمر رو توی مد شماره 10 که حالت تصحیح فازه (جدولش داخل صفحه 114 دیتاشیت ATMega32 هست) راه اندازی کردم. برای تست توی پروتئوس اومدم از PINA و PINB استفاده کردم که بتونم سخت افزاری مقدار دیوتی سایکل رو تغییر بدم. شما هم با کمی تغییر میتونید داخل کدویژن ازش استفاده کنید.
    مورد بعدی این که با یک کردن صفر مقابل WGM12 توی کدی که گذاشتم، میتونید مد تایمر رو به شماره 14 که PWM سریعه تبدیلش کنید.

    #include <avr/io.h>


    int main()
    {
    PORTA = 255;
    DDRA = 0;
    PORTB = 255;
    DDRB = 0;
    DDRD = (1<<4) | (1<<5);


    TCCR1A = (1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<WGM11) | (0<<WGM10);
    TCCR1B = (1<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
    ICR1 = 0xffff;


    while(1)
    {
    OCR1A = PINA * 257;
    OCR1B = PINB * 257;
    }
    }

    راستی اینم بگم کد بالا تایمر توی مد 16 بیتی قرار داره و با این وضعیت، با فرض اینکه کریستال 16 مگاهرتزی هم به میکروکنترلر متصل کنید، بیشتر از حدود 244 هرتز نمیتونید خروجی بگیرید! برای فرکانس بیشتر ناچاراید رزولوشن رو کم کنید. در این صورت باید مد تایمر رو عوض کنید. مثل کد زیر که تایمر 10 بیتی تنظیم شده و با کریستال 16 مگاهرتزی، میتونید حدود 15 کیلوهرتز خروجی بگیرید:

    #include <avr/io.h>


    int main()
    {
    PORTA = 255;
    DDRA = 0;
    PORTB = 255;
    DDRB = 0;
    DDRD = (1<<4) | (1<<5);


    TCCR1A = (1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<WGM11) | (1<<WGM10);
    TCCR1B = (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
    ICR1 = 0xffff;


    while(1)
    {
    OCR1A = PINA * 4;
    OCR1B = PINB * 4;
    }
    }
    ویرایش توسط hossein.m98 : 2021/03/16 در ساعت 18:34 دلیل: تکمیل
  8. #8
    2019/08/28
    130
    11

    پاسخ : درخواست رجیستر مربوط به OCR1B و OCR1A بصورت مجزا

    نقل قول نوشته اصلی توسط hossein.m98

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    خوب تایمر 1 کمی با دوتای دیگه فرق داره و حقم دارید کمی گیج بشید. ببینید من این کد رو داخل AVR-GCC (همون Atmel Studio) کمپایل کردم و تایمر رو توی مد شماره 10 که حالت تصحیح فازه (جدولش داخل صفحه 114 دیتاشیت ATMega32 هست) راه اندازی کردم. برای تست توی پروتئوس اومدم از PINA و PINB استفاده کردم که بتونم سخت افزاری مقدار دیوتی سایکل رو تغییر بدم. شما هم با کمی تغییر میتونید داخل کدویژن ازش استفاده کنید.
    مورد بعدی این که با یک کردن صفر مقابل WGM12 توی کدی که گذاشتم، میتونید مد تایمر رو به شماره 14 که PWM سریعه تبدیلش کنید.

    #include <avr/io.h>


    int main()
    {
    PORTA = 255;
    DDRA = 0;
    PORTB = 255;
    DDRB = 0;
    DDRD = (1<<4) | (1<<5);


    TCCR1A = (1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<WGM11) | (0<<WGM10);
    TCCR1B = (1<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
    ICR1 = 0xffff;


    while(1)
    {
    OCR1A = PINA * 257;
    OCR1B = PINB * 257;
    }
    }

    راستی اینم بگم کد بالا تایمر توی مد 16 بیتی قرار داره و با این وضعیت، با فرض اینکه کریستال 16 مگاهرتزی هم به میکروکنترلر متصل کنید، بیشتر از حدود 244 هرتز نمیتونید خروجی بگیرید! برای فرکانس بیشتر ناچاراید رزولوشن رو کم کنید. در این صورت باید مد تایمر رو عوض کنید. مثل کد زیر که تایمر 10 بیتی تنظیم شده و با کریستال 16 مگاهرتزی، میتونید حدود 15 کیلوهرتز خروجی بگیرید:

    #include <avr/io.h>


    int main()
    {
    PORTA = 255;
    DDRA = 0;
    PORTB = 255;
    DDRB = 0;
    DDRD = (1<<4) | (1<<5);


    TCCR1A = (1<<COM1A1) | (0<<COM1A0) | (1<<COM1B1) | (0<<COM1B0) | (1<<WGM11) | (1<<WGM10);
    TCCR1B = (0<<WGM13) | (1<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
    ICR1 = 0xffff;


    while(1)
    {
    OCR1A = PINA * 4;
    OCR1B = PINB * 4;
    }
    }
    ممنون
    فکر میکنم مشکلم حل شد با این نمونه ای که دادید.
    تصحیح فاز

    عالیه امروز تست میکنم
نمایش نتایج: از 1 به 8 از 8

موضوعات مشابه

  1. درخواست کمک مربوط به پروژه آردوینو
    توسط HOOHOOO در انجمن خانواده Arduino
    پاسخ: 0
    آخرين نوشته: 2018/05/19, 00:06
  2. درخواست مدار تایمر با دو رله مجزا
    توسط mpsms در انجمن مدارهای آنالوگ و مدارهای مجتمع
    پاسخ: 10
    آخرين نوشته: 2018/03/07, 09:23
  3. پاسخ: 0
    آخرين نوشته: 2013/07/23, 09:10
  4. کمک در مورد تولید فرکانس 1 کیلو هرتز در OCR1A
    توسط avr1083 در انجمن میکروکنترلرهای AVR
    پاسخ: 11
    آخرين نوشته: 2012/03/03, 21:15
  5. پاسخ: 1
    آخرين نوشته: 2010/08/17, 11:37

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •