اطلاعیه

Collapse
No announcement yet.

مشکل با ساخت فرکانس 30khz

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

    #16
    پاسخ : مشکل با ساخت فرکانس 30khz

    سلام تونستید مشکلشو پیدا کنید؟؟؟؟



    شما خودتون کدوم مدل از این انالیزر ها رو دارید؟

    دیدگاه


      #17
      پاسخ : مشکل با ساخت فرکانس 30khz

      مشکل چی رو؟
      گفت که دیوانه نهی لایق این خانه نهی

      دیدگاه


        #18
        پاسخ : مشکل با ساخت فرکانس 30khz

        سلام دوستان
        من سابقا AVR رو با CODEVISION کار میکردم اما انعطاف پذیری بسیار بالا و توابع آماده و تقریبا بی نقص و وسیع BASCOM تا به الان باعث شده که باهاش بیشتر از codevision کنار بیام و تقریبا به جز موارد خاص که اون هم مربوط به سفارش و اصرار شخص سفارش دهنده در استفاده از codevision باشه همون bascom رو ترجیح میدم .
        در مورد همین پروتکل RC5 گرچه بالاخره با زبان C تونستم تو یک پروژه تجاری بنویسمش اما پیش از این پروژه و بعد از اون هرگز راضی به استفاده از اون نشدم .
        درد سرتون ندم طی 5 یا شش خط دقیقا طبق مثالی که تو خود راهنمای BASCOM هست میتونید هم کد RC5 بفرستید هم بگیرید و ضمنا کنترل لوازم منزل که از این پروتکل پشتیبانی میکنن رو به راحتی آب خوردن بخونید .
        نمیخوام زیادی تعریف کنم اما سادگی و نظم و پیروی از یک برنامه نویسی استاندارد البته با سورس بسته و البته مهم تر از همه اینها امکان یادگیری بسیار سریع برنامه نویسی به زبان بیسیک و درک برنامه های نوشته شده حتی پیش از یادگیری این زبان از مزایای انکار نکردنی این کامپایلر هست .
        شما در BASCOM 2.075 در ایندکس برای دریافت بنویسید GETRC5 و برای ارسال RC5 یا RC6 رو بنویسید و از راهنمای کامل و مثالش مستقیم استفاده کنید .
        موفقیت یک فرایند است نه یک اتفاق...

        ******** استفاده از گزینه تشکر نشانه اهمیت و احترام شما به پیگیری شخص نظر دهنده است ********

        دیدگاه


          #19
          پاسخ : مشکل با ساخت فرکانس 30khz

          نوشته اصلی توسط erfan2000
          سلام دوستان
          من سابقا AVR رو با CODEVISION کار میکردم اما انعطاف پذیری بسیار بالا و توابع آماده و تقریبا بی نقص و وسیع BASCOM تا به الان باعث شده که باهاش بیشتر از codevision کنار بیام و تقریبا به جز موارد خاص که اون هم مربوط به سفارش و اصرار شخص سفارش دهنده در استفاده از codevision باشه همون bascom رو ترجیح میدم .
          در مورد همین پروتکل RC5 گرچه بالاخره با زبان C تونستم تو یک پروژه تجاری بنویسمش اما پیش از این پروژه و بعد از اون هرگز راضی به استفاده از اون نشدم .
          درد سرتون ندم طی 5 یا شش خط دقیقا طبق مثالی که تو خود راهنمای BASCOM هست میتونید هم کد RC5 بفرستید هم بگیرید و ضمنا کنترل لوازم منزل که از این پروتکل پشتیبانی میکنن رو به راحتی آب خوردن بخونید .
          نمیخوام زیادی تعریف کنم اما سادگی و نظم و پیروی از یک برنامه نویسی استاندارد البته با سورس بسته و البته مهم تر از همه اینها امکان یادگیری بسیار سریع برنامه نویسی به زبان بیسیک و درک برنامه های نوشته شده حتی پیش از یادگیری این زبان از مزایای انکار نکردنی این کامپایلر هست .
          شما در BASCOM 2.075 در ایندکس برای دریافت بنویسید GETRC5 و برای ارسال RC5 یا RC6 رو بنویسید و از راهنمای کامل و مثالش مستقیم استفاده کنید .
          اقا از نظری که دادید ممنون

          میشه اون نمونه کدی که با c نوشتید برام یزارید واقعا ممنون میشم ..... :applause: :applause: :applause:


          بله در مورد بسکام تو این مورد حق با شماست :smile:

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

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

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

          کار میکنم

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

          و اصلا نیاز نبود بیام سوال کنم

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

          دیدگاه


            #20
            پاسخ : مشکل با ساخت فرکانس 30khz

            نوشته اصلی توسط Finder_
            مشکل چی رو؟
            همین برنامه دیگه

            دیدگاه


              #21
              پاسخ : مشکل با ساخت فرکانس 30khz

              اقا دوستمون همین پروژه با codvision انجام داده ولی تو قسمت گیرنده؟؟؟؟

              الان پستشو تو انجمن گذاشته

              دیدگاه


                #22
                پاسخ : مشکل با ساخت فرکانس 30khz

                سلام

                یکی نیست ی کمکی بما بکنه؟؟؟؟!!! :cry2: :cry2: :cry2: :cry2:

                دیدگاه


                  #23
                  پاسخ : مشکل با ساخت فرکانس 30khz

                  با سلام دوست عزیز h.torabi
                  با کمال شرمندگی نوشتن این برنامه مربوط به سال 82 یعنی دوره کاردانی بنده بود و الان اسناد مربوط به اون رو پیدا نمیکنم ، از روند نوشتنش هم فقط کمی خاطرم هست که به این صورت بود
                  خروجی یک گیرنده اکتیو ir رو به پایه INT0 مگا 16 وصل کردم و اینتراپت رو روی لبه بالارونده تنظیم کردم در روتین وقفه اینتراپت 0 اول تایمر 1 رو فعال کردم و بعد مد اینتراپت رو به لبه پایین رونده تغییر دادم و در روتین اینتراپت اگر CONFIG رجیستر کنترلی TIMER 0 مربوط به لبه پایین رونده بود تایمر رو متوقف و در غیر اینصورت تایمر رو استارت میکرد .
                  به این ترتیب میتونستم دریافت استارت بیت و سایر بیتهای اطلاعات رو تشخیص بدم البته در صورتی که T بدست اومده از تایمر با زمان تاخیر استاندارد RC5 مطابقت داشت در غیر اینصورت فرض میشد که کد ارسالی مربوط به پروتکل مورد نظر نیست . شرمنده ام بیشتر خاطرم نیست یعنی دیگه همچین زجری رو به خودم ندادم که ریزه کاریهای یک پروتکل رو انگولک کنم ، تصمیم گرفتم وقتم رو به چیزای با ارزشتری اختصاص بم و طور دیگه ای ازش استفاده کنم و حقیقت همینه حتی اگر خیلی ها اسمش رو راحت طلبی بذارن تا وقتی Bascom هست تا حد امکان از توابع آماده استفاده میکنم .




                  موفقیت یک فرایند است نه یک اتفاق...

                  ******** استفاده از گزینه تشکر نشانه اهمیت و احترام شما به پیگیری شخص نظر دهنده است ********

                  دیدگاه


                    #24
                    پاسخ : مشکل با ساخت فرکانس 30khz

                    و اما چند پیشنهاد برای پیشبرد پروژه شما البته بیشتر در زمینه سخت افزار و حل مشکلات جانبی :
                    1 - اگر مراحل زیر رو با دقت پیگیری میکنید ، لاجیک انالایزر و انواع دیگری از این تجهیزات رو لازم ندارید و نیاز نیست برای انجام یک پروژه اینها رو بخرید .
                    2 - اگر قصد دارید بدونید که آیا امواج توسط گیرنده شما دریافت میشن یا خیر کافی هست تا یکی از این تغذیه ها رو " دقیقا با مدار پیشنهادی در دیتا شیت " پیکر بندی کنید (( کوچکترین تغییرات پیش از راه اندازی موفقیت آمیز شما در اولین دفعات نتیجه کار رو به ضرر شما تغییر خواهد داد.)) و خروجی اون رو با یک خازن به ورودی اسپیکر رایانه خودتون وصل کنید و امواج یک کنترل از راه دور رو به سمت این گیرنده ارسال کنید تا دریافت این سیگنالها رو به صورت صوتی متوجه بشید .
                    3 - اکیدا اصرار دارم که فرستنده و گیرنده رو همزمان نسازید و اول گیرنده رو با یک کنترل استاندارد rc5 که مربوط به لوازم خونه هست بسازید وو مشکلاتش رو حل کنید بعد برید سراغ فرستنده ...
                    کنترل تلوزونهای CRT قدیمی مثل NEC و SAMSUNG و شهاب مدل 2000 و مدل پلنگی از پروتکل RC5 استفاده میکردند .
                    4- حد اقل برای مطمئن شدن از ارسال کد RC5 از ریموت کنترلی که در پیشنهاد 3 اشاره شد برنامه رو در بسسکام بنویسید و از صحیح کار کردن کنترل مورد نظر و اینکه اصلا پروتکلش RC5 هست مطئن بشید . به این ترتیب میتونید فرستنده RC5 رو که خودتون با C نوشتید هم تست کنید و ...
                    با ظرایطی که گفته شد مراحل کار رو ادامه بدید .

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

                    ******** استفاده از گزینه تشکر نشانه اهمیت و احترام شما به پیگیری شخص نظر دهنده است ********

                    دیدگاه


                      #25
                      پاسخ : مشکل با ساخت فرکانس 30khz

                      سلام دوست عزیزerfan2000

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

                      راستش من رفتم برنامه خودم دقیق چک کردم با استفاده از شبیه ساز protuse متوجه شدم اصلا اونچیزی که فکر مینم درست نمیشه مثلا الان این کدی که نوشتم

                      برای ساخت فرکانس 30KHz ولی من با توجه به برنامه protuse دارم 31KHz درست میکنم ...

                      برا همین روی بحث تایمر حسابی زوم کردم :read: :read: :read:

                      من هر کدی که مینوسم با خطا بوجود میاد حالا نمیدونم این مشکل شبیه ساز protuse

                      چون رو سیستم من موقع شبیه سازی این error میده شبیه سازی real time نیست

                      و برا همین تصمیم دارم یک لاجیک انالیزر تهیه کنم :job:

                      به عنوان مثال شما فرض کن ی تایمر 0 داره که از 0 تا 255 میشمره فرکانس میکرو هم روی 4MHz قرار داره

                      فرکانس تامر هم بدون اینکه تقسیم کنیم همان 4MHz قرار میدیم

                      خب تاحالا ی تایمر داریم که مدت زمان هر کلاک تایمر برابر میشه با 1/4000 با 0.25 میکرو ثانیه

                      خب اگه برای شماردن 0 تا 255 به 255 کلاک نیاز داشته باشیم مدت زمانیکه لازم تا تیمر سر ریز کنه برابر با 255*0.25

                      که تقریبا میشه 63 میکرو ثانیه

                      حالا ما تو قسمت اینترابت ی خط برنامه مینوسیم که در هربار سر ریز port مورد نظر حالتش عوض بشه

                      ینی ی موج دارم با duty cycle 50%

                      و مدت زمان رو شن و خاموش بودن باید برابر 63 میکرو ثانیه بشه

                      ولی وقتی من همچین چیزی تو protuse

                      امتحان میکنم بیشتر از این میشه!!!!!!!!!

                      مدت زمان خاموش و روشن بودن port میشه حدود 67

                      اینم کدم
                      دوستان ی تست بزنن شاید روی pc شما درست نشون بده ماهم دیگه نریم ی لاجیک انالیزر بخریم :biggrin:
                      کد:
                      #include <mega8.h>
                      
                      // Timer 0 overflow interrupt service routine
                      interrupt [TIM0_OVF] void timer0_ovf_isr(void)
                      {
                      // Place your code here
                      PORTB=~PORTB;
                      }
                      
                      // Declare your global variables here
                      
                      void main(void)
                      {
                      // Declare your local variables here
                      
                      // Input/Output Ports initialization
                      // Port B initialization
                      // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out 
                      // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 
                      PORTB=0x00;
                      DDRB=0xFF;
                      
                      // Port C initialization
                      // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                      // State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                      PORTC=0x00;
                      DDRC=0x00;
                      
                      // Port D initialization
                      // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
                      // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
                      PORTD=0x00;
                      DDRD=0x00;
                      
                      // Timer/Counter 0 initialization
                      // Clock source: System Clock
                      // Clock value: 4000.000 kHz
                      TCCR0=0x01;
                      TCNT0=0x00;
                      
                      // Timer/Counter 1 initialization
                      // Clock source: System Clock
                      // Clock value: Timer1 Stopped
                      // Mode: Normal top=0xFFFF
                      // OC1A output: Discon.
                      // OC1B output: Discon.
                      // Noise Canceler: Off
                      // Input Capture on Falling Edge
                      // Timer1 Overflow Interrupt: Off
                      // Input Capture Interrupt: Off
                      // Compare A Match Interrupt: Off
                      // Compare B Match Interrupt: Off
                      TCCR1A=0x00;
                      TCCR1B=0x00;
                      TCNT1H=0x00;
                      TCNT1L=0x00;
                      ICR1H=0x00;
                      ICR1L=0x00;
                      OCR1AH=0x00;
                      OCR1AL=0x00;
                      OCR1BH=0x00;
                      OCR1BL=0x00;
                      
                      // Timer/Counter 2 initialization
                      // Clock source: System Clock
                      // Clock value: Timer2 Stopped
                      // Mode: Normal top=0xFF
                      // OC2 output: Disconnected
                      ASSR=0x00;
                      TCCR2=0x00;
                      TCNT2=0x00;
                      OCR2=0x00;
                      
                      // External Interrupt(s) initialization
                      // INT0: Off
                      // INT1: Off
                      MCUCR=0x00;
                      
                      // Timer(s)/Counter(s) Interrupt(s) initialization
                      TIMSK=0x01;
                      
                      // USART initialization
                      // USART disabled
                      UCSRB=0x00;
                      
                      // Analog Comparator initialization
                      // Analog Comparator: Off
                      // Analog Comparator Input Capture by Timer/Counter 1: Off
                      ACSR=0x80;
                      SFIOR=0x00;
                      
                      // ADC initialization
                      // ADC disabled
                      ADCSRA=0x00;
                      
                      // SPI initialization
                      // SPI disabled
                      SPCR=0x00;
                      
                      // TWI initialization
                      // TWI disabled
                      TWCR=0x00;
                      
                      // Global enable interrupts
                      #asm("sei")
                      
                      while (1)
                         {
                         // Place your code here
                      
                         }
                      }
                      لبته اینم بگم الان من کمترین کدیه که میشد برای اینراپت نوشتم و مقدارش خطا داره اگه حجم کد نوشته شده بیشتر بشه این خطا هم بیشتر میشه

                      بنظر شما علت چیه؟؟؟

                      یعنی برای رفع این مشکل باید از اسمبلی استفاده کنم یا مشکل از برنامه protuse هست؟



                      دیدگاه


                        #26
                        پاسخ : مشکل با ساخت فرکانس 30khz

                        دوستان نظری ندارن؟

                        دیدگاه


                          #27
                          پاسخ : مشکل با ساخت فرکانس 30khz

                          خوب باید گفت که این خیلی دور از انتظار نیست و اجرای هر دستور در برنامه یک تعداد ماشین سایکلی داره که در جداول مخصوص به خودش برای هر دستور مشخص هست و این زمان هم به مدت زمان سر ریز برنامتون اضافه میشه بعضی از دستورات انجامشون چند مرحله داره مثل تقسیم که مثلا اگر عددی رو به 10 تقسیم کنید تا اونجا که یادم هست 2 ماشین سایکل مربوط به اجرای دستور تقسیم 2 تا مربوط به کپی مقسوم و 2 تا مربوط به کپی مقسوم علیه در SFR ها هست پون تقسیم فقط در این رجیستر ها انجام پذیره و ده ماشین سایکل برای تکرار یک فرایند تفاضل هست که کار تقسیم رو انجام میده و 2 تا مربوط به کپی کردن جواب از SFR ها به رجیستر مورد نظر شما به عنوان خروجی حالا همه اینها در مدت زمان یک ماشین سایکل ضرب میشن ( در مورد شما که 0.25 میکرو ثانیه بود فکر میکنم همین فرایند تقسیم حدودا 4.5 میکرو ثتنیه طول بکشه ) ، ضمنا من در گیرنده های بازار اعداد 36 کیلو و 38 کیلو و بالاتر خاطرم هست شما مطمئن هستی که باید 30 کیلو باشه ؟
                          شما برای 30 کیلو هر بار در وقفه اینتراپت مقدار اولیه رجیستر تایمر 0 رو برابر 134 قرار بده و نتیجه رو تست کن .
                          من حساب کردم 1/30000 = 33.3 میکرو ثانیه و خوب با کلاکی که شما داری هر 4 کلاک میشه 1 میکرو ثانیه پس 33.3 *4 حددودا میشه 121 پس مقدار اولیه تایمر شما باید 121-255=134 باشه اینطوری تایمر هر دفه از 134 شروع به شمردن میکنه تا سر ریز اتفاق بیفته و پالس شما رو ایجاد میکنه ...
                          موفقیت یک فرایند است نه یک اتفاق...

                          ******** استفاده از گزینه تشکر نشانه اهمیت و احترام شما به پیگیری شخص نظر دهنده است ********

                          دیدگاه


                            #28
                            پاسخ : مشکل با ساخت فرکانس 30khz

                            در ادامه باید بگم که اعدادی که پروتئوس در اسیلوسکوپ و یا لاجیک آنالایزر و سایر بخشها نشون میدن تا حد زیادی قابل اعتماد هستند و با عملکرد مدار در واقعیت در بسیار ی موارد اصلا اختلاف ندارند .
                            شما در پروتئوس در نوار ابزار در بخش INSTRUMENTS ابزار Counter timer رو استفاده کنید و بعد از قرار دادن در مدار، در بخش تنظیماتش اون رو روی مد فرکانس قرار بدین ، حالا شما میتونین پالس خروجی مدارتون رو با اتصال به پایه CLK این ابزار دقیقا مورد بررسی قرار بدیین و پس از گرفتن نتیجه مطلوب روی سخت افزار هم تست کنین .
                            حتما فرکانسهای دیگه خصوصا 36 کیلو و 38 کیلو رو هم با همین روش تولید کنید و با روشی که قبلا خدمت شما گفته شد با اسپیکر رایانتون دریافت پالس رو در خروجی پایه دیتا در گیرنده 3 پایه اکتیو چک کنید ...
                            موفقیت یک فرایند است نه یک اتفاق...

                            ******** استفاده از گزینه تشکر نشانه اهمیت و احترام شما به پیگیری شخص نظر دهنده است ********

                            دیدگاه


                              #29
                              پاسخ : مشکل با ساخت فرکانس 30khz

                              نوشته اصلی توسط Dr.micro
                              من حساب کردم 1/30000 = 33.3 میکرو ثانیه و خوب با کلاکی که شما داری هر 4 کلاک میشه 1 میکرو ثانیه پس 33.3 *4 حددودا میشه 121 پس مقدار اولیه تایمر شما باید 121-255=134 باشه اینطوری تایمر هر دفه از 134 شروع به شمردن میکنه تا سر ریز اتفاق بیفته و پالس شما رو ایجاد میکنه ...
                              سلام به همه

                              دوست عزیز این مقداری که شما حساب کردی یعنی از 134 شروع یه شمردن کنه تا به 255 برسه و دوباره اینکارو انجام بده در واقع داره یه پابس درست میکنیم با duty cyle 50%
                              و کدشم ایم باشه دیگه...
                              کد:
                              interrupt [TIM0_OVF] void timer0_ovf_isr(void)
                              {
                              // Place your code here
                              PORTB=~PORTB;
                              TCNT0=134;
                              }
                              خب 314 *0.25 برابر میشه با 33 یعنی مدت روشن یا خاموش بودم پالس برابر میشه با 33 میکرو ثانیه که در کل T پالس میشه 66 میکرو ثانیه و فرکانسهم میشه طرفای 15 KHz

                              برای درست کردن فرکانس 30 KHz باید مدت روشن بود و مدن خاموش بودن پالس باهم بشه 30 میکرو ثانیه


                              نه من الان مشکلا ساخت فرکانس حل کردم :wow: :wow: :wow: :wow: :applause:


                              وبرای عدد اولیه تایمر از 225 استفاده کردم.

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

                              دیدگاه


                                #30
                                پاسخ : مشکل با ساخت فرکانس 30khz

                                دوست عزیز dr.micro

                                بله میشه گفت فرکانس های تو بازار بیشتر 36 و 38 KHz هستند ولی من تو پروژم چون گیرنده tsop1330 از بازار خریده بودم دیگه گفتم با 30khZ راش بندازم :biggrin: :read:

                                فرکانس چیز زیاد مهمی نیست :agree:

                                حالا میخواد 30 36 یا 38 باشه اصل کد همونه فقط فرکانس مرکزی باید عوض بشه

                                دیدگاه

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