اطلاعیه

Collapse
No announcement yet.

New مشکل در lcd کاراکتر

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

    #16
    پاسخ : New مشکل در lcd کاراکتر

    نوشته اصلی توسط کاکو نمایش پست ها
    شما اول برنامه باید به صورت نرم افزاری واچ داگ فعال کنی و نه به صورت سخت افزاری
    چون سخت افزاری میاد اون رو با برای کمترین زمان فعال میکنه
    پس تو تنظیمات فیوز بیت واچ داگ را فعال نکن

    به صورت نرم افزاری واچ داگ با کمک کدویزارد فعال کن در اول برنامه که هر بار ریست شدن دوباره فعال بشه
    حالا توی تنظیمات واچ داگ زمان مورد نظرتو با توجه به دیتاشیت انتخاب کن تا زمان ایجاد بشه به صورت مثال برای دو ثانیه فعال کردی
    یعنی هم فعالش کردی و هم زمان مورد نظر لحاظ کردی


    خب تو باید قبل دو ثانیه واچ داگ با استفاده از دستور اسمبلی ریست کنی که فقط یه خط برنامه نویسی لازم داری به صورت اسمبلی
    #asm("WDR");

    برای خاموش کردن و غیر فعال کردن واچ داگ هم توی دیتاشیت نمونه کد داده اینجوری


    ولی نیاز نیست خاموشش کنی .. ولی شاید یه جاهای لازم باشه

    حالا این لینک هم ببین
    http://micro7.blog.ir/1395/04/25/%D8...8%A7%DB%8C-avr
    خیلی ممنون عزیزم.
    موفق شدم باهاش کار کنم فقط یه نکته ای هست که یکم اذیتم کرد اونم اینکه استفاده از delay باعث میشه که واچ داگ ریست بشه!
    اون اولش به این خاطر کار نکرد اما بعدش درستش کردم.
    مچکرم
    توی کانال یوتیوب من قراراه طراحی انواع بردهای الکترونیکی مثل بردهای تک لایه، دو لایه یا به طور کلی بردهای چند لایه، بردهای مبتنی بر میکروکنترلر، بردهای صنعتی، بردهای الکترونیک قدرت و بردهای فرکانس بالارو یاد بگیریم.
    همینطور کدنویسی انواع میکروکنترلرهای 8 بینی مثل میکروکنترلرهای خانواده AVR-STM8، میکروکنترلرهای میبتی بر معماری ARM مثل STM32 و پردازنده های مخصوص اینترنت اشیاء مثل ESP32-ESP8266 و DSPها یاد میگیریم.
    https://www.youtube.com/@aKaReZa75​

    دیدگاه


      #17
      پاسخ : New مشکل در lcd کاراکتر

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

      دیدگاه


        #18
        پاسخ : New مشکل در lcd کاراکتر

        نوشته اصلی توسط akaReza نمایش پست ها
        خیلی ممنون عزیزم.
        موفق شدم باهاش کار کنم فقط یه نکته ای هست که یکم اذیتم کرد اونم اینکه استفاده از delay باعث میشه که واچ داگ ریست بشه!
        اون اولش به این خاطر کار نکرد اما بعدش درستش کردم.
        مچکرم
        اره منم بخاطر هعمین مشکلی که تابع دیلی (میلی ثانیه ) ایجاد میکرد از واچداگ اصلا استفاده نمیکردم
        ولی شاید دقیق یادم نیست تو ورژن های جدید کدویزن این مشکل گویا حل شد ه
        الان مال شما حل شده ؟ یعنی کدویزنتون تغییر دادید؟

        دلیل: ادغام دو پست برای جلوگیری از اسپم

        نوشته اصلی توسط kargahelec نمایش پست ها
        سلام.
        به نظر من درسته که در مرحله اول باید نویز رو از بین ببریم اما باید یک احتمال هم داد که به هر شکلی یک به هم ریختگی روی ال سی دی بوجود بیاد ...
        بهترین کار و ضروری ترین کار بعد از انجام عوامل ایجاد نویز پیکره بندی دوباره ال سی دی هست...در کدویژن هم احتمالا توی توابع ال سی دی این پیکره بندی هست که میتونید از همون تابع به تنهایی در زمان های خاص استفاده کنید و مشکلتون حل بشه...
        شما میتونید برای تست یه حلقه به برنامتون اضافه کنید که هر موقع یه پایه 0 یا 1 شد بیاد این تابع اجرا بشه.بعد با اتصال یه موتور دی سی به تغذیه ال سی دی باعث ایجاد به هم ریختگی روی اون میشید حالا با تحریک اون پایه چون این تابع اجرا میشه مشکل به هم ریختگی برنامتون حل میشه.طبق تستی که خودم انجام دادم...
        خیلی از هنگ های ال سی دی بخاطر اشتباهات برنامه نویسی بوجود میاد
        ولی نویز هم خیلی سهیم
        شما هم سعی کنید بجای ال سی دی کلیر ... از ال سی دی اینیت استفاده کنید
        که اگر ال سی دی هنگ کرده باشه خودش درستش میکنه
        ولی زمانی کاربرد داره که هی رفوش بشه و جاهای که برنامه ال سی دی رفوش نمیشه کاربردی نداره

        دیدگاه


          #19
          پاسخ : New مشکل در lcd کاراکتر

          نوشته اصلی توسط shoniz نمایش پست ها
          من در اکثر پروژه ها از LCD کاراکتری 4×20 استفاده میکنم. (کدویژن)

          در بعضی از دستگاهها زمانی که کمپرسور یا موتور روشن میشه، LCD شروع میکنه به قاطی کردن و ... تا مجدد صفحه رفرش بشه تا درست بشه.

          حالا اصل موضوع : در بسکام ظاهراً یه رجیستر هست که مرتب آی سی خود LCD کاراکتری رو ریست یا رفرش میکنه بمحض اینکه موتور روشن میشه صفحه تا میخواد قاطی کنه درست میشه.(اونم قبل از کشف این رجیستر مثل پروژه من بود)
          اگه اشتباه نکنم رجیستر initial یه همیچین چیزی هست توی بسکام.

          حالا درخواست من : من توی کد ویژن باید چکار کنم؟ رجیستر برای کدویژن تعریف شده؟ چطور این مشکل رو رفع کنم؟
          سلام
          من تاحالا به این مشکل بر نخوردم (ولی خب ممکنه پیش بیاد).
          اگر به توابع این LCD ها نگاه کنید، پیش از نوشتن چیزی روی LCD نیاز به ارسال دستور خاصی داریم. پس این که نویز باعث بشه LCD قاطی کنه یکم مشکوکه. مگر زمانی که داریم چیزی روی LCD مینویسیم و همزمان موتور استارت بشه. (بعید به نظر میرسه!)
          من اگر به چنین مشکلی برخورد کنم، اول سعی می کنم در مواقعی که نیازی به نوشتن چیزی روی LCD ندارم، LCD رو از مد نوشتن خارج کنم. به این ترتیب LCD آماده ی نوشتن نخواهد بود.
          این قابلیتی که شما ازش صحبت کردید میتونه یک تابع باشه و نه یک رجیستر. بنابراین میتونید خودتون ریفرش رو انجام بدید.
          باید همیشه آخرین چیزی که روی LCD مینویسید رو در یک رشته بایت ذخیره کنید و به کمک یک تایمر مرتبا این دیتا رو روی LCD در در جای قبلی بنویسید. (باید کل صفحه ریفرش بشه.)
          البته با توجه به ترتیب اجرای فرامین مربوط به LCD و تاخیر مورد نیاز برای نوشتن، انجام ریفرش با سرعت خیلی زیاد میتونه باعث کمی کندی در عملکرد پردازنده بشه. ضمن اینکه فرآیند رفرش به درستی انجام نمیشه. (به دلیل زمان بر بودن فرآیند نوشتن.)
          بنابراین سرعت رو در حدی افزایش بدید که فقط از محدوده ی قدرت تشخیص چشم انسان خارج بشه. (درست مثل کاری که در ریفرش 7 سگمنت های مالتیپلکسر انجام میشه.)
          در انتها نظرم اینه که احتمالا مشکل از جای دیگه هست. (شاید از طرف خود میکرو، و یا تابع LCD). باید ببینید تابع LCD اون پشت دقیقا داره چیکار میکنه. شاید بهتر باشه بگید دقیقا در چه شرایطی و در چه لحظاتی این اتفاق رخ میده.
          -من از LCD کاراکتری 2x16 در یک پروژه در کنار الکتروموتور و اینورتر استفاده میکنم. میکروی استفاده شده PIC هست و تابع LCD رو هم به صورت کامل خودم نوشتم.
          *** یا راهی خواهم یافت، یا راهی خواهم ساخت ... ***

          دیدگاه


            #20
            پاسخ : New مشکل در lcd کاراکتر

            نوشته اصلی توسط کاکو نمایش پست ها
            خیلی از هنگ های ال سی دی بخاطر اشتباهات برنامه نویسی بوجود میاد
            ولی نویز هم خیلی سهیم
            شما هم سعی کنید بجای ال سی دی کلیر ... از ال سی دی اینیت استفاده کنید
            که اگر ال سی دی هنگ کرده باشه خودش درستش میکنه
            ولی زمانی کاربرد داره که هی رفوش بشه و جاهای که برنامه ال سی دی رفوش نمیشه کاربردی نداره
            ممنون از توجهتون...
            پیکره بندی ال سی دی همون lcdinit هست که اشاره کردین...

            دیدگاه


              #21
              پاسخ : New مشکل در lcd کاراکتر

              نوشته اصلی توسط kargahelec نمایش پست ها
              ممنون از توجهتون...
              پیکره بندی ال سی دی همون lcdinit هست که اشاره کردین...
              بله
              و چون از اغاز پیکر بندی میکنه .. ال سی دی از هنگ حارج میشه
              درصورتی که ال سی دی کلیر باعث خروج از هنگ نمیشه
              و ال سی دی اینیت .. بغیر پیکربندی دوباره کار پاک کردن رو انجام میده
              پس میتونید به جای پاک کردن ازش استفاده کنید
              ولی برنامه ال سی دی باید مداوم رفوش بشه
              یا به قول یکی از دوستان یه کلیدی بذاریم که وقتی ال سی دی هنگ کرد از طرف میکرو ال سی دی اینیت انجام بشه که زیاد مطلوب نیست

              دیدگاه


                #22
                پاسخ : New مشکل در lcd کاراکتر

                نوشته اصلی توسط Namvar14 نمایش پست ها
                حالا که که اینطوریه شما زحمت بکشید یه عکس از مدارت دراینجا بذار.ا ایملیل کن.ببینم چرا اینجوری شده.
                با تشکر دوست عزیز
                امکان گرفتن عکس نیست. برد های شرکت هست و امکان منتشر کردن عکس ازش امکان پذیر نیست. مشکل از سخت افزار نیست.
                چون با یه برنامه دیگه (بسکام) این مشکل وجئود نداره. مطمئناٌ از برنامه هست.

                دلیل: ادغام دو پست برای جلوگیری از اسپم

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

                دلیل: ادغام دو پست برای جلوگیری از اسپم


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

                یه نمونه کد بنویسی که بجای ال سی دی کلیر از ال سی دی اینیت استفاده کردید.

                ممنونم

                دلیل: ادغام دو پست برای جلوگیری از اسپم

                نوشته اصلی توسط K1.IEEE نمایش پست ها
                سلام
                من تاحالا به این مشکل بر نخوردم (ولی خب ممکنه پیش بیاد).
                اگر به توابع این LCD ها نگاه کنید، پیش از نوشتن چیزی روی LCD نیاز به ارسال دستور خاصی داریم. پس این که نویز باعث بشه LCD قاطی کنه یکم مشکوکه. مگر زمانی که داریم چیزی روی LCD مینویسیم و همزمان موتور استارت بشه. (بعید به نظر میرسه!)
                من اگر به چنین مشکلی برخورد کنم، اول سعی می کنم در مواقعی که نیازی به نوشتن چیزی روی LCD ندارم، LCD رو از مد نوشتن خارج کنم. به این ترتیب LCD آماده ی نوشتن نخواهد بود.
                این قابلیتی که شما ازش صحبت کردید میتونه یک تابع باشه و نه یک رجیستر. بنابراین میتونید خودتون ریفرش رو انجام بدید.
                باید همیشه آخرین چیزی که روی LCD مینویسید رو در یک رشته بایت ذخیره کنید و به کمک یک تایمر مرتبا این دیتا رو روی LCD در در جای قبلی بنویسید. (باید کل صفحه ریفرش بشه.)
                البته با توجه به ترتیب اجرای فرامین مربوط به LCD و تاخیر مورد نیاز برای نوشتن، انجام ریفرش با سرعت خیلی زیاد میتونه باعث کمی کندی در عملکرد پردازنده بشه. ضمن اینکه فرآیند رفرش به درستی انجام نمیشه. (به دلیل زمان بر بودن فرآیند نوشتن.)
                بنابراین سرعت رو در حدی افزایش بدید که فقط از محدوده ی قدرت تشخیص چشم انسان خارج بشه. (درست مثل کاری که در ریفرش 7 سگمنت های مالتیپلکسر انجام میشه.)
                در انتها نظرم اینه که احتمالا مشکل از جای دیگه هست. (شاید از طرف خود میکرو، و یا تابع LCD). باید ببینید تابع LCD اون پشت دقیقا داره چیکار میکنه. شاید بهتر باشه بگید دقیقا در چه شرایطی و در چه لحظاتی این اتفاق رخ میده.
                -من از LCD کاراکتری 2x16 در یک پروژه در کنار الکتروموتور و اینورتر استفاده میکنم. میکروی استفاده شده PIC هست و تابع LCD رو هم به صورت کامل خودم نوشتم.
                خلاصه پروسه کار برنامه من.

                برنامه زمانی که شروع میکنه به کار، یه دما کار بر داده که باید به اون دما برسه، زمان هم داده، المنت ممکنه تو pwm کار کنه. تایمر 0 هم زمان رو محاسبه میکنه. سنسور NTC دما رو نشون میده و ... . eeprom مرتب داره لحظه هارو ذخیره میکنه که اگه برق رفت یا ... به محض برگشت از همون زمان و... شروع به کار کنه. دما مرتب چک میشه که اگه اختلاف زیاد شد الارم بده و کار های دیگه .
                برنامه من این کار هارو انجام میده و تغریباً همش رو نمایش میده روی ال سی دی.
                حالا من چه دستوری روی ال سی دی بدم و چاپ کنم، رفرش کنم، پاک کنم، نویز افتاد خودش برطرف بشه،
                برنامه من حدود 6000 خط هست. تغییر داخلش واقعا شوخی نیست.
                *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

                دیدگاه


                  #23
                  پاسخ : New مشکل در lcd کاراکتر

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

                  و اگه کسی از روشی جواب گرفته، فقط یک نمونه کد بنویسه.

                  ممنون
                  *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

                  دیدگاه


                    #24
                    پاسخ : New مشکل در lcd کاراکتر

                    نوشته اصلی توسط shoniz نمایش پست ها
                    در کل ظاهراً کد ویژن مثل بسکام، رجستر یا تابع یا ... که مخصوص از بین بردن نویز ال سی دی نداره و باید از همین راه هایی که گفتید رو روش امتحان کنم و شاید شد شایدم نه ؟؟؟

                    و اگه کسی از روشی جواب گرفته، فقط یک نمونه کد بنویسه.

                    ممنون
                    من با init کردن مجدد ال سی دی توی زمان های مشخص مشکلی نداشتم. ( من هر 3 ثانیه Init کردم )
                    توی کانال یوتیوب من قراراه طراحی انواع بردهای الکترونیکی مثل بردهای تک لایه، دو لایه یا به طور کلی بردهای چند لایه، بردهای مبتنی بر میکروکنترلر، بردهای صنعتی، بردهای الکترونیک قدرت و بردهای فرکانس بالارو یاد بگیریم.
                    همینطور کدنویسی انواع میکروکنترلرهای 8 بینی مثل میکروکنترلرهای خانواده AVR-STM8، میکروکنترلرهای میبتی بر معماری ARM مثل STM32 و پردازنده های مخصوص اینترنت اشیاء مثل ESP32-ESP8266 و DSPها یاد میگیریم.
                    https://www.youtube.com/@aKaReZa75​

                    دیدگاه


                      #25
                      پاسخ : New مشکل در lcd کاراکتر

                      نوشته اصلی توسط shoniz نمایش پست ها
                      در کل ظاهراً کد ویژن مثل بسکام، رجستر یا تابع یا ... که مخصوص از بین بردن نویز ال سی دی نداره و باید از همین راه هایی که گفتید رو روش امتحان کنم و شاید شد شایدم نه ؟؟؟

                      و اگه کسی از روشی جواب گرفته، فقط یک نمونه کد بنویسه.

                      ممنون
                      فک کنم برای initioallکردن از تابع : (lcd_init(16
                      اسفاده میشه.
                      (unsigned char lcd_init(unsigned char lcd_columns
                      eshop-hodhod.ir

                      دیدگاه


                        #26
                        پاسخ : New مشکل در lcd کاراکتر

                        نوشته اصلی توسط shoniz نمایش پست ها
                        در کل ظاهراً کد ویژن مثل بسکام، رجستر یا تابع یا ... که مخصوص از بین بردن نویز ال سی دی نداره و باید از همین راه هایی که گفتید رو روش امتحان کنم و شاید شد شایدم نه ؟؟؟

                        و اگه کسی از روشی جواب گرفته، فقط یک نمونه کد بنویسه.

                        ممنون
                        اون قسمت از برنامه که برای نمایش دیتات استفاده کردی بذار
                        ایا فقط ال سی دی میاد و این دیتا رو نمایش میده ؟ یا قسمت های دیگه از برنامه باز از ال سی دی استفاده میکنن ؟
                        ایا تو وقفه ها از ال سی دی استفاده میکنی ؟
                        به جای lcd_clear();
                        از این استفاده کن
                        : (lcd_init(16
                        البته سرعت عمل این تابع کمتره ولی به چشم نمیاد
                        البته من به مواردی برخورد کردم که با این کار هم ال سی دی درست نشده و باید کل تغذیه رو قطع وصل کرد
                        ایا ال سی دی از برد اصلی خارج شده و برد مجزا داره یا روی برد اصلی لحیم شده ؟

                        دیدگاه


                          #27
                          پاسخ : New مشکل در lcd کاراکتر

                          نوشته اصلی توسط کاکو نمایش پست ها
                          اون قسمت از برنامه که برای نمایش دیتات استفاده کردی بذار
                          ایا فقط ال سی دی میاد و این دیتا رو نمایش میده ؟ یا قسمت های دیگه از برنامه باز از ال سی دی استفاده میکنن ؟
                          ایا تو وقفه ها از ال سی دی استفاده میکنی ؟
                          به جای lcd_clear();
                          از این استفاده کن
                          : (lcd_init(16
                          البته سرعت عمل این تابع کمتره ولی به چشم نمیاد
                          البته من به مواردی برخورد کردم که با این کار هم ال سی دی درست نشده و باید کل تغذیه رو قطع وصل کرد
                          ایا ال سی دی از برد اصلی خارج شده و برد مجزا داره یا روی برد اصلی لحیم شده ؟
                          توی پیام خصوصی یک پروسیجر رو فرستادم. طولانی بود اینجا ارسال نمیشد
                          *\ وقتی ارزش ها عوض بشن، عوضی ها باارزش می شن /*

                          دیدگاه

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