اطلاعیه

Collapse
No announcement yet.

برنامه 8 ثانیه بیشتر کار نمی کنه

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

    برنامه 8 ثانیه بیشتر کار نمی کنه

    سلام !
    من یک ATMEGA16A رو پروگرام کردم ولی برنامه تقریبا 8 ثانیه بیشتر کار نمی کنه مشکل از کجا می تونه باشه؟

    #2
    پاسخ : برنامه 8 ثانیه بیشتر کار نمی کنه

    میشه برنامه خودتون رو قرار بدین؟
    و درمورد کارش توضیح بدین
    دودمانم بر باد رفت

    دیدگاه


      #3
      پاسخ : برنامه 8 ثانیه بیشتر کار نمی کنه

      از خیلی جاها میتونه باشه ...

      1- ممکن هست Stack پر شده باشه . یا تنظیمات مربوط به میزان حافظه Stack رو درست انجام نداده باشی .
      2- ممکن هست در داخل روتین یک اینتراپت ... اینتراپت همون اینتراپت رخ داده باشد و میکرو آدرس برگشت رو گم کنه .
      3- ممکن هست مدت زمان اجرای روتین هایی که در درون یک وقفه مینویسی بیشتر از تعداد رخداد آن در واحد زمانی باشد و شما اینتراپت ها را غیر فعال نکرده باشین .
      4- ممکن هست پوینتر گم کرده باشی . مثلا یه آرایه 100 عنصری داشته باشی ... خونه 500 رو مقدار دهی کرده باشی .
      5- ممکن هست میکروت رو در درون یک محیط پر نویز RUN کرده باشی و روی اینتراپت هات خازن نزاشته باشی ...
      6- شاید هم میکروت خجالتی باشه یا اینکه بهش برمیخوره یا میخواد برات کلاس بزاره ...



      دیدگاه


        #4
        پاسخ : برنامه 8 ثانیه بیشتر کار نمی کنه

        خیلی ممنون دوست عزیز v_ilkhani
        دوباره میکرو رو پروگرام کردم این دفعه کریستالش رو عوض کردم و توی برنامه هم کریستال رو تغییر دادم ، درست شد. حالا احتمالا مشکل کجا بوده؟

        دیدگاه


          #5
          پاسخ : برنامه 8 ثانیه بیشتر کار نمی کنه

          /************************************************** ***
          This program was produced by the
          CodeWizardAVR V2.05.3 Standard
          Automatic Program Generator
          © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
          http://www.hpinfotech.com

          Project :
          Version :
          Date : 9/20/2013
          Author : PerTic@n
          Company : If You Like This Software,Buy It
          Comments:


          Chip type : ATmega16A
          Program type : Application
          AVR Core Clock frequency: 2.457600 MHz
          Memory model : Small
          External RAM size : 0
          Data Stack size : 256
          ************************************************** ***/

          #include <mega16a.h>
          #include <delay.h>

          // Declare your global variables here
          flash char segments[]=
          {
          0b1111101,
          0b1001000,
          0b0111110,
          0b1101110,
          0b1001011,
          0b1100111,
          0b1110111,
          0b1001100,
          0b1111111,
          0b1101111
          };
          void main(void)
          {
          // Declare your local variables here
          char index=0;
          // 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=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
          // 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=0xFF;

          // 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;

          while (1)
          {
          while(index<10)
          {
          if(index<5)PORTC=0x1;
          else PORTC=0x2;
          PORTB=segments[index]^0xFF;
          index++;
          delay_ms(1000);
          }
          index=0;

          }
          }

          دیدگاه


            #6
            پاسخ : برنامه 8 ثانیه بیشتر کار نمی کنه

            این برنامه یک شمارنده هست که با سون سگمنت کار می کنه و اعداد 0 تا 9 را نشون می ده که اگه اعداد زیر 5 بودند یک ال ای دی روی پورت سی بیت صفر و بالای پنج بیت یک روشن می شه

            دیدگاه


              #7
              پاسخ : برنامه 8 ثانیه بیشتر کار نمی کنه

              سلام ...
              برای من 1 بار پیش اومده که کریستالم مشگل داشته و با عوض کردن کریستال مشگلم حل شده ... در ضمن از این جور اتفاق ها تو برنامه نویسی زیاد میوفته ... یادمه با 8051 و کامپایلر Franklin که کار میکردم ... هر بار سورسم رو یه جور کامپایل میکرد ...
              به قوله معروف باید قلقش دستت بیاد ...

              البته یه علت دیگه هم میتونه برای ریست شدن ... یا هنگ کردن میکرو وجود داشته باشه ... کسی اینترپتی رو در Wizard فعال کرده باشه و روتینی که اون رو protect میکنه رو پاک کرده باشه ... در این صورت کامپایلر هیچ ایرادی هم نمیگیره ولی .... میکرو هنگ میکنه ... مشگل شما این موضوع نیست ... ولی گفتم تجربم رو انتقال داده باشم .

              خوش باشی ...

              دیدگاه

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