اطلاعیه

Collapse
No announcement yet.

درست کارنکردن LCD هنگام اتصال PICKIT3

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

    درست کارنکردن LCD هنگام اتصال PICKIT3

    سلام به همگی
    من تازه PICKIT3 رو از سایت خریدم . متاسفانه وقتی پروگرمر به برد بورد متصله نوشته های LCD بعد از چند ثانیه کار به صورت شیفتی محو میشه!
    وقتی پروگرمر رو جدا می کنم درست کار می کنه!
    توی فروم ها معمولا برعکسشو مشکل دارند !
    راهنمایی لطفا.
    برنامه توی ccs :

    کد:
    #include <16F877A.h>
    #device adc=16
    
    #include <math.h>
    
    #use delay(clock=20000000)
    
    //#include <lcd.c>
    
    #define LCD_ENABLE_PIN PIN_D2                 
    #define LCD_RS_PIN   PIN_D3                 
    #define LCD_RW_PIN   PIN_C4                 
    #define LCD_DATA4    PIN_C5              
    #define LCD_DATA5    PIN_C6                
    #define LCD_DATA6    PIN_C7                
    #define LCD_DATA7    PIN_D4
    
    #include <lcd.c>
    
    #define  LCD_CLS()  lcd_putc(\f)
    
    #use FIXED_IO( D_outputs=PIN_D5 )
    #use FIXED_IO( C_outputs=PIN_C2 ) //CCP1 OUTPUT
    #define LED  PIN_D5 
    
    #define LEFT_K   PIN_D6
    #define RIGHT_K   PIN_D7
    #define OK_K     PIN_B0
    #define MENU_K   PIN_B1
    #define UP_K     PIN_B2
    #define DOWN_K   PIN_B4
    
    #define MAX_MENU  2
    
    #FUSES NOWDT          //No Watch Dog Timer
    #FUSES HS            //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
    #FUSES LVP 
    
    unsigned int a=100;
    
    void main()
    {
      lcd_init();
      delay_ms(100);
      printf(lcd_putc,"Saleh\n");
      printf(lcd_putc,"int=%U",a);
      //output_high(LED);
      while(1)
      {
      output_high(LED);
      
      delay_ms(500);
      output_low(LED);
      delay_ms(500);
      
      }
    }
    چگونه می توان قطعات فلز را هوشمند نمود اما خویشتن را نه ؟!

    #2
    پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

    ورود شما رو ک با ماه عزیز شعبان مقارن شده تبریک عرض میکنیم.
    انشالله ک بیشتر از اون چیزی ک یاد میگیری،ب بقیه هم کمک کنی.
    خوب بنده متوجه نمیشم.
    شما با پروگرمر میکرو رو پروگرام میکنی و پروگرمر رو برمیداری و تغذیه رو وصل میکنی مگه نه؟باولتاژی ک از پروگرامر میگیری مدارتو تغذیه میکنی؟
    رو به خودت نسبت هستی مده!**دل به چنین مستی و پستی مده! //زانچه نداری ز چه افسردهآ‌ای*و زغم و اندوه دل آزردهآ‌ای؟!//گر ببرد ور بدهد دست دوست*ور بِبَرد ور بنهد مُلک اوست//ور بِکِشی یا بکُشی دیو غم **کج نشود دست قضا را قلم//آنچه خدا خواست همان میآ‌شود**وآنچه دلت خواست نه آن میآ‌شود.
    ....

    دیدگاه


      #3
      پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

      سلام

      ورود شما رو ک با ماه عزیز شعبان مقارن شده تبریک عرض میکنیم.
      خیلی متشکرم. البته من سال 87 عضو شدم و این اولین پست من بود. یا به عبارتی اولین دسته گلی که به آب دادم ! :redface:

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

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

      دیدگاه


        #4
        پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

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

        دیدگاه


          #5
          پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

          خواهش میکنم.
          بنده با کامپایلر ccs کار میکنم و فایل های هگز رو نه از طریق کامپایلر و ide بلکه جداگانه توسط pickit3 رو میکرو پروگرام میکنم.
          اونم ب این صورته ک ریست میکرو رو باز میکنم و طبق روش icsp همون 5 سیم پروگرام رو انجام میدم.
          اونجا هم وقتی میخاد میکرو رو شناسایی کنه،یه بار تغذیه ب مدار میاد و هر المان نوری هست،خاموش روشن میشه.
          و ب همین ترتیب هنگام write کردن و ... .
          نمیدونم منظورم رو تونستم برسونم یا نه.
          رو به خودت نسبت هستی مده!**دل به چنین مستی و پستی مده! //زانچه نداری ز چه افسردهآ‌ای*و زغم و اندوه دل آزردهآ‌ای؟!//گر ببرد ور بدهد دست دوست*ور بِبَرد ور بنهد مُلک اوست//ور بِکِشی یا بکُشی دیو غم **کج نشود دست قضا را قلم//آنچه خدا خواست همان میآ‌شود**وآنچه دلت خواست نه آن میآ‌شود.
          ....

          دیدگاه


            #6
            پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

            سلام
            ممنونم از عنایت دوستان عزیز.

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

            amanver عزیز ، بنده هم از طریق IDE پروگرم نمی کنم.
            البته با تغذیه ی جداگنه. هرچند فرمایش شما رو کامل نفهمیدم.

            به هر تقدیر چیزی که متوجه شدم اینه که وقتی پروگرمر متصل هست . هر تغییری در وضعیت پایه های RD6 و RD7 و RD5 اعم از تغییر وضعیت از بیرون و اعم از چک کردن وضعیت پایه از درون برنامه باعث این اختلال میشه. چه در حالت ورودی و چه در حالت خروجی .
            حواسم به این هم هست که ورودی شناور نباشه.
            خیلی عجیبه !
            برد بورد رو هم کاملا تعویض کردم .
            فکر می کنید میکرو مشکل داره ؟


            زنده باد
            چگونه می توان قطعات فلز را هوشمند نمود اما خویشتن را نه ؟!

            دیدگاه


              #7
              پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

              میخام بگم ک هنگام پروگرام کردن،حالت پایدار مدار نیست ک شما انتظار کارکرد درست مدار رو داشته باشی.
              شما فقط پروگرام میکنی و بعد تغذیت رو وصلر میکنی.
              برای اطمینان از سالم بودن میکرو هم میتونی بعد از وصل پروگرمر،یه بار Erase اش کنی و بعد verify.
              اگر verify شد.یعنی سالمه(تجربه ای ک بنده داشتم) اگه نشد دلیل بر خراب بودن میکروت نیس.
              موفق باشی
              رو به خودت نسبت هستی مده!**دل به چنین مستی و پستی مده! //زانچه نداری ز چه افسردهآ‌ای*و زغم و اندوه دل آزردهآ‌ای؟!//گر ببرد ور بدهد دست دوست*ور بِبَرد ور بنهد مُلک اوست//ور بِکِشی یا بکُشی دیو غم **کج نشود دست قضا را قلم//آنچه خدا خواست همان میآ‌شود**وآنچه دلت خواست نه آن میآ‌شود.
              ....

              دیدگاه


                #8
                پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

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

                به هر تقدیر با شرایط صد در صد مذخرف برنامه رو کامل کردم و هر بار مدار رو خاموش کردم و پروگرمر رو متصل کردم و پروگرم کردم و باز خاموش کردم و جدا کردم و روشن کردم که ببینم نتیجه رو !
                حالا مدار به طور جداگانه خوب کار می کنه.

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

                دیدگاه


                  #9
                  پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

                  پایه d5 که مشکلی نداره اما پایه های d6 و d7 یعنی همون PGC و PGD توصیه میشه به جایی وصل نباشه و فقط به سوکت ICSP متصل باشه و من از موقعی که اینکار رو کردم نه با PICKIT2 و نه با 3 مشکلی نداشتم


                  در مورد مشکل جدید شما احتمال زیاد مشکل تغذیه دارید
                  AYRIC

                  دیدگاه


                    #10
                    پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

                    راستش تا جایی که من می بینم RB6 و RB7 مربوط به پروگرم هست.
                    من هم از پایه های پروگرم PGD و PGC و PGM استفاده ی دیگه ای نکردم!
                    چگونه می توان قطعات فلز را هوشمند نمود اما خویشتن را نه ؟!

                    دیدگاه


                      #11
                      پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3


                      پس یا تغذیس یا میکرو مشکل داره
                      AYRIC

                      دیدگاه


                        #12
                        پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

                        تغذیه رو هم عوض کردم فقط مونده تعویض میکرو که ندارم!!!
                        زنده باد
                        چگونه می توان قطعات فلز را هوشمند نمود اما خویشتن را نه ؟!

                        دیدگاه


                          #13
                          پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

                          فرمودی اسکوپ داری؟
                          تو دیتاشیت 18f452 اگه به پابه های اسیلاتور خروجی نگاه کنیم،درمیابیم که یکی ورودیه و اون یکی بضورت خروجی نشان داده شده است. شما پایه خروجی رو به اسکوپ بزن ببین پالس داری؟
                          البته تو 8051 هم پایه ای بود(فک کنم ale) برای تست کردن سالم بودن میکرو ازش استفاده میکردیم.بدین صورت ک اون پایه رو ب اسکوپ وصل میکردیم(بایکی کردن زمین میکرو و اسکوپ).
                          اون روش پاک کردن و وریفای کردن جواب نداد؟
                          موفق باشی
                          رو به خودت نسبت هستی مده!**دل به چنین مستی و پستی مده! //زانچه نداری ز چه افسردهآ‌ای*و زغم و اندوه دل آزردهآ‌ای؟!//گر ببرد ور بدهد دست دوست*ور بِبَرد ور بنهد مُلک اوست//ور بِکِشی یا بکُشی دیو غم **کج نشود دست قضا را قلم//آنچه خدا خواست همان میآ‌شود**وآنچه دلت خواست نه آن میآ‌شود.
                          ....

                          دیدگاه


                            #14
                            پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

                            سلام
                            ببخشید مسافرت بودم....

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

                            حالا دارم برنامه جدید می نویسم. چون میکرو دیگه از اون 877 ندارم ، دارم واسه 18452 می نویسم.
                            فعلا که علافم!!

                            اضافه شده در تاریخ :
                            سلام
                            اوووووووف ! کف کردم !! فکر کنم بیشتر تاپیک های مربوط به LCD رو خوندم!

                            مشکلم با پروگرمر حل شد . البته من کاری نکردم . فقط به جای CCS از MPLABX و XC8 استفاده کردم.
                            مشکل خود به خود حل شد.

                            من با توجه به اینکه به میکرو هم شک داشتم اونو با 18F452 تعویض کردم و یه پروژه جدید واسش نوشتم که همون کارو بکنه ولی همچنان اون حساسیت وجود داره !
                            منبع تغذیه رو هم تعویض کردم بازم همونطوره.
                            وقتی پراب اسکوپ بهش وصل میشه کلا هنگ می کنه.
                            فکر کنم تمام رهنمود های تاپیک ها رو مثل غیر فعال کردن LV یا MCLR یا ... رو آزمایش کردم. قبلا هم بردبورد رو کامل عوض کردم!!
                            گزینه ی بعدی پاک کردن صورت مساله است و رفتن سراغ AVR چینی به درد نخور :sad:

                            الان مشکل جدیدم اینه که از کتابخانه ی XLCD استفاده کردم و با اینکه پایه های مورد نیاز رو با رعایت تمام مسایل قید شده در تاپیک ها تنظیم کردم ، LCD کار نمی کنه.
                            نهایتا بعد از چند ساعت با بررسی فایل لیست متوجه شدم که به جای پورت مورد نظر من داره از همون پورت B پیش فرض خودش استفاده می کنه.
                            من حتی فایل هدر خود کتابخانه ی داخلی XC8 رو هم ادیت کردم ولی باز هم از B استفاده می کنه !!!
                            آخه از کجا می فهمه که پیش فرضش چیه ؟!
                            بد بختانه وقتی عمدا فایل کتابخانه رو سیخ می زنم تا خطا بده ، باز هم خطا نمی ده !!!!

                            :angry:

                            اضافه شده در تاریخ :
                            خوب تا حدودی این مشکل مسخره با مطالعه ی داکیومنت xc8 رفع شد.
                            من فایل های پیاده سازی توابع موجود در xlcd.h رو توی پروژه اضافه کردم و مشکل تا حدودی حل شد.
                            البته مشکل جدید اینه که واسه ی نمایش یه رشته فقط حرف اول رشته نمایش داده می شه!!
                            همه ی این ها نشون از ناهماهنگی ide با کامپایلره !
                            واقعا که!
                            وقتی همه چیز واسه ی اینا پول باشه ازین بهتر نمیشه!
                            حالا ببینید اگه همین بروبچ اوپن سورس نبودن اینا چکار میکردن...

                            شایدم الان من عصبانیم و دارم شر و ور میگم....

                            زنده باد

                            اضافه شده در تاریخ :
                            کسی پیشنهادی واسه ی تغییر محیط و کامپایلر نداره ؟
                            فقط خواهشا پایدار و سطح پایین...
                            از میکروسی و اره ماهی و ... خوشم نمیاد ... دست آدمو می بندن ...

                            اضافه شده در تاریخ :
                            سلام
                            دوستان لطفا راهنمایی بفرمایید.... بنده کارم همچنان گیره ... کامپایلر ؟!

                            ccs مشکل نویز واسم ایجاد می کنه و xc8 هم نقص داره توی کامپایل!

                            به نظرتون تمام توابع فایل های هدر و سورس هاشو توی یه فایل بیارم واسه کامپایل بهتر نمیشه ؟

                            زنده باد

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

                            راستش همونطور که حضرات فرمودند بنده تقریبا آخرین نسخه ccs رو دانلود کردم و مشکلم با پروگرمر و LCD و نویز تا حدود خوبی رفع شد.
                            موضوعی که منو متعجب میکنه اینه که توی برنامه ام پایه های LCD رو اینطور تعریف کردم :


                            کد:
                            #define LCD_ENABLE_PIN PIN_C4
                            #define LCD_RS_PIN PIN_C5
                            #define LCD_RW_PIN PIN_C6
                            #define LCD_DATA4 PIN_D0
                            #define LCD_DATA5 PIN_D1
                            #define LCD_DATA6 PIN_D2
                            #define LCD_DATA7 PIN_D3
                            و از طرفی توی وقفه ی تایمر یه شکل موج روی پایه ی RC2 ایجاد کردم.
                            در این حالت وقتی پایه صفر و یک میشه ، دیگه LCD کار نمی کنه!
                            حتی پیکر بندی هم نمیشه!!

                            من پایه ی کنترلی LCD رو آوردم روی پورت D و مشکلم حل شد! البته با این کار صورت مساله رو پاک کردم!!


                            کد:
                            #define LCD_ENABLE_PIN PIN_D4
                            #define LCD_RS_PIN PIN_D5
                            #define LCD_RW_PIN PIN_D6
                            #define LCD_DATA4 PIN_D0
                            #define LCD_DATA5 PIN_D1
                            #define LCD_DATA6 PIN_D2
                            #define LCD_DATA7 PIN_D3
                            کسی می دونه چرا اینطوری میشه ؟

                            اضافه شده در تاریخ :
                            و اما مشکل جدید !!!

                            این سورس برنامه ی من هست:

                            کد:
                            #include <18F452.h>
                            #device ADC=16 *=16
                            
                            #FUSES NOWDT          //No Watch Dog Timer
                            #FUSES WDT128          //Watch Dog Timer uses 1:128 Postscale
                            #FUSES PUT           //Power Up Timer
                            #FUSES NOBROWNOUT        //No brownout reset
                            #FUSES BORV45          //Brownout reset at 4.5V
                            #FUSES NOLVP          //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
                            
                            #use delay(crystal=20MHz)
                            #use fixed_io(c_outputs=PIN_C2 , PIN_C3)
                            #define FEED1  PIN_A0
                            #define FEED2  PIN_A1
                            #define FEED3  PIN_A2
                            #define FEED4  PIN_A3
                            #define FEED5  PIN_A4
                            #define FEED6  PIN_A5
                            #define OK_K  PIN_B0
                            #define UP_K  PIN_B1
                            #define DOWN_K  PIN_B2
                            #define LEFT_K  PIN_B3
                            #define RIGHT_K  PIN_B4
                            #define MENU_K  PIN_D7
                            کد:
                            #include <main.h>
                            
                            #define LCD_ENABLE_PIN PIN_D4
                            #define LCD_RS_PIN PIN_D5
                            #define LCD_RW_PIN PIN_D6
                            #define LCD_DATA4 PIN_D0
                            #define LCD_DATA5 PIN_D1
                            #define LCD_DATA6 PIN_D2
                            #define LCD_DATA7 PIN_D3
                            
                            #include <lcd.c>
                            
                            #define MAX_MENU  2
                            #define PRE_T0   16
                            #define PRE_T1   1
                            #define F_SYS  5000000
                            #define MAX_tfsw  65510  // FOR 192307.69/2 Hz  ~ 96 KHz
                            #define MIN_tfsw  63035  // FOR 1999.2/2 Hz   ~ 1  KHz
                            #define MAX_tfrq  63973  // FOR 199.93/2 Hz   ~ 100 Hz
                            #define MIN_tfrq  34285  // FOR 9.999/2 Hz    ~ 5  Hz
                            
                            unsigned int menu=0;
                            unsigned int16 tfsw=65358 ,tfrq=62410 ;
                            float fsw=14124.293 ,frq=50.002 ;
                            //unsigned int stat_c2=0,stat_c3=0;
                            
                            //unsigned int32 temp1=0,temp2=0;
                            
                            #INT_TIMER0
                            void TIMER0_isr(void) // for 50 Hz
                            {
                              clear_interrupt(int_timer0);
                              set_timer0(tfrq);
                              output_toggle(PIN_C2);
                              
                            }
                            
                            #INT_TIMER1
                            void TIMER1_isr(void) // for 28KHz
                            {
                              clear_interrupt(int_timer1);
                              //setup_timer_1(T1_DISABLED);
                              set_timer1(tfsw);
                              output_toggle(PIN_C3);
                              //setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
                            }
                            
                            void main()
                            {
                              delay_ms(10);
                              output_drive(PIN_C2);
                              output_drive(PIN_C3);
                              output_low(PIN_C2);
                              output_low(PIN_C3);
                              setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16);   
                              setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);   
                              
                              lcd_init();
                              delay_ms(10);
                              
                              printf(lcd_putc,"\fAPS PWM\n");
                              printf(lcd_putc,"Saleh.ChZ");
                              delay_ms(750);
                              fsw = (float) (F_SYS/PRE_T1)/(65536-tfsw)/2;
                              frq = (float) (F_SYS/PRE_T0)/(65536-tfrq)/2;
                              //printf(lcd_putc,"\f fsw=%5.3fHz\n frq=%3.3fHz",fsw,frq);
                              printf(lcd_putc,"\f %5.3f,%Lu\n %3.3f,%Lu",fsw,tfsw,frq,tfrq);
                              
                              enable_interrupts(INT_TIMER1);
                              enable_interrupts(INT_TIMER0);
                              enable_interrupts(GLOBAL);
                            
                              while(TRUE)
                              {
                               //TODO: User Code
                               if (input(MENU_K)==0)
                               {
                                 delay_ms(50);
                                 if (input(MENU_K)==0)
                                 {
                                  if(menu>0)
                                  {
                                    menu=0;
                                    lcd_gotoxy(1,1);
                                    lcd_putc(' ');
                                    lcd_gotoxy(1,2);
                                    lcd_putc(' ');
                                  }
                                  else
                                  {
                                    menu=1;
                                    lcd_gotoxy(1,1);
                                    lcd_putc('>');
                                    lcd_gotoxy(1,2);
                                    lcd_putc(' ');
                                  }
                                 while(input(MENU_K)==0);
                                 }
                               }
                               //*****************************************************************
                               if(menu>0)
                               {
                                 if (input(LEFT_K)==0)//************  left
                                 {
                                  delay_ms(50);
                                  if (input(LEFT_K)==0)
                                  {
                                    if(menu>1) menu--;
                                    while(input(LEFT_K)==0);  
                                  }
                                 }
                                 if (input(RIGHT_K)==0)//************  right
                                 {
                                  delay_ms(50);
                                  if (input(RIGHT_K)==0)
                                  {
                                    if(menu<MAX_MENU) menu++;
                                    while(input(RIGHT_K)==0);
                                  }
                                 }
                                 if (input(UP_K)==0)//************   up
                                 {
                                  delay_ms(50);
                                  if (input(UP_K)==0)
                                  {
                                    switch(menu)
                                    {
                                     case 1: // fsw
                                       if(tfsw < MAX_tfsw) tfsw++;
                                       while(input(UP_K)==0);
                                     break;
                                     case 2: // sin freq
                                       if(tfrq < MAX_tfrq) tfrq++;
                                       delay_ms(10);
                                     break;
                                    }
                                    fsw = (float) (F_SYS/PRE_T1)/(65536-tfsw)/2;
                                    frq = (float) (F_SYS/PRE_T0)/(65536-tfrq)/2;
                                    //printf(lcd_putc,"\f fsw=%5.3fHz\n frq=%3.3fHz",fsw,frq);
                                    printf(lcd_putc,"\f %5.3f,%Lu\n %3.3f,%Lu",fsw,tfsw,frq,tfrq);
                                    //while(input(UP_K)==0);
                                  }
                                 }
                                 if (input(DOWN_K)==0)//************
                                 {
                                  delay_ms(50);
                                  if (input(DOWN_K)==0)
                                  {
                                    switch(menu)
                                    {
                                     case 1: // fsw
                                       if(tfsw > MIN_tfsw) tfsw--;
                                       while(input(DOWN_K)==0);
                                     break;
                                     case 2: // sin freq
                                       if(tfrq > MIN_tfrq) tfrq--;
                                       delay_ms(10);
                                     break;
                                    }
                                    fsw = (float) (F_SYS/PRE_T1)/(65536-tfsw)/2;
                                    frq = (float) (F_SYS/PRE_T0)/(65536-tfrq)/2;
                                    //printf(lcd_putc,"\f fsw=%5.3fHz\n frq=%3.3fHz",fsw,frq);
                                    printf(lcd_putc,"\f %5.3f,%Lu\n %3.3f,%Lu",fsw,tfsw,frq,tfrq);
                                    //while(input(DOWN_K)==0);
                                  }
                                 }
                                 switch(menu)
                                 {
                                  case 1://changing fsw
                                    lcd_gotoxy(1,1);
                                    lcd_putc('>');
                                    lcd_gotoxy(1,2);
                                    lcd_putc(' ');
                                  break;
                                  case 2://changing frq
                                    lcd_gotoxy(1,1);
                                    lcd_putc(' ');
                                    lcd_gotoxy(1,2);
                                    lcd_putc('>');
                                  break;
                                 }
                               }
                               else
                               {
                                 //clearing '>' characters
                                 lcd_gotoxy(1,1);
                                 lcd_putc(' ');
                                 lcd_gotoxy(1,2);
                                 lcd_putc(' ');
                                 
                               }
                              }
                            
                            }
                            نکته قابل توجه اینه که وقتی من محاسبات رو انجام می دم فرکانس خروجی از پایه ی مورد نظرم باید 14044.94 هرتز باشه ولی وقتی با اسکوپ و مولتی متر چک می کنم فرکانس 10810 هرتز میاد!!!
                            از طرفی وقتی روتین مربوط به فرکانس 50 هرتز رو غیر فعال می کنم ، فرکانس 10810 هرتزی یه مقدار بالاتر میاد ! :eek:

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

                            دیدگاه


                              #15
                              پاسخ : درست کارنکردن LCD هنگام اتصال PICKIT3

                              این ایرادات تو برنامتون به چشم میخوره:
                              1.لازم نیست پرچم وقفه رو صفر کنید. خود CPU انجام میده.
                              2.تایمر0 هشت بیتی هست ولی مقداری که شما توش میریزی 16 بیتی هست و این اشتباه فاحشی هست که باعث نتایج غیر قابل پیش بینی میشه.
                              3.تا جایی که ممکنه از float استفاده نکنید. در واقع اصلاً از float استفاده نکنید. خیلی کند و سنگینه.

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

                              دیدگاه

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