اطلاعیه

Collapse
No announcement yet.

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

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

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

    با سلام
    در کدویژن می خوام 2 پین دیگر میکرو رو با یم باودریت خاصی برای ارتباط سریال استفاده کنم .
    می دونم که توی بسکام اینکار ممکنه ولی آیا کسی می تونه کمکم کنه که با کدویژن چنین کاری کنم .

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

    اگه مشکلت برنامه نویسی با بیسیک هست کامپایلر MicroC برای AVR کتابخانه ای برای این کار داره کامپایلرش چیزی از codvision کم نداره که هیچ خیلی چیزای اضافه هم داره فقط کتابخانه هاش open source نیستن.

    دیدگاه


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

      اگه مشکلت برنامه نویسی با بیسیک هست کامپایلر MicroC برای AVR کتابخانه ای برای این کار داره کامپایلرش چیزی از codvision کم نداره که هیچ خیلی چیزای اضافه هم داره فقط کتابخانه هاش open source نیستن.
      نه متاسفانه نمی تونم کدویژن رو ول کنم آخه خیلی به هم عادت کردیم هم من به اون هم اون به من .

      دیدگاه


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

        خود اتمل با اسمبلی همین کار و انجام داده
        http://www.atmel.com/Images/doc0952.pdf
        شما تو کدویژن ازش استفاده کن

        دیدگاه


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

          ممنون
          سعی خودم رو می کنم ببینم چی میشه !

          دیدگاه


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

            با سلام،

            بیا داداش، از این استفاه کن، سریال پورت نرم افزاری، روی هر پینی که خواستی، به اضافه اینتراپت :

            http://s3.picofile.com/file/7535679244/software_serial_port.c.html

            این کدویژن رو هم ولش کن ..... :mrgreen:
            مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

            Sh_Nourbakhsh@Yahoo.com

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

            دیدگاه


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

              اول تشکر می کنم خیلی خیلی زیاد
              دوم در مورد کدویژن قبلا توضیح دادم که واقعا جداناپذیرم !!!
              سوم آقا این برنامه با چه کمپایلری هست ( کدویژن و iar که من کار می کنم نیست ) این _BV(رو من نمیشناسم و اصلا نمی دونم از توابع کتابخونه ای این کمپایره یا توی یه فایل دیگه تعریف شدم و من نمی دونم چکار می کنه
              چهارم خیلی مخلصیم به خدا

              دیدگاه


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

                نوشته اصلی توسط داریوش عباسی
                اول تشکر می کنم خیلی خیلی زیاد
                دوم در مورد کدویژن قبلا توضیح دادم که واقعا جداناپذیرم !!!
                سوم آقا این برنامه با چه کمپایلری هست ( کدویژن و iar که من کار می کنم نیست ) این _BV(رو من نمیشناسم و اصلا نمی دونم از توابع کتابخونه ای این کمپایره یا توی یه فایل دیگه تعریف شدم و من نمی دونم چکار می کنه
                چهارم خیلی مخلصیم به خدا
                با سلام،

                شما آقایی برادر، ما هم ارادتمند دربست شما و همه دوستان هستیم .... :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)
                مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                Sh_Nourbakhsh@Yahoo.com

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

                دیدگاه


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

                  بازهم ممنون
                  و باز هم یک سوال :
                  PORTD &= ~(_BV(uarttx)); // clear the start bit output
                  این خط چه معنیی می دهد م هدف ارسال یک بیت صفر بوده برای استارت بیت دیتا ولی نمی دانم چرا اصلا کل پورت D رو وسط کشیده و ...

                  دیدگاه


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

                    نوشته اصلی توسط داریوش عباسی
                    بازهم ممنون
                    و باز هم یک سوال :
                    PORTD &= ~(_BV(uarttx)); // clear the start bit output
                    این خط چه معنیی می دهد م هدف ارسال یک بیت صفر بوده برای استارت بیت دیتا ولی نمی دانم چرا اصلا کل پورت D رو وسط کشیده و ...
                    با سلام،

                    خواهش میکنم برادر،

                    خوب مگه چه اشکالی داره؟! پین uarttx ام رو از PORTD صفر کرده، به بقیه پین ها هم کاری نداشته، فقط همین.... :mrgreen:

                    uarttx ابتدای فایل، PD3 تعریف شده، یعنی پین سوم از پورت D
                    این PORTD &= ~(_BV(uarttx)); هم اگر در تعاریف پست قبلی دقت کنی، معادل این خطه :
                    #define cbi(port, pin) (port &= ~_BV(pin))

                    یعنی اینکه پین n ام یک پورت رو صفر میکنه .....
                    مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                    Sh_Nourbakhsh@Yahoo.com

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

                    دیدگاه


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

                      خوب مگه چه اشکالی داره؟! پین uarttx ام رو از PORTD صفر کرده، به بقیه پین ها هم کاری نداشته، فقط همین.... :mrgreen:

                      uarttx ابتدای فایل، PD3 تعریف شده، یعنی پین سوم از پورت D
                      این PORTD &= ~(_BV(uarttx)); هم اگر در تعاریف پست قبلی دقت کنی، معادل این خطه :
                      #define cbi(port, pin) (port &= ~_BV(pin))

                      یعنی اینکه پین n ام یک پورت رو صفر میکنه .....
                      چرا خیلی راحت و ساده و مستقیم پین سوم رو صفر نکرده:
                      uarttx=0;

                      دیدگاه


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

                        نوشته اصلی توسط داریوش عباسی
                        چرا خیلی راحت و ساده و مستقیم پین سوم رو صفر نکرده:
                        uarttx=0;
                        اینطوری مال کدویژن و بسکام هستش ( بطور داخلی در کامپایلر تعریف شده )، یه همچین چیزی توی WinAVR نداریم....
                        توی WinAVR تقریبا تما کارها رو شما خودت باید انجام بدی، برای همینه که خوبه و من دوستش دارم! :mrgreen:
                        مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                        Sh_Nourbakhsh@Yahoo.com

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

                        دیدگاه


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

                          نوشته اصلی توسط aivhl
                          اینطوری مال کدویژن و بسکام هستش ( بطور داخلی در کامپایلر تعریف شده )، یه همچین چیزی توی WinAVR نداریم....
                          توی WinAVR تقریبا تما کارها رو شما خودت باید انجام بدی، برای همینه که خوبه و من دوستش دارم! :mrgreen:
                          جناب استاد این روش های که به خصوص در winavr بکار می برن برای ست و ریست کردن یه پایه و ... آیا از در سرعت انجام دستور هم تفاوت داره؟ یا فقط از لحاظ شکل متفاوتن؟

                          دیدگاه


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

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

                            برای ست و یا ریست کردن یک بیت از یک رجیستر خاص، نیازه که شما اعمالی رو انجام بدی و در نهایت این اعمال، مستلزم صرف n کلاک پالس هستند. حالا در WinAVR کل این اعمال توسط خود شما انجام میشه و همونطور که گفتم، در کدویژن و بسکام، کامپایلر خودش این جزئیات رو انجام میده! و اگر اسمبلی کار کنید، برای همین کار، شما درگیر جزئیات بیشتری خواهید شد.....

                            و اما سوالی که ممکنه پیش بیاد اینه که خوب چرا ما کامپایلری رو انتخاب نکنیم که درگیر جزئیات نشیم و روش ساده تری رو برای انجام کار مورد نظر پیش رو داشته باشیم؟!

                            جواب اینه که، در اسمبلی، ما میتونیم با دقت و مهارت کدهامون رو در بهینه ترین حالت ممکنه ( از نظر سرعت و حجم کد ) بنویسیم ولی هر چی سطخ کامپایلر بالاتر میره، برنامه نویس از جزئیات دور تر میشه و قطعنا در موارد بسیاری، کامپایلر قادر به ترجمه بهینه کدها نخواهد بود.
                            حالا اگر دعوا نمیشه و دوستان قول بدن من رو ترور نکنن، باید بگم که این عم توانایی در تفسیر بهینه کدها، در کدویژن و بسکام، به مراتب بیشتر از WinAVR میباشد .....

                            به همین دلیله که کامپایلرهایی مثل کدویژن و ( بیشتر ) بسکام برای افرادی مثل دانش آموزان، دانشجویان و علاقمندان غیر حرفه ای ( و یا کمتر حرفه ای ) مناسب تره، چون لزومی نداره که اونها زیادی وارد جزئیات برنامه نویسی بشن و وقت و انرژی خودشون رو صرف چیزهایی بکنن که براشون زیاد اهمیتی نداره و یا حیاتی نیست!

                            لذا، استفاده از این نوع کامپایلرهای سطح بالا، برای حرفه ای ها توصیه نمیشه چون ..... ! :mrgreen:
                            مادامی که از شخصی یاد میشود، او و افکارش زنده اند ....

                            Sh_Nourbakhsh@Yahoo.com

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

                            دیدگاه


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

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

                              برای ست و یا ریست کردن یک بیت از یک رجیستر خاص، نیازه که شما اعمالی رو انجام بدی و در نهایت این اعمال، مستلزم صرف n کلاک پالس هستند. حالا در WinAVR کل این اعمال توسط خود شما انجام میشه و همونطور که گفتم، در کدویژن و بسکام، کامپایلر خودش این جزئیات رو انجام میده! و اگر اسمبلی کار کنید، برای همین کار، شما درگیر جزئیات بیشتری خواهید شد.....

                              و اما سوالی که ممکنه پیش بیاد اینه که خوب چرا ما کامپایلری رو انتخاب نکنیم که درگیر جزئیات نشیم و روش ساده تری رو برای انجام کار مورد نظر پیش رو داشته باشیم؟!

                              جواب اینه که، در اسمبلی، ما میتونیم با دقت و مهارت کدهامون رو در بهینه ترین حالت ممکنه ( از نظر سرعت و حجم کد ) بنویسیم ولی هر چی سطخ کامپایلر بالاتر میره، برنامه نویس از جزئیات دور تر میشه و قطعنا در موارد بسیاری، کامپایلر قادر به ترجمه بهینه کدها نخواهد بود.
                              حالا اگر دعوا نمیشه و دوستان قول بدن من رو ترور نکنن، باید بگم که این عم توانایی در تفسیر بهینه کدها، در کدویژن و بسکام، به مراتب بیشتر از WinAVR میباشد .....

                              به همین دلیله که کامپایلرهایی مثل کدویژن و ( بیشتر ) بسکام برای افرادی مثل دانش آموزان، دانشجویان و علاقمندان غیر حرفه ای ( و یا کمتر حرفه ای ) مناسب تره، چون لزومی نداره که اونها زیادی وارد جزئیات برنامه نویسی بشن و وقت و انرژی خودشون رو صرف چیزهایی بکنن که براشون زیاد اهمیتی نداره و یا حیاتی نیست!

                              لذا، استفاده از این نوع کامپایلرهای سطح بالا، برای حرفه ای ها توصیه نمیشه چون ..... ! :mrgreen:
                              ببخشید اگه بازم مزاحمت ایجاد می کنم ولی چه کنم که هرکس بالاخره در یه سطحی از هوش و استعداده و من هم ....
                              جسارتا الان مثلا (به طور خاص)در مورد همین دستور cbi و...؛ قاعدتا این دستور جزو دستورات اسمبلی نیست که بخواد موارد بهینه سازی کد شاملش بشه(درسته؟)
                              در بعضی از موارد تو کدویژن هم استفاده می شه . ولی دلیل اصلی که از این روش استفاده می کنن هنوز برام مبهمه.آیا یه عادت برنامه نویسی هست که با عملگر های منطقی و دستور شیفت یه بیت 0 یا 1 می کنن و یا مزیتی در استفاده کردن از این قسم روش هاهست؟
                              یه سوال دیگه همین کاررو اگه بخوایم با اسمبلی بنویسیم، منطق و ابزار مناسب برای این کار؛ استفاده از عملگر های منطقی و دستور شیفت هست؟
                              از عرض پوزش مجدد

                              دیدگاه

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