NOTICE توجه: این یک موضوع قدیمی است که آخرین پست ارسالی آن مربوط به 3110 روز قبل است . لطفا فقط پاسخ ها ، سوالات و درخواست های 100 درصد مرتبط را به آن ارسال کنید و برای درخواست ها و سوالات جدید موضوع جدیدی را ایجاد کنید
صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از 1 به 20 از 22

موضوع: سوال درباره ی avr با سی++

  1. #1
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2015
    نوشته ها
    30
    تشکر
    18
    تشکر شده 2 بار در 2 پست

    پیش فرض سوال درباره ی avr با سی++

    یک دیتای 8 بیتی به طور مدام از پورت b بخواند و بررسی کند اگر عدد زوج است استیک پالس مربعی با فرکان 1 مگاهرتز و اگر فرد است فرکانس با 2 مگاهرتز باشد.
    من توی خواندن یک مقدار از پورت مشکل دارم میشه راهنماییم کنید

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2
    کاربر فعال
    تاریخ عضویت
    May 2014
    نوشته ها
    198
    تشکر
    14
    تشکر شده 79 بار در 71 پست

    پیش فرض

    سلام، اول اینکه میکرو atmega هست یا atxmega
    دوم اینکه مشکل رو بیشتر توضیح بدید لطفا

  4. #3
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2015
    نوشته ها
    30
    تشکر
    18
    تشکر شده 2 بار در 2 پست

    پیش فرض

    atmega16
    (یک دیتای 8 بیتی به طور مدام از پورت b بخواند) من اینجا مشکل دارم

  5. #4
    کاربر علاقه مند
    تاریخ عضویت
    May 2011
    نام
    احسان باقری
    نوشته ها
    61
    تشکر
    47
    تشکر شده 35 بار در 29 پست

    پیش فرض

    دزست کردن فرکانس 2 مگا هرتز با avr فکر نکنم عملی باشه البته با دقت پایین فکر کنم بشه تا به حال این فرکانس رو امتحان نکردم
    کامپایلر یا بهتره بگم ide که استفاده میکنی چی هست؟
    تو کدویژن اینطوری باید بنویسی val=pinx که x همون پورت مورد نظر هست

  6. #5
    کاربر فعال
    تاریخ عضویت
    May 2014
    نوشته ها
    198
    تشکر
    14
    تشکر شده 79 بار در 71 پست

    پیش فرض

    روی atmega ایجاد این فرکانس فکر نمیکنم امکان پذیر باشه، البته با کلاک 16 مگاهرتز که سری های 16pu میتونن داشته باشن شاید، atxmega میتونه با کلاک 32 مگاهرتز کارکنه و میشه روی پین هاش به فرکانس بالا رسید، البته تقلب هم میشه کرد مثلا از کلاک spi استفاده کرد که روی atmega هم میشه به فرکانس بالا رسید.

    - - - Updated - - -

    کد:
    void MB_PortInit (void *Port,INT16U BaudRate,INT8U Parity,INT8U StopBit){
    	INT16U UBRR;
    	
    	(void)Port; /* Avoid compiler warning. Port is not used in ATMEGA. */
    	
    	UBRR = ((CPU_FREQ/16) / BaudRate) - 1;
    	
    	UBRRH =UBRR>>8;
    	UBRRL = UBRR;
    	
    	UCSRB |= 1 << RXEN;
    	UCSRB |= 1 << TXEN;
    	
    	UCSRC = (1 << URSEL) | (Parity << UPM0) | (StopBit << USBS) | (3 << UCSZ0);
    	
    	SerialPort_DDR &= ~(1 << SerialPort_RXD); /* Set RXD to input */
    	SerialPort_DDR |= 1 << SerialPort_TXD;    /* Set TXD to output */
    	SerialPort_DDR |= 1 << SerialPort_REN;    /* Set REN to output */
    	SerialPort_DDR |= 1 << SerialPort_DEN;    /* Set DEN to output */
    	
    	SerialPort &= ~(1 << SerialPort_REN);	  /* Listen mode */
    	SerialPort &= ~(1 << SerialPort_DEN);	  /* Listen mode */
    }

  7. تشکرها از این نوشته :


  8. #6
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2015
    نوشته ها
    30
    تشکر
    18
    تشکر شده 2 بار در 2 پست

    پیش فرض

    خب قبلش باید توی اون پورت یه چیزی باشه که بعد طبق گفته شما اونو بریزم توی val , اونو باید چیکار کنم؟
    میشه این تیکه اولشو کد کاملش برام بنویسید . ( توی کدویژن)

  9. #7
    کاربر فعال
    تاریخ عضویت
    May 2014
    نوشته ها
    198
    تشکر
    14
    تشکر شده 79 بار در 71 پست

    پیش فرض

    با این کد حتما سریال پورت ATMEGA کار خواهد کرد، برای کد کامل به پست MODBUS for AVR مراجعه کنید و کد رو بگیرید.

    - - - Updated - - -

    http://www.iranmicro.ir/forum/14860-modbus-avr.html

  10. تشکرها از این نوشته :


  11. #8
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2015
    نوشته ها
    30
    تشکر
    18
    تشکر شده 2 بار در 2 پست

    پیش فرض

    نقل قول نوشته اصلی توسط erfanjeddy نمایش پست ها
    روی atmega ایجاد این فرکانس فکر نمیکنم امکان پذیر باشه، البته با کلاک 16 مگاهرتز که سری های 16pu میتونن داشته باشن شاید، atxmega میتونه با کلاک 32 مگاهرتز کارکنه و میشه روی پین هاش به فرکانس بالا رسید، البته تقلب هم میشه کرد مثلا از کلاک spi استفاده کرد که روی atmega هم میشه به فرکانس بالا رسید.

    - - - Updated - - -

    کد:
    void MB_PortInit (void *Port,INT16U BaudRate,INT8U Parity,INT8U StopBit){
        INT16U UBRR;
        
        (void)Port; /* Avoid compiler warning. Port is not used in ATMEGA. */
        
        UBRR = ((CPU_FREQ/16) / BaudRate) - 1;
        
        UBRRH =UBRR>>8;
        UBRRL = UBRR;
        
        UCSRB |= 1 << RXEN;
        UCSRB |= 1 << TXEN;
        
        UCSRC = (1 << URSEL) | (Parity << UPM0) | (StopBit << USBS) | (3 << UCSZ0);
        
        SerialPort_DDR &= ~(1 << SerialPort_RXD); /* Set RXD to input */
        SerialPort_DDR |= 1 << SerialPort_TXD;    /* Set TXD to output */
        SerialPort_DDR |= 1 << SerialPort_REN;    /* Set REN to output */
        SerialPort_DDR |= 1 << SerialPort_DEN;    /* Set DEN to output */
        
        SerialPort &= ~(1 << SerialPort_REN);      /* Listen mode */
        SerialPort &= ~(1 << SerialPort_DEN);      /* Listen mode */
    }
    ممنون ولی الان سوال رو نگاه کردم مگا نبوده کیلو بوده

  12. #9
    کاربر فعال
    تاریخ عضویت
    May 2014
    نوشته ها
    198
    تشکر
    14
    تشکر شده 79 بار در 71 پست

    پیش فرض

    خوب بهتر حالا با یه تایمر میتونی به راحتی به این فرکانس برسی

  13. #10
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2015
    نوشته ها
    30
    تشکر
    18
    تشکر شده 2 بار در 2 پست

    پیش فرض

    من اون کد رو دیدم ولی راستش چیزی نفهمیدم . من تازه شروع کردم و چیز زیادیم نمیدونم
    به همین خاطر مشکلم توی قسمت اول رفع نشد ...میشه ساده تر توضیح بدین

  14. #11
    کاربر علاقه مند
    تاریخ عضویت
    May 2011
    نام
    احسان باقری
    نوشته ها
    61
    تشکر
    47
    تشکر شده 35 بار در 29 پست

    پیش فرض

    نقل قول نوشته اصلی توسط mahdieh721 نمایش پست ها
    من اون کد رو دیدم ولی راستش چیزی نفهمیدم . من تازه شروع کردم و چیز زیادیم نمیدونم
    به همین خاطر مشکلم توی قسمت اول رفع نشد ...میشه ساده تر توضیح بدین
    شما یه متغیر تعریف کن از نوع unsighned char یا int بعد مقدار پوزت رو بریز داخلش تمام
    کد:
    unsigned char Val;
    
    
    
    void main();
    {
    DDRB=0x00;
    
    while(1)
    {
    Val=PINB;
    }
    }
    فقط باید یادت باشه هر دفه باید دستور خوندن پورت رو اجرا کنی تا تغییرات ثبت بشه
    ویرایش توسط ehsanbagheri : 07-10-2015 در ساعت 17:18

  15. تشکرها از این نوشته :


  16. #12
    کاربر فعال
    تاریخ عضویت
    May 2014
    نوشته ها
    198
    تشکر
    14
    تشکر شده 79 بار در 71 پست

    پیش فرض

    من واقعا شرمندم، پورت B رو سریال خوندم و کد سریال براتون فرستادم،
    کدی که آقای احسان فرستادن کاملا درست و عملیه فقط اگه بازم استباه نکنم PINB باید بشه PORTB
    در خط DDRB=0x00 پورت B به حالت ورودی تنظیم شده، وقتی میخوای مقداری رو از پورت بخونی باید تبدیلش کنی به ورودی، بعد رجیستر PORTB رو میخونی،
    val=PORTB همون عمل خوندن رجیستره،
    یک حلقه بینهایت هم همیشه هست، فعلا همینقدر بدونید کافیه که میکرو هرگز نباید به آخر تابع main برسه.

  17. تشکرها از این نوشته :


  18. #13
    کاربر علاقه مند
    تاریخ عضویت
    May 2011
    نام
    احسان باقری
    نوشته ها
    61
    تشکر
    47
    تشکر شده 35 بار در 29 پست

    پیش فرض

    Port بزایه نوشتن رویه پورت هست

  19. #14
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2015
    نوشته ها
    30
    تشکر
    18
    تشکر شده 2 بار در 2 پست

    پیش فرض

    برای تولید موج پالس مربعی باید چیکار کنم؟

  20. #15
    کاربر فعال
    تاریخ عضویت
    May 2014
    نوشته ها
    198
    تشکر
    14
    تشکر شده 79 بار در 71 پست

    پیش فرض

    یه پین رو صفر و یک بکنی مربعی میشه دیگه

  21. #16
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2015
    نوشته ها
    30
    تشکر
    18
    تشکر شده 2 بار در 2 پست

    پیش فرض

    نقل قول نوشته اصلی توسط erfanjeddy نمایش پست ها
    یه پین رو صفر و یک بکنی مربعی میشه دیگه
    ممنون توی فرکانسش مشکل داشتم که درست شد.

  22. تشکرها از این نوشته :


  23. #17
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2015
    نوشته ها
    30
    تشکر
    18
    تشکر شده 2 بار در 2 پست

    پیش فرض

    یک شمارنده از 9 تا 0 با استفاده از IC مبدل BCD به 7segment ، 7447 پياده سازي كنيد.
    من برای این سوال این کد رو نوشتم ولی توی شبیه سازی یک سری کاراکتر زیادی چاپ میکند(البته بعد از چاپ 9 تا 0)
    کسی میدونه اشکال کار کجاست؟


    #include <mega32.h>
    #include <delay.h>
    unsigned char seven_seg_code(unsigned char num);
    void main(void)
    {
    unsigned char i;
    DDRC=0xff;
    while (1)
    {
    for (i=9;i>=0;i--)
    {
    PORTC=seven_seg_code(i);
    delay_ms(1000);
    }
    }
    }
    unsigned char seven_seg_code(unsigned char num)
    {
    unsigned char out;
    switch(num)
    {
    case 0: out=0b0000;break;
    case 1: out=0b0001;break;
    case 2: out=0b0010;break;
    case 3: out=0b0011;break;
    case 4: out=0b0100;break;
    case 5: out=0b0101;break;
    case 6: out=0b0110;break;
    case 7: out=0b0111;break;
    case 8: out=0b1000;break;
    case 9: out=0b1001;break;
    default:break;
    }
    return out;
    }

  24. #18
    کاربر فعال
    تاریخ عضویت
    May 2014
    نوشته ها
    198
    تشکر
    14
    تشکر شده 79 بار در 71 پست

    پیش فرض

    بسیار عالی، درسته یه ایراد کوچیک داره ولی کد نویسیت تمیزو خوبه حالا این درستش.
    کد:
    for (i=10;i>=1;i--)        {
                PORTC=seven_seg_code(i-1);
                delay_ms(1000);
            }
    حالا شما توضیح بده چرا. این ممکنه مشکل خیلی از دوستان باشه
    ویرایش توسط erfanjeddy : 14-10-2015 در ساعت 23:03

  25. تشکرها از این نوشته :


  26. #19
    کاربر علاقه مند
    تاریخ عضویت
    Oct 2015
    نوشته ها
    30
    تشکر
    18
    تشکر شده 2 بار در 2 پست

    پیش فرض

    نقل قول نوشته اصلی توسط erfanjeddy نمایش پست ها
    بسیار عالی، درسته یه ایراد کوچیک داره ولی کد نویسیت تمیزو خوبه حالا این درستش.
    کد:
    for (i=10;i>=1;i--)        {
                PORTC=seven_seg_code(i-1);
                delay_ms(1000);
            }
    حالا شما توضیح بده چرا. این ممکنه مشکل خیلی از دوستان باشه
    نمیدونم چرا ولی بازم اون مشکل سرجاشه درست نشد!!!

  27. #20
    کاربر فعال
    تاریخ عضویت
    May 2014
    نوشته ها
    198
    تشکر
    14
    تشکر شده 79 بار در 71 پست

    پیش فرض

    اینجا که درسته

    - - - Updated - - -

    میره تا صفر بعد برمیگرده 9

    - - - Updated - - -

    کامپایلرت چیه؟

  28. تشکرها از این نوشته :


صفحه 1 از 2 12 آخرینآخرین

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

  1. بررسی سنسورهای پرکاربرد
    توسط javad naderi در انجمن مفاهیم اولیه در رباتیک
    پاسخ: 80
    آخرين نوشته: 21-09-2016, 12:22
  2. [سوال] کسی سنسور رطوبت خاک yl-69 رو کالیبره کرده ؟
    توسط علیدلی در انجمن AVR
    پاسخ: 1
    آخرين نوشته: 21-04-2015, 20:08
  3. سوالی راجع به کلاک ال سی دی
    توسط Z.F.K در انجمن LPC series (NXP)
    پاسخ: 0
    آخرين نوشته: 07-09-2014, 12:37
  4. [سوال] کمک برای ساخت سنسور لمسی
    توسط sas021 در انجمن سنسور و ماژول های اندازه گیری
    پاسخ: 1
    آخرين نوشته: 30-06-2014, 18:52
  5. یک سوال اساسی در طراحی مدار
    توسط alamdar در انجمن طراحی و ساخت و آزمایش مدارت الکترونیک
    پاسخ: 3
    آخرين نوشته: 24-10-2012, 18:00

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

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