اطلاعیه

Collapse
No announcement yet.

وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

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

    وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

    سلام رفقا،

    من یه برنامه ای ازقبل داشتم که GLCD هم توش استفاده کردم. ازارتباط سریال UART0 هم استفاده کردم ولی نه به صورت وقفه. حالا که برنامه رو واسه وقفه تغییر می دم، وقتی دستور
    کد:
    #asm(sei)
    رو می نویسم، GLCD هیچی نشون نمی ده. وقتی این خط رو پاک می کنم، GLCD کار می کنه.
    کتابخونه ای که واسه GLCD استفاده کردم اینه:
    http://www.techno-electro.com/353--glcd-.html
    دوستان، اگه ایده ای به ذهنتون می رسه، ممنون میشم راهنمایی کنید...

    با سپاس فراوان
    همیشه بزرگوار تر از آن باشید که برنجید
    و نجیب تر از آن باشید که برنجانید!

    #2
    پاسخ : وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

    نوشته اصلی توسط جعفری
    سلام رفقا،

    من یه برنامه ای ازقبل داشتم که GLCD هم توش استفاده کردم. ازارتباط سریال UART0 هم استفاده کردم ولی نه به صورت وقفه. حالا که برنامه رو واسه وقفه تغییر می دم، وقتی دستور
    کد:
    #asm(sei)
    رو می نویسم، GLCD هیچی نشون نمی ده. وقتی این خط رو پاک می کنم، GLCD کار می کنه.
    کتابخونه ای که واسه GLCD استفاده کردم اینه:
    http://www.techno-electro.com/353--glcd-.html
    دوستان، اگه ایده ای به ذهنتون می رسه، ممنون میشم راهنمایی کنید...

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

    دیدگاه


      #3
      پاسخ : وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدو

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

      اینها یه سری اطلاعات تکمیلی (نحوه اتصال GLCD به ATmega128) دیگه هست که شاید به حل مشکل کمک کنه:
      کد:
      #define DATAPORT PORTC
      #define DATADDR DDRC
      #define DATAPIN PINC
      //#define CONTROLPORT PORTB
      #define CS1 PORTA.7
      #define CS2 PORTA.6
      #define RS PORTD.5
      #define RW PORTD.6
      #define EN PORTD.7
      و یه موضوع مهمه دیگه اینکه، برنامه از همون ابتدا درست کار نمی کنه، شما تصور کن رجیسترها تنظیم شدن، بعد با دستور:
      کد:
      #asm(sei)
      وقفه ها به صورت سراسری فعال شدن. بعد اول برنامه باید یه پیام روی LCD نمایش داده بشه که نمی شه. هنوز هم هیچ وقفه ای رخ نداده، فقط وقفه ها فعال شدند!!

      دوستان ممنون از همفکری شما
      همیشه بزرگوار تر از آن باشید که برنجید
      و نجیب تر از آن باشید که برنجانید!

      دیدگاه


        #4
        پاسخ : وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

        شما وقتی کد
        [code=c]#asm(sei)[/code]
        را نمیزنید GLCD درست کار می کنه؟
        قبل از فعال کردن وقفه ها رو GLCD چیزی بنویسید اگه مایش داد بعد وقفه ی سراسری رو فعال کنید ببینید صفحه به هم میریزه؟

        دیدگاه


          #5
          پاسخ : وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

          نوشته اصلی توسط keivansadeghi
          شما وقتی کد
          [code=c]#asm(sei)[/code]
          را نمیزنید GLCD درست کار می کنه؟
          قبل از فعال کردن وقفه ها رو GLCD چیزی بنویسید اگه مایش داد بعد وقفه ی سراسری رو فعال کنید ببینید صفحه به هم میریزه؟
          دقیقا همین کار رو کردم. یه پیام رو نمایش دادم، نشون داد. بعد از این مرحله، وقفه سراسری فعال می شه... از اون به بعد GLCD همون طور که بود می مونه با اطلاعات قبلی و موارد جدید رو نمایش نمی ده!!
          همیشه بزرگوار تر از آن باشید که برنجید
          و نجیب تر از آن باشید که برنجانید!

          دیدگاه


            #6
            پاسخ : وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

            پس بعد از فعال کردن وقفه ، LCD به هم نمیریزه؟
            بعد از فعال سازی عبارتی رو دوباره (یه عبارت جدید) رو LCD می نویسید؟ این بار نشون نمیده یا به هم میریزه؟

            دیدگاه


              #7
              پاسخ : وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

              نوشته اصلی توسط keivansadeghi
              پس بعد از فعال کردن وقفه ، LCD به هم نمیریزه؟
              بعد از فعال سازی عبارتی رو دوباره (یه عبارت جدید) رو LCD می نویسید؟ این بار نشون نمیده یا به هم میریزه؟
              دقیقا، اول وقفه فعال نیست GLCD کار میکنه. بعد وقفه فعال میشه. یه عیارت دیگه باید نشون داده بشه. که GLCD بدون تغییر می مونه.
              با سپاس
              همیشه بزرگوار تر از آن باشید که برنجید
              و نجیب تر از آن باشید که برنجانید!

              دیدگاه


                #8
                پاسخ : وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

                ممکنه مشکل از وقفه هاتون باشه یعنی بره تو تابع وقفه و اونجا گیر کنه این مورد رو بررسی کردید که بعد از توابع بر میگرده یا خیر؟

                دیدگاه


                  #9
                  پاسخ : وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

                  سلام
                  با اجازه 2 دوست گرامی
                  وقتی وقفه داخل روتین glcd فعال میشه اول آدرس جایی که داره کار انجام میشه در حافظه ذخیره میشه و بعد از انجام کار وقفه آدرس از حافظه بازیابی میشه و برمیگرده به وسط روتین glcd که هزار تا اتفاق میتونه افتاده باشه.
                  شما با push و pop کردن میتونید به آدرسهای قبل از وقفه دسترسی داشته باشید و باید اونها رو تغییر بدید که زمان زیادی از میکرو نمیگیره.
                  و بعد دوباره تابع رو اجرا کنید اینطوری دیگه هنگ نمیکنه.
                  شما راجع به stack pointer اطلاعات کسب کنید.
                  شبنم از سعی به سرچشمه خورشید رسید صائب تبریزی

                  دیدگاه


                    #10
                    پاسخ : وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

                    وقتی وقفه داخل روتین glcd فعال میشه اول آدرس جایی که داره کار انجام میشه در حافظه ذخیره میشه و بعد از انجام کار وقفه آدرس از حافظه بازیابی میشه و برمیگرده به وسط روتین glcd که هزار تا اتفاق میتونه افتاده باشه.
                    شما با push و pop کردن میتونید به آدرسهای قبل از وقفه دسترسی داشته باشید و باید اونها رو تغییر بدید که زمان زیادی از میکرو نمیگیره.
                    و بعد دوباره تابع رو اجرا کنید اینطوری دیگه هنگ نمیکنه.
                    میشه کمی بیشتر توضیح بدید؟
                    چطور push و pop کنیم و به آدرس ها دسترسی داشته باشیم؟
                    با تشکر از توضیح مفیدتون

                    دیدگاه


                      #11
                      پاسخ : وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

                      http://www.avr-tutorials.com/general...-stack-pointer


                      در لینک زیر به صفحه 32 رفته و به "وقفه ها و اجرای برنامه" رجوع کنید.
                      www.avr-asm-download.de/beginner_ir.pdf
                      شبنم از سعی به سرچشمه خورشید رسید صائب تبریزی

                      دیدگاه


                        #12
                        پاسخ : وقتی وقفه فعال میشه، GLCD از کارمیفته!! (کدویژن)

                        یه سوال تو زیر برنامه وقفه شما دستوری چیزی و ال سی دی مینویسی؟
                        جهان پیر است و بی بنیاد ازاین فرهاد کش فریاد
                        که کرد افسون و نیرنگش ملول از جان شیرینم

                        دیدگاه

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