اطلاعیه

Collapse
No announcement yet.

مشکل در tiny13

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

    مشکل در tiny13

    با سلام . من واسه چند تا led شروع به برنامه نویسی کرده بودم که از چندتا پورت tiny13 به عنوان خروجی استفاده کرده بوذم.اوایل که تست میکردم جواب میداد ولی همچین که یه خورده تعداد خطوط برنامه نویسی بالا رفت دیگه جواب نداد.حتی مقدار حافظه tiny 13 رو هم چک کردم از 60 درصد بالاتر نرفته بود.همین برنامه رو تو mega 8 وارد کردم جواب داد حتی تو proteus جواب داد. نمیدونم مشکل tiny13 چیه؟برنامه رو هم در کدویژن نوشتم لفطا کمک کنید.با تشکر

    #2
    پاسخ : مشکل در tiny13

    دوست خوب بهتره کدت رو بزاری . هیچ متخصص و جراح قلبی نتونسته تلفنی عمل قلب انجام بده :NO: :nerd:

    دیدگاه


      #3
      پاسخ : مشکل در tiny13

      #include <tiny13.h>
      #include <delay.h>
      /************************************/
      #define Data PORTB.0
      #define Clk PORTB.1
      #define OE PORTB.2
      /************************************/
      void write_led1(unsigned long int input);

      void main(void){

      unsigned long int i=0,j=0,m,t=0,u,w=0,p=0;
      unsigned char counter=0;

      DDRB=0x3F;
      PORTB=0x00;

      OE=1;
      Clk=1;
      Data=0;



      start:i=1;j=0;t=0;


      for(j=0;j<10;j++){
      i=7;
      while(counter<=32){
      write_led1(i);
      delay_ms(2+counter);
      m=i<<1;
      i=m;
      counter++;
      }
      counter=0;
      }//end of for

      j=0;

      for(j=0;j<5;j++){
      i=7;
      t=0xE0000000;
      while(counter<=14){
      write_led1(t|i);
      delay_ms(50);
      m=i<<1;
      i=m;
      u=t>>1;
      t=u;

      counter++;
      }
      counter=0;
      }//end of for

      for(j=0;j<10;j++){
      i=0xE0000000;
      while(counter<=32){
      write_led1(i);
      delay_ms(2+counter);
      m=i>>1;
      i=m;
      counter++;
      }
      counter=0;
      }//end of for

      for(j=0;j<5;j++){
      i=7;
      t=0xE0000000;
      while(counter<=14){
      write_led1(t|i);
      delay_ms(50);
      m=i|i<<1;
      i=m;
      u=t|t>>1;
      t=u;

      counter++;
      }
      counter=0;

      delay_ms(500);

      while(counter<=14){
      write_led1(t|i);
      delay_ms(50);
      m=i>>1;
      i=m;
      u=t<<1;
      t=u;

      counter++;
      }
      counter=0;
      }//end of for


      for(w=0;w<16;w++){
      i=1;
      p=i|i<<w;
      i=p;
      for(j=0;j<2;j++){

      while(counter<=16){
      write_led1(i);
      delay_ms(16-w);
      m=i<<1;
      i=m;
      counter++;
      }
      counter=0;
      }//end of for

      }
      write_led1(0xFFFFFFFF);
      delay_ms(1000);
      i=0x0000FFFF;
      t=0xFFFF0000;

      while(counter<=16){
      write_led1(t|i);
      delay_ms(50);
      m=i>>1;
      i=m;
      u=t<<1;
      t=u;

      counter++;
      }

      goto start;

      }//end of main
      /*************************************/
      void write_led1(unsigned long int input){

      unsigned char k=0;
      unsigned long int temp=0;
      OE=1;

      for(k=0;k<32;k++){
      temp=0x01;
      temp&=input>>k;
      Data=temp;
      Clk=0;
      delay_us(5);
      Clk=1;
      delay_us(5);
      }

      OE=0;
      }

      دیدگاه


        #4
        پاسخ : مشکل در tiny13

        من یک موضوع در مورد این TINY13 بگم تجربه شخصی من هست بعد برسیم به مشکل شما
        حدود یک سال پیش من یک پروژه برای یک شرکت تولیدی اجاق گاز سازی انجام دادم که این میکروTINY13 پدر من در آورد :cry: در دمای 60 درجه این میکرو کنترلر به خوبی کار نمیکنه و همچنین خدا نکنه محیط NOISE داشته باشه که دیگه میکرو اصلا کار نمیکنه :angry: خیلی روش ها تست کردم آخر جواب نگرفتم و پروژه با PIC انجام دادم
        گفتم اینا بگم شاید در پروژه شما بدرد بخور باشه
        الان برنامه تو پروتئوس تست کنم و جواب شما میدم :read:
        خداوندا
        از بچگی به من آموختندهمه را دوست بدار حال که بزرگ شده ام و کسی را دوست می*دارم می گویند:
        فراموشش کن
        دکتر علی شریعتی

        دیدگاه


          #5
          پاسخ : مشکل در tiny13

          اول این کد رو تست کن
          کد:
          #include <tiny13.h>
          #include <delay.h>
          /************************************/
          #define Data PORTB.0
          #define Clk  PORTB.1
          #define OE  PORTB.2
          /************************************/
          void write_led1(unsigned long int input);
          
          void main(void)
          {
          	unsigned long int i,m,t,u,w,p;
          	unsigned char j,counter=0;
          	
          	DDRB=0x3F;
          	PORTB=0x00;
          	
          	OE=1;
          	Clk=1;
          	Data=0;
          	
          	while(1)
          	{
          		//------------------------------
          		for(j=0;j<10;j++)
          		{   
          			i=7;
          			counter=0; 
          			while(counter<=32)
          			{
          				write_led1(i);   
          				delay_ms(2+counter);
          				m=i<<1;
          				i=m;
          				counter++;
          			}
          		}
          		//------------------------------		
          		for(j=0;j<5;j++)
          		{   
          			i=7;
          			t=0xE0000000;
          			counter=0; 
          			while(counter<=14)
          			{
          				write_led1(t|i);  
          				delay_ms(50);
          				m=i<<1;
          				i=m;
          				u=t>>1;
          				t=u;
          				counter++;
          			}
          		}//end of for
          		//------------------------------		
          		for(j=0;j<10;j++)
          		{   
          			i=0xE0000000;
          			counter=0;			
          			while(counter<=32)
          			{
          				write_led1(i);   
          				delay_ms(2+counter);
          				m=i>>1;
          				i=m;
          				counter++;
          			}
          		}//end of for
          		//------------------------------				
          		for(j=0;j<5;j++)
          		{   
          			i=7;
          			t=0xE0000000;
          			counter=0;  			
          			while(counter<=14)
          			{
          				write_led1(t|i);  
          				delay_ms(50);
          				m=i|i<<1;
          				i=m;
          				u=t|t>>1;
          				t=u;
          				counter++;
          			}
          			delay_ms(500);
          			counter=0; 
          			while(counter<=14)
          			{
          				write_led1(t|i);  
          				delay_ms(50);
          				m=i>>1;
          				i=m;
          				u=t<<1;
          				t=u;
          				counter++;
          			}
          		}//end of for
          		//------------------------------
          		for(w=0;w<16;w++)
          		{
          			i=1;
          			p=i|i<<w;
          			i=p;
          			for(j=0;j<2;j++)
          			{ 
          				counter=0;				
          				while(counter<=16)
          				{
          					write_led1(i);   
          					delay_ms(16-w);
          					m=i<<1;
          					i=m;
          					counter++;
          				}
          			}//end of for
          		}
          		//------------------------------		
          		write_led1(0xFFFFFFFF);   
          		delay_ms(1000);
          		i=0x0000FFFF;
          		t=0xFFFF0000;
          		counter=0;
          		while(counter<=16)
          		{
          			write_led1(t|i);  
          			delay_ms(50);
          			m=i>>1;
          			i=m;
          			u=t<<1;
          			t=u;
          			counter++;
          		}
          	}
          }//end of main
          /*************************************/
          void write_led1(unsigned long int input)
          {
          	unsigned char k=0;
          	unsigned long int temp=0;
          	OE=1;
          	for(k=0;k<32;k++)
          	{
          		temp=0x01;
          		temp&=input>>k;
          		Data=temp;
          		Clk=0;
          		delay_us(5);
          		Clk=1;
          		delay_us(5);
          	}
          	OE=0;
          }

          حالا این کد رو :
          کد:
          #include <tiny13.h>
          #include <delay.h>
          /************************************/
          #define Data PORTB.0
          #define Clk  PORTB.1
          #define OE  PORTB.2
          /************************************/
          void write_led1(unsigned long input);
          void main(void)
          {
          	unsigned long i,t;
          	unsigned char j,counter,w;
            DDRB=0x3F;
            PORTB=0x00;
            OE=1;
            Clk=1;
            Data=0;
            while(1)
            {
              //------------------------------
              for(j=0;j<10;j++)
              {   
                i=7;
                counter=0; 
                while(counter<=32)
                {
                  write_led1(i);   
                  delay_ms(2+counter);
                  i<<=1;
                  counter++;
                }
              }
              //------------------------------    
              for(j=0;j<5;j++)
              {   
                i=7;
                t=0xE0000000;
                counter=0; 
                while(counter<=14)
                {
                  write_led1(t|i);  
                  delay_ms(50);
                  i<<=1;
                  t>>=1;
                  counter++;
                }
              }//end of for
              //------------------------------    
              for(j=0;j<10;j++)
              {   
                i=0xE0000000;
                counter=0;      
                while(counter<=32)
                {
                  write_led1(i);   
                  delay_ms(2+counter);
                  i>>=1;
                  counter++;
                }
              }//end of for
              //------------------------------        
              for(j=0;j<5;j++)
              {   
                i=7;
                t=0xE0000000;
                counter=0;        
                while(counter<=14)
                {
                  write_led1(t|i);  
                  delay_ms(50);
                  i=i|(i<<1);
                  t=t|(t>>1);
                  counter++;
                }
                delay_ms(500);
                counter=0; 
                while(counter<=14)
                {
                  write_led1(t|i);  
                  delay_ms(50);
                  i>>=1;
                  t<<=1;
                  counter++;
                }
              }//end of for
              //------------------------------
              for(w=0;w<16;w++)
              {
                i=1;
                i=i|(i<<w);
                for(j=0;j<2;j++)
                { 
                  counter=0;        
                  while(counter<=16)
                  {
                    write_led1(i);   
                    delay_ms(16-w);
                    i<<=1;
                    counter++;
                  }
                }//end of for
              }
              //------------------------------    
              write_led1(0xFFFFFFFF);   
              delay_ms(1000);
              i=0x0000FFFF;
              t=0xFFFF0000;
              counter=0;
              while(counter<=16)
              {
                write_led1(t|i);  
                delay_ms(50);
                i>>=1;
                t<<=1;
                counter++;
              }
            }
          }//end of main
          /*************************************/
          void write_led1(unsigned long input)
          {
            unsigned char k;
            OE=1;
            for(k=0;k<32;k++)
            {
              Data=(input>>k) & 0x01;
              Clk=0;
              delay_us(5);
              Clk=1;
              delay_us(5);
            }
            OE=0;
          }

          هر دو رو امتحان کن. کد اول یه مورد داشت که counter رو یکی دو جا صفر نکرده بودی. کد دوم هم بهینه شده کد اول هست.

          دیدگاه


            #6
            پاسخ : مشکل در tiny13

            بعضی از میکر ها این مشکل رو دارن چون اصل نیستن (چین)
            یکی از دوستان بنده هم با این موضوع مواجه شده بود
            گذشت خصلت مردان است

            دیدگاه

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