اطلاعیه

Collapse
No announcement yet.

تحریک ورودی میکرو با لبه بالا رونده

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

    تحریک ورودی میکرو با لبه بالا رونده

    با عرض سلام به همه دوستان
    همونطور که از موضوع مشخصه ، میخوام در صورت اعمال ولتاژ به ورودی میکرو ، ورودی با لبه بالا رونده پالس تحریک بشه و هر چقدرم که شاستی رو نگه داشتم هیچ تاثیری نداشته باشه ... (البته قبل از ایجاد تاپیک جستجو کردم ولی موضوعی که مشکل منو حل کنه نبود)
    راستی با زبان C برنامه نویسی میکنم
    ممنون میشم راهنمایی کنید
    از سختی نترس! این سختی هاست که جایگاه و مقام انسان را بالا میبرد...

    #2
    پاسخ : تحریک ورودی میکرو با لبه بالا رونده

    دوست عزیز برنامتو بزار تا دوستان بتونن راهنماییت کنن
    معلولیت محدودیت نیست

    آنکس که عاجز از خلق لحظه هاست، معلول است. نه من...روح بلند آدمیت فراتر از هر معلولیتی است.

    دیدگاه


      #3
      پاسخ : تحریک ورودی میکرو با لبه بالا رونده

      سلام
      ورودیت رو با یه مقاوت 10K به زمین متصل کن درست میشه.
      آیه: "فرشتگان و ارواح در یک روز به او (مذکر) صعود کردند که این معادل پنجاه هزار سال برای انسان است"!
      در بیرون یک میدان گرانشی زمان اینگونه است: ∆t= ∆t0/ (1-v^2/c^2) ^0.5
      ∆t زمانی است که برای متحرک معادل گذر ایستگاهی است.و V سرعتی است که به شاهد ایستگاهی نسبت داده می شود.
      ∆t0 زمانی است که برای فرشتگان می گذرد.سرعت نور در خلا 299792.458 کیلومتر بر ثانیه است.
      از معادله ی بالا می توانیم آن سرعت ناشناخته را حساب کنیم:v =c (1-(1^2/(50000*12*27.321661)^2))^0.5 که این عدد برابر است با v = 299792.4579999

      دیدگاه


        #4
        پاسخ : تحریک ورودی میکرو با لبه بالا رونده

        با سلام.
        دوست عزیز همونطور که متوجه شدم شما می خواین یه شستی رو طوری به میکرو متصل کنید که وقتی دستتون رو شستی مونده میکرو فقط با اولین لبه عمل مورد نظر(مثل افزایش مقدار یک متغیر) رو انجام بده و با موندن دست فقط یک واحد افزایش داشته باشید.
        برای این کار دو راه وجود داره :
        1- استفاده از اینتراپت خارجی که راحترین راهه و برنامه نویسی انچنانی نمی خواد.
        2- استفاده از ضربه گیر نرم افزاری که این یکی هم انچنان کاری نداره فقط بالایی راحت تره.
        حالا اگه منظورتون رو درست متوجه شدم روشتون رو بفرمایید تا تو برنامه نویسیش کمکتون کنم.
        چرا ناراحتی پاتریک!
        + امروز ی بچه دیدم سرچهارراه گل میفروخت
        - از دیدنش ناراحت شدی؟
        + نه
        پس چی ناراحتت کرده
        + اینکه دیدن اینجور بچه ها انقدر واسم عادی شده که دیگه ناراحتم نمیکنه
        ------------------------------------------------------------------------------------------------------
        تاحالا فکر کردی بیسواد کیه؟- بی سواد یعنی کسی که نمیتونه ذهنیاتش رو عملی کنه!
        ------------------------------------------------------------------------------------------------------
        محصولات

        دیدگاه


          #5
          پاسخ : تحریک ورودی میکرو با لبه بالا رونده

          ممنون از دوستانی که کمک کردن ...
          نوشته اصلی توسط ALI.MADAN
          ورودیت رو با یه مقاوت 10K به زمین متصل کن درست میشه.
          جواب نمیده ! شایدم تو شرایطی جواب بده ولی بدرد مدار من نمیخوره ، چون من شاستی هام رو زمین کردم ... به هر حال ممنون

          نوشته اصلی توسط سوران آراسته
          با سلام.
          دوست عزیز همونطور که متوجه شدم شما می خواین یه شستی رو طوری به میکرو متصل کنید که وقتی دستتون رو شستی مونده میکرو فقط با اولین لبه عمل مورد نظر(مثل افزایش مقدار یک متغیر) رو انجام بده و با موندن دست فقط یک واحد افزایش داشته باشید.
          برای این کار دو راه وجود داره :
          1- استفاده از اینتراپت خارجی که راحترین راهه و برنامه نویسی انچنانی نمی خواد.
          2- استفاده از ضربه گیر نرم افزاری که این یکی هم انچنان کاری نداره فقط بالایی راحت تره.
          حالا اگه منظورتون رو درست متوجه شدم روشتون رو بفرمایید تا تو برنامه نویسیش کمکتون کنم.
          راستش با اینتراپ کار نکردم من ... اگه یه توضیحی بدید ممنون میشم
          اگه میشه در مورد روش دوم هم یه توضیح کوچیکی بدید
          (الان مشکلی که دارم اینه که با زدن شستی میخوام یک استپ تغییرات داشته باشم ولی چون ورودی میکرو با پوش پالس کار میکنه اونی که میخوام نمیشه )
          با تشکر
          از سختی نترس! این سختی هاست که جایگاه و مقام انسان را بالا میبرد...

          دیدگاه


            #6
            پاسخ : تحریک ورودی میکرو با لبه بالا رونده

            1-استفاده از اینتراپت خارجی :
            دوست عزیز تراشه ای مثل مگا 32 سه تا پین برای وقفه خارجی داره که با نام های INTx مشخص شدن.
            وقتی شما یه کلید رو به یکی از این پین ها متصل می کنید می تونید اون رو در وضعیت های بالارونده،پایین رونده و یا حساس به هر تغییری قرار بدین.
            در برنامه زیر من کلید رو به اینتراپت 0 داده و اون رو حساس به لبه بالارونده قرار دادم. در این برنامه با زدن شستی مقدار یک متغیر افزایش یک واحدی خواهد داشت و تا برداشتن دست و فا مجدد کلید این مقدار ثابت می ماند.
            کد:
            #include <mega32.h>
            #include <stdlib.h>
            #include <alcd.h>
            #include <delay.h>
            unsigned int x=0;
            unsigned char lcd_buff[];
            // External Interrupt 0 service routine
            interrupt [EXT_INT0] void ext_int0_isr(void)
            {
            x++;
            }
            
            // Declare your global variables here
            
            void main(void)
            {
            // Declare your local variables here
            
            // Input/Output Ports initialization
            // Port A 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 
            PORTA=0x00;
            DDRA=0x00;
            
            // Port B 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 
            PORTB=0x00;
            DDRB=0x00;
            
            // Port C 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 
            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: Timer 0 Stopped
            // Mode: Normal top=0xFF
            // OC0 output: Disconnected
            TCCR0=0x00;
            TCNT0=0x00;
            OCR0=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: On
            // INT0 Mode: Rising Edge
            // INT1: Off
            // INT2: Off
            GICR|=0x40;
            MCUCR=0x03;
            MCUCSR=0x00;
            GIFR=0x40;
            
            // Timer(s)/Counter(s) Interrupt(s) initialization
            TIMSK=0x00;
            
            // 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;
            
            // Alphanumeric LCD initialization
            // Connections are specified in the
            // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
            // RS - PORTA Bit 0
            // RD - PORTA Bit 1
            // EN - PORTA Bit 2
            // D4 - PORTA Bit 4
            // D5 - PORTA Bit 5
            // D6 - PORTA Bit 6
            // D7 - PORTA Bit 7
            // Characters/line: 16
            lcd_init(16);
            
            // Global enable interrupts
            #asm("sei")
            
            while (1)
               {
               itoa(x,lcd_buff);
               lcd_clear();
               lcd_puts(lcd_buff);
               delay_ms(100);
               }
            }


            2- استفاده از ضربه گیر نرم افزاری :
            در این روش کلید را به پین مورد نظر متصل می کنیم و اگر بخواهیم میکرو به لبه بالارونده و یا سطح مثبت حساس باشد طرف دیگر کلید را به VCC متصل می کنیم.
            در اینجا من کلید را به همان پایه ی اینتراپت وصل می کنم ولی انتخاب پین کاملا اختیاریه و با یه تغییر جزئی در برنامه می تونید هر پینی رو انتخاب کنید.
            کد:
            #include <mega32.h>
            #include <delay.h>
            #include <stdlib.h>
            #include <alcd.h>
            unsigned int x=0;
            unsigned char lcd_buff[];
            bit a,b;
            // Declare your global variables here
            
            void main(void)
            {
            // Declare your local variables here
            
            // Input/Output Ports initialization
            // Port A 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 
            PORTA=0x00;
            DDRA=0x00;
            
            // Port B 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 
            PORTB=0x00;
            DDRB=0x00;
            
            // Port C 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 
            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: Timer 0 Stopped
            // Mode: Normal top=0xFF
            // OC0 output: Disconnected
            TCCR0=0x00;
            TCNT0=0x00;
            OCR0=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
            // INT2: Off
            MCUCR=0x00;
            MCUCSR=0x00;
            
            // Timer(s)/Counter(s) Interrupt(s) initialization
            TIMSK=0x00;
            
            // 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;
            
            // Alphanumeric LCD initialization
            // Connections are specified in the
            // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
            // RS - PORTA Bit 0
            // RD - PORTA Bit 1
            // EN - PORTA Bit 2
            // D4 - PORTA Bit 4
            // D5 - PORTA Bit 5
            // D6 - PORTA Bit 6
            // D7 - PORTA Bit 7
            // Characters/line: 16
            lcd_init(16);
            
            while (1)
            {
              itoa(x,lcd_buff);
              a=PIND.2;
              if(a==0 && b==0)
              {
                x++;
                b=1;
              }
              if(a==1) b=0;
              lcd_clear();
              lcd_puts(lcd_buff);
              delay_ms(10);  
            }
            }

            اینم شماتیک مدار :


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

            دیدگاه


              #7
              پاسخ : تحریک ورودی میکرو با لبه بالا رونده

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

              دیدگاه


                #8
                پاسخ : تحریک ورودی میکرو با لبه بالا رونده

                سلام
                من دقیقا همچین مشکلی دارم
                امکانش هست ،برنامه هایی رو که گذاشتین به زبان بسکام نیز بنویسیدش؟
                ممنون

                دیدگاه


                  #9
                  پاسخ : تحریک ورودی میکرو با لبه بالا رونده

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

                  دیدگاه


                    #10
                    پاسخ : تحریک ورودی میکرو با لبه بالا رونده

                    نوشته اصلی توسط سوران آراسته نمایش پست ها
                    برنامه ها واقعا ساده و واضحه ولی چشم سعی می کنم در اسرع وقت براتون سورس ها رو قرار بدم.
                    ,ولا مهندس جان منم دقیق همین مشکلو با بسکام دارم

                    دیدگاه

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