اطلاعیه

Collapse
No announcement yet.

مشکل چشمک زدن LED خروجی PortC , PortD

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

    مشکل چشمک زدن LED خروجی PortC , PortD

    با سلام .

    من یه مدار ساختم و به خروجی همه پورت های اون LED وصل کردم . LED هایی که به Portb و PC0 , PC1 , PC2 وصل هستند چشمک نمی زنند اما LED های متصل به PortD و PC3 , PC4 , PC5 چشمک می زنند . راستی جریانی هم که از پایه ها میکشم تقریبا زیاد هست (میانگین 20mA ) .
    [glow=blue,2,300]آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد. [/glow]

    #2
    پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

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

    دیدگاه


      #3
      پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

      میکرو مگا 8 هست . برنامه خاصی نیست فقط PWM میده به خروجی ها . در ضمن جریان رو هم کم کردم ولی بازم درست نشد .
      [glow=blue,2,300]آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد. [/glow]

      دیدگاه


        #4
        پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

        برنامه رو بگذار چک کنیم
        برای آنکه کاری امکان پذیر گردد دیدگان دیگری لازم است، دیدگانی نو

        دیدگاه


          #5
          پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

          [glow=red,2,300]این هم برنامه . در کل از پورت سریال 6 تا دیتا میگیره و روی پورت ها به صورت PWM میفرسته .
          [/glow]


          #define F_CPU 8000000UL
          #include <stdio.h>
          #include <avr\io.h>
          #include <avr\interrupt.h>
          #include <avr\delay.h>

          unsigned char Dta;
          int n;
          unsigned char m=0;
          unsigned char e;
          unsigned char a[18];
          unsigned char r[6];
          unsigned char g[6];
          unsigned char b[6];

          int main(void)
          {
          timer_init();
          usart_init();
          while(1)
          {

          while(TCNT0 <= 254)
          {
          if((TCNT0 >= r[0]) && (a[0] != 1))
          {
          a[0]=1;
          PORTB |= 0b00000001;
          }
          if ((TCNT0 >= g[0]) && (a[1] != 1))
          {
          a[1]=1;
          PORTB |= 0b00000010;
          }
          if ((TCNT0 >= b[0]) && (a[2] != 1))
          {
          a[2]=1;
          PORTB |= 0b00000100;
          }
          if((TCNT0 >= r[1]) && (a[3] != 1))
          {
          a[3]=1;
          PORTB |= 0b00001000;
          }
          if ((TCNT0 >= g[1]) && (a[4] != 1))
          {
          a[4]=1;
          PORTB |= 0b00010000;
          }
          if ((TCNT0 >= b[1]) && (a[5] != 1))
          {
          a[5]=1;
          PORTB |= 0b00100000;
          }
          if((TCNT0 >= r[2]) && (a[6] != 1))
          {
          a[6]=1;
          PORTC |= 0b00000001;
          }
          if ((TCNT0 >= g[2]) && (a[7] != 1))
          {
          a[7]=1;
          PORTC |= 0b00000010;
          }
          if ((TCNT0 >= b[2]) && (a[8] != 1))
          {
          a[8]=1;
          PORTC |= 0b00000100;
          }
          if((TCNT0 >= r[3]) && (a[9] != 1))
          {
          a[9]=1;
          PORTC |= 0b00001000;
          }
          if ((TCNT0 >= g[3]) && (a[10] != 1))
          {
          a[10]=1;
          PORTC |= 0b00010000;
          }
          if ((TCNT0 >= b[3]) && (a[11] != 1))
          {
          a[11]=1;
          PORTC |= 0b00100000;
          }
          if((TCNT0 >= r[4]) && (a[12] != 1))
          {
          a[12]=1;
          PORTD |= 0b00000100;
          }
          if ((TCNT0 >= g[4]) && (a[13] != 1))
          {
          a[13]=1;
          PORTD |= 0b00001000;
          }
          if ((TCNT0 >= b[4]) && (a[14] != 1))
          {
          a[14]=1;
          PORTD |= 0b00010000;
          }
          if((TCNT0 >= r[5]) && (a[15] != 1))
          {
          a[15]=1;
          PORTD |= 0b00100000;
          }
          if ((TCNT0 >= g[5]) && (a[16] != 1))
          {
          a[16]=1;
          PORTD |= 0b01000000;
          }
          if ((TCNT0 >= b[5]) && (a[17] != 1))
          {
          a[17]=1;
          PORTD |= 0b01000000;
          }

          }
          //TCNT0=50;
          }
          }

          void usart_init ()
          {
          DDRB=0b00111111;
          DDRC=0b00111111;
          DDRD=0b11111100;

          PORTC = 0x00;
          PORTB = 0x00;
          PORTD = 0x00;

          UBRRH=0;
          UBRRL=1;
          UCSRC |= (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0) ;
          UCSRB |= (1<<RXEN)|(1<<RXCIE);
          //TWCR &= (0<<TWEN);
          sei();
          }

          void timer_init()
          {
          TCCR0 = (1<<CS02); // clk/256
          TIMSK = (1<<TOIE0);
          }

          ISR(USART_RXC_vect)
          {
          Dta=UDR;

          enum uu {address_0=93, address_1, address_2, address_3, address_4, address_5};

          if((Dta==1) && (m==1))
          {
          n=0;
          e++;
          }
          if((Dta!=1) && (m==1))
          {
          n++;

          //================================================== ====================
          switch(n)
          {
          case address_0:
          switch(e)
          {
          case 1:
          b[0] = Dta;
          break;
          case 2:
          g[0] = Dta;
          break;
          case 3:
          r[0] = Dta;
          break;
          }
          break;

          case address_1:
          switch(e)
          {
          case 1:
          b[1] = Dta;
          break;
          case 2:
          g[1] = Dta;
          break;
          case 3:
          r[1] = Dta;
          break;
          }
          break;

          case address_2:
          switch(e)
          {
          case 1:
          b[2] = Dta;
          break;
          case 2:
          g[2] = Dta;
          break;
          case 3:
          r[2] = Dta;
          break;
          }
          break;

          case address_3:
          switch(e)
          {
          case 1:
          b[3] = Dta;
          break;
          case 2:
          g[3] = Dta;
          break;
          case 3:
          r[3] = Dta;
          break;
          }
          break;

          case address_4:
          switch(e)
          {
          case 1:
          b[4] = Dta;
          break;
          case 2:
          g[4] = Dta;
          break;
          case 3:
          r[4] = Dta;
          break;
          }
          break;

          case address_5:
          switch(e)
          {
          case 1:
          b[5] = Dta;
          break;
          case 2:
          g[5] = Dta;
          break;
          case 3:
          r[5] = Dta;
          //e=0;
          //m=0;
          break;
          }
          break;

          case 99:
          if(e==3)
          {
          e=0;
          m=0;
          }
          break;
          }

          }

          if((Dta==0) && (m==0))
          {
          m=1;
          }

          }

          ISR(TIMER0_OVF_vect)
          {
          //m = 1;

          a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0; a[5]=0; a[6]=0; a[7]=0; a[8]=0;
          a[9]=0; a[10]=0; a[11]=0; a[12]=0; a[13]=0; a[14]=0; a[15]=0; a[16]=0; a[17]=0;

          PORTC = 0x00;
          PORTB = 0x00;
          PORTD = 0x00;
          }

          [glow=blue,2,300]آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد. [/glow]

          دیدگاه


            #6
            پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

            آقا چی شد ؟ کسی متوجه نشد مشکل من چیه ؟
            [glow=blue,2,300]آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد. [/glow]

            دیدگاه


              #7
              پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

              نوشته اصلی توسط ایمان 88
              آقا چی شد ؟ کسی متوجه نشد مشکل من چیه ؟
              شاید از این تاپیک بتونه کمک بگیری منم تو این تاپیک همین کار رو کردم ( اتصال LED به میکرو مگا 8 ) :
              http://www.eca.ir/forum2/index.php?topic=85228.0
              البته ممکنه از برنامتون هم باشه ولی چون من C زیاد کار نکردم و مسلط نیستم نمی تونم نظری بدم :rolleyes:
              اگه می تونی برای LED ها از درایور استفاده کن و فیوز بیت های Watch dog و Brownout رو غیر فعال کن
              خداوند بی نهایت است اما به قدر نیاز تو فرود می آید ، به قدر آرزوی تو گسترده می شود و به قدر ایمان تو کارگشاست.
              [hr]

              دیدگاه


                #8
                پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

                سلام
                ماشالا ...
                چه برنامه روده درازی ...
                http://www.eca.ir/forum2/index.php?topic=90246.0
                این تاپیک میتونه کمکتون کنه
                برنامه اتمل رو هم میزارم تا شما راحت باشید
                [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                معرفی نرم افزار Codewizard PWM
                با من بیشتر آشنا شوید

                دیدگاه


                  #9
                  پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

                  فهمیدم که مشکل از برنامه ست . یه مشکلی که دارم اینه که همزمان از 2 وقفه (سرریز تایمر و پورت سریال) استفاده میشه که ممکن هرکدوم وسط اون یکی دیگه رخ بده .
                  [glow=blue,2,300]آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد. [/glow]

                  دیدگاه


                    #10
                    پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

                    من هنوز مشکل دارم . فکر میکنم وسط وقفه دریافت پورت سریال وقفه سرریز رخ میده یا برعکس . لطفا راهنمایی بفرمائید .
                    [glow=blue,2,300]آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد. [/glow]

                    دیدگاه


                      #11
                      پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

                      عزیزم از بافر استفاده کن uln2803 یا از ترانزیستور
                      http://ARTAROBOTIC.IR

                      دیدگاه


                        #12
                        پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

                        نوشته اصلی توسط ایمان 88
                        فهمیدم که مشکل از برنامه ست . یه مشکلی که دارم اینه که همزمان از 2 وقفه (سرریز تایمر و پورت سریال) استفاده میشه که ممکن هرکدوم وسط اون یکی دیگه رخ بده .
                        این که آره ...
                        ولی اگه برنامه ای دیگه نخواستی اضافش کنی کمکت میکنم که از تایمر دیگه استفاده نکنی
                        در واقع توی همون حلقه while برنامه ای که میخواهید رو مینویسید
                        اینجوری دیگه با این مشکل روبرو نمیشوید ...
                        [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                        معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                        معرفی نرم افزار Codewizard PWM
                        با من بیشتر آشنا شوید

                        دیدگاه


                          #13
                          پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

                          نوشته اصلی توسط SAMAN.ASADI
                          این که آره ...
                          ولی اگه برنامه ای دیگه نخواستی اضافش کنی کمکت میکنم که از تایمر دیگه استفاده نکنی
                          در واقع توی همون حلقه while برنامه ای که میخواهید رو مینویسید
                          اینجوری دیگه با این مشکل روبرو نمیشوید ...
                          ممنون میشم .
                          [glow=blue,2,300]آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد. [/glow]

                          دیدگاه


                            #14
                            پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

                            نوشته اصلی توسط H.GHATARI
                            عزیزم از بافر استفاده کن uln2803 یا از ترانزیستور
                            اولا امکانش نیست برام و دوما از اون نیست.
                            [glow=blue,2,300]آنقدر به تاريكي لعنت نفرستيد ، يك شمع روشن كنيد. [/glow]

                            دیدگاه


                              #15
                              پاسخ : مشکل چشمک زدن LED خروجی PortC , PortD

                              نوشته اصلی توسط ایمان 88
                              ممنون میشم .
                              باید بهم وقت بدی ...
                              قبوله ؟؟؟
                              [b]چگونه همه پایه های میکروکنترلر AVR را PWM کنیم؟
                              معرفی نرم افزارEasy 7segment (برای راه اندازی آسانتر 7segment )
                              معرفی نرم افزار Codewizard PWM
                              با من بیشتر آشنا شوید

                              دیدگاه

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