اطلاعیه

Collapse
No announcement yet.

ارتباط سریال بصورت نرم افزاری روی سایر پورتهای میکرو

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

    #16
    پاسخ : ارتباط سریال بصورت نرم افزاری روی سایر پورتهای میکرو

    ببخشید اگه بازم مزاحمت ایجاد می کنم ولی چه کنم که هرکس بالاخره در یه سطحی از هوش و استعداده و من هم ....
    ای آقا، نزن این حرفا رو، پس منم که خیلی چیزا رو بلد نیستم باید جزو خنگ ها باشم دیگه؟! ولی اینطور نیست، بالاخره هر کسی یه تخصصی داره و برای پیشرفت در رشته و تخصص خودش هم نیاز به کسب دانش و تجربه داره ....

    جسارتا الان مثلا (به طور خاص)در مورد همین دستور cbi و...؛ قاعدتا این دستور جزو دستورات اسمبلی نیست که بخواد موارد بهینه سازی کد شاملش بشه(درسته؟)
    یه جورایی بله، ولی این روش، از روش های معمول کدویژن و بسکام که ما نمیدونیم، دقیقا چطوری و در چه سطحی از کیفیت تفسیر میشن، بهتره!

    در بعضی از موارد تو کدویژن هم استفاده می شه . ولی دلیل اصلی که از این روش استفاده می کنن هنوز برام مبهمه.آیا یه عادت برنامه نویسی هست که با عملگر های منطقی و دستور شیفت یه بیت 0 یا 1 می کنن و یا مزیتی در استفاده کردن از این قسم روش هاهست؟
    راستش منظورت رو خوب متوجه نمیشم، یکمی بیشتر توضیح بده و بگو به نظر شما، چه روش دیگری بجز این موارد ( عملگر منطقی، شیفت و ... ) برای ست و یا ریست کردن یک بیت از یک رجیستر وجود داره، بطوری که هیچ تغییری در سایر بیت های اون رجیستر اتفاق نیافته؟
    در هر حال، روش اینه و عادت خاصی وجود نداره ....

    یه سوال دیگه همین کاررو اگه بخوایم با اسمبلی بنویسیم، منطق و ابزار مناسب برای این کار؛ استفاده از عملگر های منطقی و دستور شیفت هست؟
    دستورات sbi و cbi که کارشون ست و ریست کردن یک بیت از رجیستر خاص I/O هست، در اسمبلی AVR وجود دارن ( رجوع شود به جدول Instruction Set Summary دیتا شیت )

    این دستورات اسمبلی، مختص رجیستر های I/O هستند و در 2 کلاک پالس اجرا میشن ولی ماکروهای مشابهی که در WinAVR وجود دارن رو میشه حتی برای متغیرها هم استفاده کرد، ولی برای اجرا حدودا به 20 کلاک پالس نیاز دارند.

    این موضوع در مبحث برنامه نویسی ماژولار باید بحث بشه و اینجا و توی این تاپیک جاش نیست....
    مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

    Sh_Nourbakhsh@Yahoo.com

    http://s2.picofile.com/file/7170362468/_Wall_e_.jp

    دیدگاه


      #17
      پاسخ : ارتباط سریال بصورت نرم افزاری روی سایر پورتهای میکرو

      سلام

      در کاری نیاز به استفاده از یک آیسی زاویه سنج است که اطلاعات را به صورت 16 بیتی ارسال میکند ، لطفا درباره نحوه دریافت این داده ها راهنمایی فرمایید.

      آیا تابعی که آقای نوربخش راد معرفی کردند برای اینکار مناسب است ؟

      باتشکر .

      دیدگاه


        #18
        پاسخ : ارتباط سریال بصورت نرم افزاری روی سایر پورتهای میکرو

        نوشته اصلی توسط aivhl
        با سلام،

        شما آقایی برادر، ما هم ارادتمند دربست شما و همه دوستان هستیم .... :mrgreen:
        باشه بابا، من بیخیال این کدویژن میشم!!!

        این کدها برای WinAVR نوشته شده، شما این تعاریف رو اول فایل اضافه کن ( یا اینکه در فایل این موارد رو با مشابهاتشون عوض کن )، همه چیز حله :
        کد:
        typedef signed char            int8;
        typedef unsigned char           uint8;
        typedef signed int            int16;
        typedef unsigned int           uint16;
        typedef signed long int          int32;
        typedef unsigned long int         uint32;	
        
        #define SIGNAL (SIG_OUTPUT_COMPARE1A)   interrupt [TIM1_COMPA] void isr##TIM1_COMPA(void)
        
        #define _BV(pin)             (1<< pin)
        #define sbi(port, pin)          (port |= _BV(pin))
        #define cbi(port, pin)          (port &= ~_BV(pin))
        #define outb(port, data)         (port = data)
        #define inb(port)             (port)
        ببخشید این تابع نیاز به هدرفایل نداره ؟ درضمن بنده با اتمل استودیو کار میکنم ، چه تغییراتی باید در این کد اعمال کنم؟

        باتشکر .

        دیدگاه


          #19
          پاسخ : ارتباط سریال بصورت نرم افزاری روی سایر پورتهای میکرو

          ببخشید این قسمت چکار میکنه ؟

          کد:
          #define SIGNAL (SIG_OUTPUT_COMPARE1A)   interrupt [TIM1_COMPA] void isr##TIM1_COMPA(void)

          دیدگاه


            #20
            پاسخ : ارتباط سریال بصورت نرم افزاری روی سایر پورتهای میکرو

            نوشته اصلی توسط aivhl
            با سلام،

            شما آقایی برادر، ما هم ارادتمند دربست شما و همه دوستان هستیم .... :mrgreen:
            باشه بابا، من بیخیال این کدویژن میشم!!!

            این کدها برای WinAVR نوشته شده، شما این تعاریف رو اول فایل اضافه کن ( یا اینکه در فایل این موارد رو با مشابهاتشون عوض کن )، همه چیز حله :
            کد:
            typedef signed char            int8;
            typedef unsigned char           uint8;
            typedef signed int            int16;
            typedef unsigned int           uint16;
            typedef signed long int          int32;
            typedef unsigned long int         uint32;	
            
            #define SIGNAL (SIG_OUTPUT_COMPARE1A)   interrupt [TIM1_COMPA] void isr##TIM1_COMPA(void)
            
            #define _BV(pin)             (1<< pin)
            #define sbi(port, pin)          (port |= _BV(pin))
            #define cbi(port, pin)          (port &= ~_BV(pin))
            #define outb(port, data)         (port = data)
            #define inb(port)             (port)
            سلام

            خیلی ممنون از نمونه برنامه خوبتون.
            باودریت رو چطور تغییر بدم ؟
            سریال نرم افزاری از سریال خود میکرو چیزی کم داره ؟ یعنی ممکنه اذیت کنه در طولانی مدت ؟ من واسه یه جا دوتا سریال لازم دارم .از یکیش میخوام rs485 استفاده کنم.

            دیدگاه

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