اطلاعیه

Collapse
No announcement yet.

کوچ کردن از کدویژن به AtmelStudio

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

    پاسخ : کوچ کردن از کدویژن به AtmelStudio

    سوال دوم اینکه بعد از هر بار سرریز شدن تایمر دوباره باید به رجیستر TCNT1 مقدار لازم رو بدم؟ یا فقط موقع راه اندازی باید یک بار مقدار بدم؟
    بله هر بار باید مقداردهی بشه.
    بهتره از مد CTC استفاده کنید که دیگه نیار به مقداردهی هر باری برای TCNT داشته باشه.
    ---------
    .
    .
    ...........

    دیدگاه


      پاسخ : کوچ کردن از کدویژن به AtmelStudio

      نوشته اصلی توسط Des_B
      بله هر بار باید مقداردهی بشه.
      بهتره از مد CTC استفاده کنید که دیگه نیار به مقداردهی هر باری برای TCNT داشته باشه.
      ممنون داداش
      این امضایی که زدی به چه معنیه؟؟؟

      دوستان جواب قسمت اول سوالم رو کسی میدونه ؟
      ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
      شهید دکتر مصطفی چمران
      اللهم صل علی محمد و ال محمد و عجل فرجهم
      ; C is not for children

      دیدگاه


        پاسخ : کوچ کردن از کدویژن به AtmelStudio

        در فایل خروجی lss. کدهای مربوط به این دو تابع را پیدا کرده و اینجا قرار دهید(برای تابع از اسم تابع و برای وقفه از شماره vector مشخص هست)
        گاهی افرادی به موفقیت های بزرگ می رسند، تنها به این دلیل ساده که نمی دانند کاری که به آن دست زده اند بسیار دشوار، بلکه غیر ممکن است.

        دیدگاه


          پاسخ : کوچ کردن از کدویژن به AtmelStudio

          نوشته اصلی توسط مهدی رهی
          ممنون داداش
          این امضایی که زدی به چه معنیه؟؟؟
          خواهش می کنم.
          راستش حرفام زیاد بود جا نمیشد نقطه چین گذاشتم :biggrin:

          ------ منیک برنامه ای نوشتم برای خوندن دیتا از سنسور SHT10. حالا وقتی دما رو میخوانم مشکلی نیست، اما وقتی که رطوبت رو می خونم عدد های جالبی رو تحویل من میده. کد رو براتون میزارم و در ادامه بیشتر توضیح میدم:
          [code=c]float Read_Sensor(char mode)
          {
          int16_t temp,temp1;
          float out,RHlinear,T;

          switch (mode)
          {
          case Humid:
          RHlinear=0;
          temp = SHT_Measure(Humid);
          RHlinear=(C1+(C2*temp)+(C3*temp*temp));
          Sampling_delay;
          temp1=SHT_Measure(Temper);
          T = D1 + (D2*temp1);
          out=((T-25)*(t1+(t2*temp)))+RHlinear;
          if (out>=99) out = 100;
          if (out<=1) out = 1;
          break;

          case Temper:
          temp1=SHT_Measure(Temper);
          out = D1 + D2*temp1;
          break;

          default:break;
          }
          return out;
          }[/code]
          جالبی قصه اینجاست که وقتی نو خط 11، پرانتزی اضافه می کنم محاسبات اشتباه انجام میشه !! خروجی اصلی تابع باید به عدد 80 نزدیک باشه(یا کمتر یا بیشتر).
          مثلا اگر بنویسم : [code=c]RHlinear=(C1+(C2*temp)+(C3*temp*temp));[/code]
          خروجی تابع برای من میشه 83.83 و وقتی که می نویسم :
          [code=c]RHlinear=(C1+(C2*temp)+(C3*(temp*temp)));[/code]
          خروجی تابع میشه 95.23 !!!
          یعنی اضافه کردن پرانتز اینقدر تاثیر داره.
          در ضمن ثابت ها هم اینها هستند :
          [code=c]#define D1 -40.1
          #define D2 0.01
          #define C1 -2.0468
          #define C2 0.0367
          #define C3 -1.5955E-6
          #define t1 0.01
          #define t2 0.00008[/code]
          الان کامپایلر داره چیکار می کنه؟
          وقتی همین برنامه با کدویژن نوشته میشه نتیجه دیگه ای میده که به واقعیت نزدیک تره.
          ---------
          .
          .
          ...........

          دیدگاه


            پاسخ : کوچ کردن از کدویژن به AtmelStudio

            کلا استفاده از اعداد اعشاری دارای نکاته زیادیه
            نکته:هیچ اعدد اعشاری دقیقی نمیتونی تعریف کنیم!
            یعنی اگر یه float تعریف کنیم 10 وقتی بخونیش میبینی نوشته مثلا 10.00004
            برای همین هیچ وقت از علامت == نباید استفاده بشه و از علامت => و =< باید بجاش استفاده بشه
            برای محاسبات بهتره که تا حد امکان از متغیر های بزرگ استفاده کنی تا به جواب حقیقی نزدیک تر بای و خطای کمتری اشته باشی
            مثلا برای همون قسمتی که با پرانتز جدا کردی
            تو حالت اول شما یه float رو ضرب در دو تا int کردی که چون با پرانتز جدا نشدن خود کامپایلر همه متغیر هارو جزء بزرگترین متغیر های اون گروه فرض میکنه و سپس محابه میکنه برای همین اینگار سه تا float رو با هم ضرب کردی
            اما وقتی با پرانتز اومدی دو دستش کردی یعنی int ها رو جدا جدا با هم ضرب کردی و بعد حاصلش رو با float ضرب کردی کامپایلر اول اون دوتا int رو به عنوان همون int حساب میکنه و با هم ضرب میکنه و سپس حاصلش رو به عنوان flaot در نظر میگیره و با c3 که flaot حسابش کرده ضرب میکنه برای همین دوتا مقدار متفاوت بدست میاری
            بهتره تو اینجور مواقع همه رو در زمان محاسبات جز بزرگترین توی خانواده خودش تعریف کنی تا اینجوری مشکلات عجیب بر نخوری
            یعنی پشت متغیر هایی که تعریف کردی اگر عدد صحیح هستن و منفی هم جزءشون نیست بزاری uint32_t یا همون (unsigned long int) و پشت اعداد صحیح اما منفی دار بزاری (signed long int) و پشت اعداد اعشاری هم بزاری (double)
            و هر گروه رو هم با خودش محاسبه کنی:
            مثال:
            بجای دستور زیر
            [code=c]
            RHlinear=(C1+(C2*temp)+(C3*temp*temp));
            [/code]
            بنویسی:
            [code=c]
            RHlinear=((double)C1+(double)((double)C2*(double)t emp)+((double)C3*(double)((long int)temp*(long int)temp)));
            [/code]


            ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
            شهید دکتر مصطفی چمران
            اللهم صل علی محمد و ال محمد و عجل فرجهم
            ; C is not for children

            دیدگاه


              پاسخ : کوچ کردن از کدویژن به AtmelStudio

              نوشته اصلی توسط Hamed Gh
              در فایل خروجی lss. کدهای مربوط به این دو تابع را پیدا کرده و اینجا قرار دهید(برای تابع از اسم تابع و برای وقفه از شماره vector مشخص هست)
              ممنون دوست عزیز تا به حال به این فایل خروجی نگاه ننداخته بودم عجب چیز خوبیه
              --------
              این بخش مربوط به تایمر کانتر 1:
              [code=asm]//------------------------------ISR
              //INFORMATION : this ISR(TIMER1_OVF_vect) run any 1 second
              ISR(TIMER1_OVF_vect)
              {
              774: 1f 92 push r1
              776: 0f 92 push r0
              778: 0f b6 in r0, 0x3f ; 63
              77a: 0f 92 push r0
              77c: 11 24 eor r1, r1
              77e: 0b b6 in r0, 0x3b ; 59
              780: 0f 92 push r0
              782: 2f 93 push r18
              784: 3f 93 push r19
              786: 4f 93 push r20
              788: 5f 93 push r21
              78a: 6f 93 push r22
              78c: 7f 93 push r23
              78e: 8f 93 push r24
              790: 9f 93 push r25
              792: af 93 push r26
              794: bf 93 push r27
              796: ef 93 push r30
              798: ff 93 push r31
              volatile static unsigned char h,m,s;
              //---
              s++;
              7c0: 80 91 44 01 lds r24, 0x0144
              7c4: 8f 5f subi r24, 0xFF ; 255
              7c6: 80 93 44 01 sts 0x0144, r24
              if (s>=60)
              7ca: 80 91 44 01 lds r24, 0x0144
              7ce: 8c 33 cpi r24, 0x3C ; 60
              7d0: 38 f0 brcs .+14 ; 0x7e0 <__vector_14+0x6c>
              {
              s=0;
              7d2: 10 92 44 01 sts 0x0144, r1
              m++;
              7d6: 80 91 43 01 lds r24, 0x0143
              7da: 8f 5f subi r24, 0xFF ; 255
              7dc: 80 93 43 01 sts 0x0143, r24
              }
              if (m>=60)
              7e0: 80 91 43 01 lds r24, 0x0143
              7e4: 8c 33 cpi r24, 0x3C ; 60
              7e6: 38 f0 brcs .+14 ; 0x7f6 <__vector_14+0x82>
              {
              m=0;
              7e8: 10 92 43 01 sts 0x0143, r1
              h++;
              7ec: 80 91 42 01 lds r24, 0x0142
              7f0: 8f 5f subi r24, 0xFF ; 255
              7f2: 80 93 42 01 sts 0x0142, r24
              }
              if (h>=24)
              7f6: 80 91 42 01 lds r24, 0x0142
              7fa: 88 31 cpi r24, 0x18 ; 24
              7fc: 10 f0 brcs .+4 ; 0x802 <__vector_14+0x8e>
              {
              h=0;
              7fe: 10 92 42 01 sts 0x0142, r1
              }
              //////////////////////////////////////////////////////////
              lcd_clear();
              802: 24 dd rcall .-1464 ; 0x24c <lcd_clear>
              lcd_putiv(h,10);
              804: 80 91 42 01 lds r24, 0x0142
              808: 6a e0 ldi r22, 0x0A ; 10
              80a: 90 e0 ldi r25, 0x00 ; 0
              80c: 02 dd rcall .-1532 ; 0x212 <lcd_putiv>
              lcd_puts(":"
              80e: 84 e0 ldi r24, 0x04 ; 4
              810: 91 e0 ldi r25, 0x01 ; 1
              812: d9 dc rcall .-1614 ; 0x1c6 <lcd_puts>
              lcd_putiv(m,10);
              814: 80 91 43 01 lds r24, 0x0143
              818: 6a e0 ldi r22, 0x0A ; 10
              81a: 90 e0 ldi r25, 0x00 ; 0
              81c: fa dc rcall .-1548 ; 0x212 <lcd_putiv>
              lcd_puts(":"
              81e: 84 e0 ldi r24, 0x04 ; 4
              820: 91 e0 ldi r25, 0x01 ; 1
              822: d1 dc rcall .-1630 ; 0x1c6 <lcd_puts>
              lcd_putiv(s,10);
              824: 80 91 44 01 lds r24, 0x0144
              828: 6a e0 ldi r22, 0x0A ; 10
              82a: 90 e0 ldi r25, 0x00 ; 0
              82c: f2 dc rcall .-1564 ; 0x212 <lcd_putiv>
              lcd_gotoxy(1,1);
              82e: 61 e0 ldi r22, 0x01 ; 1
              830: 81 e0 ldi r24, 0x01 ; 1
              832: 8d dc rcall .-1766 ; 0x14e <lcd_gotoxy>
              lcd_puts("time in interrupt"
              834: 86 e0 ldi r24, 0x06 ; 6
              836: 91 e0 ldi r25, 0x01 ; 1
              838: c6 dc rcall .-1652 ; 0x1c6 <lcd_puts>
              //////////////////////////////////////////////////////////////////////////
              cli();
              83a: f8 94 cli
              TCNT1=58289;// 58289 ==>tc1 any 1sec have a interrupt (if Fosc==7.3728 TC==16bit)
              83c: 81 eb ldi r24, 0xB1 ; 177
              83e: 93 ee ldi r25, 0xE3 ; 227
              840: 9d bd out 0x2d, r25 ; 45
              842: 8c bd out 0x2c, r24 ; 44
              sei();
              844: 78 94 sei
              reti();
              846: 18 95 reti
              }[/code]

              ------------------------------------------
              اینم مربوط به تابع فعال ساز تایمر 1:
              [code=asm]0000075a <tc_m128a_1_start>:
              // OCR1A=0; //(no need to change)
              // OCR1B=0; //(no need to change)
              // OCR1C=0; //(no need to change)
              //-----------------------------------------------------------TCCR1A/B/C
              // TCCR1A=0; //(no need to change)
              TCCR1B&=(~ ((1<<CS12) | (1<<CS10)) ); //TC1 STOP
              75a: f8 94 cli
              75c: 81 eb ldi r24, 0xB1 ; 177
              75e: 93 ee ldi r25, 0xE3 ; 227
              760: 9d bd out 0x2d, r25 ; 45
              762: 8c bd out 0x2c, r24 ; 44
              764: 78 94 sei
              766: 8e b5 in r24, 0x2e ; 46
              768: 85 60 ori r24, 0x05 ; 5
              76a: 8e bd out 0x2e, r24 ; 46
              76c: 87 b7 in r24, 0x37 ; 55
              76e: 84 60 ori r24, 0x04 ; 4
              770: 87 bf out 0x37, r24 ; 55
              772: 08 95 ret

              00000774 <__vector_14>:
              }[/code]
              ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
              شهید دکتر مصطفی چمران
              اللهم صل علی محمد و ال محمد و عجل فرجهم
              ; C is not for children

              دیدگاه


                پاسخ : کوچ کردن از کدویژن به AtmelStudio

                در رابطه با روتین وقفه، در بخش ابتدایی دستورات push قرار داده شدند. این دستورات محتویات رجیسترهایی که در روتین وقفه از آنها استفاده شده را در stack ذخیره می کنند و علت اینکه در این نمونه کد تعداد آنها زیاد هست این هست که شما در روتین وقفه توابعی را فراخوانی کرده اید که از نظر کامپایلر ممکن هست رجیسترهای دیگری هم در آنها استفاده شده باشد بنابراین طبق استاندارد GCC از رجیستر r18 تا r31 در stack ذخیره می شوند(بجز r28 , r29). روال کار به این صورت هست که رجیسترهایی که در ابتدا push شدند باید در انتهای روتین وقفه pop شوند اما در این نمونه کد این عملیات اتفاق نمی افتد و علت آن هم استفاده از دستور ;()reti در کد C هست. اگر به چند پست قبل من مراجعه کنید توضیح دادم که چه موقع باید از این دستور استفاده شود.


                در رابطه با تابع، همانطور که می بینید آخرین دستور ret هست که برای خروج از تابع استفاده می شود. شما در کد C اگر دستور return را حذف کنید باز هم در خروجی این دستور وجود خواهد داشت. استفاده از دستور return زمانی هست که مثلا اجرای ادامه کدهای یک تابع مشمول درست بودن یک شرط باشد که در غیر این صورت این دستور قرار داده می شود تا از تابع خارج شود یا زمانیکه تابع مقدار برگشتی داشته باشد.
                [code=c]void test (void)
                {
                .
                .
                .
                if (a != b)
                return;
                .
                .
                .
                }[/code]

                ویرایش: r27, r28 -> r28,r29
                گاهی افرادی به موفقیت های بزرگ می رسند، تنها به این دلیل ساده که نمی دانند کاری که به آن دست زده اند بسیار دشوار، بلکه غیر ممکن است.

                دیدگاه


                  پاسخ : کوچ کردن از کدویژن به AtmelStudio

                  نوشته اصلی توسط Hamed Gh
                  در رابطه با روتین وقفه، در بخش ابتدایی دستورات push قرار داده شدند. این دستورات محتویات رجیسترهایی که در روتین وقفه از آنها استفده شده را در stack ذخیره می کنند و علت اینکه در این نمونه کد تعداد آنها زیاد هست این هست که شما در روتین وقفه توابعی را فراخوانی کرده اید که از نظر کامپایلر ممکن هست رجیسترهای دیگری هم در آنها استفاده شده باشد بنابراین طبق استاندارد GCC از رجیستر r18 تا r31 در stack ذخیره می شوند(بجز r27 , r28). روال کار به این صورت هست که رجیسترهایی که در ابتدا push شدند باید در انتهای روتین وقفه pop شوند اما در این نمونه کد این عملیات اتفاق نمی افتد و علت آن هم استفاده از دستور ;()reti در کد C هست. اگر به چند پست قبل من مراجعه کنید توضیح دادم که چه موقع باید از این دستور استفاده شود.


                  در رابطه با تابع، همانطور که می بینید آخرین دستور ret هست که برای خروج از تابع استفاده می شود. شما در کد C اگر دستور return را حذف کنید باز هم در خروجی این دستور وجود خواهد داشت. استفاده از دستور return زمانی هست که مثلا اجرای ادامه کدهای یک تابع مشمول درست بودن یک شرط باشد که در غیر این صورت این دستور قرار داده می شود تا از تابع خارج شود یا زمانیکه تابع مقدار برگشتی داشته باشد.
                  [code=c]void test (void)
                  {
                  .
                  .
                  .
                  if (a != b)
                  return;
                  .
                  .
                  .
                  }[/code]
                  عالی بود دوست من
                  ممنون
                  ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
                  شهید دکتر مصطفی چمران
                  اللهم صل علی محمد و ال محمد و عجل فرجهم
                  ; C is not for children

                  دیدگاه


                    پاسخ : کوچ کردن از کدویژن به AtmelStudio

                    عرض سلام
                    یه برنامه واسه یه هیتر برقی با کنترلر نوشتم و روی مگا8 هم کامپایل کردم...
                    فلش حدودا 97 درصد و رم 12 درصد پرشده...بعضی وقتا یه دفه انگار اینتراپت ها غیر فعال بشن و مثلا دیگه تریاک ولتاژ رو برش نمیده و خروجی به بالاترین حد میرسه...بعضی وقتا هم میکرو هنگ میکنه و چاره ای جز ریست نداره...با خودم گفتم شاید استک سرریز میشه که اونم با سرچی که کردم فهمیدم خود کامپایلر جوری تنظیم میکنه که استک از بالا به پایین و دیتا از پایین به بالا رشد کنه که با حجم اشعال شده 12 درصد فکر نکنم استک و دیتا به هم برسند!
                    برنامه رو اصولی نوشتم...تاجایی که خودم میدونم! :redface:

                    اوپتیمایزیشن رو هم روی O-1 تنظیم کردم...اوپتیمایز واسه سایز رو هم گذاشتم ولی فایده نداشت!

                    راهی به ذهنتون میرسه؟
                    تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                    www.intelart.ir


                    ساخت کنترلر دما PID فازی با AVR [آموزشی]

                    دیدگاه


                      پاسخ : کوچ کردن از کدویژن به AtmelStudio

                      نوشته اصلی توسط Mahdi.Faani
                      عرض سلام
                      یه برنامه واسه یه هیتر برقی با کنترلر نوشتم و روی مگا8 هم کامپایل کردم...
                      فلش حدودا 97 درصد و رم 12 درصد پرشده...بعضی وقتا یه دفه انگار اینتراپت ها غیر فعال بشن و مثلا دیگه تریاک ولتاژ رو برش نمیده و خروجی به بالاترین حد میرسه...بعضی وقتا هم میکرو هنگ میکنه و چاره ای جز ریست نداره...با خودم گفتم شاید استک سرریز میشه که اونم با سرچی که کردم فهمیدم خود کامپایلر جوری تنظیم میکنه که استک از بالا به پایین و دیتا از پایین به بالا رشد کنه که با حجم اشعال شده 12 درصد فکر نکنم استک و دیتا به هم برسند!
                      برنامه رو اصولی نوشتم...تاجایی که خودم میدونم! :redface:

                      اوپتیمایزیشن رو هم روی O-1 تنظیم کردم...اوپتیمایز واسه سایز رو هم گذاشتم ولی فایده نداشت!

                      راهی به ذهنتون میرسه؟
                      از چه نوع مگا 8 ای استفاده میکنید dip یا smd ؟
                      چون یه یک سالی میشه که این نوع ای سی ها با پکت dip با کیفیت خیلی پایین تولید میشه.
                      قندیل، تندیس قطره هایی است که تسلیم جاذبه زمین نشدند. "چگوآرا"

                      دیدگاه


                        پاسخ : کوچ کردن از کدویژن به AtmelStudio

                        نوشته اصلی توسط Mohsen_22
                        از چه نوع مگا 8 ای استفاده میکنید dip یا smd ؟
                        چون یه یک سالی میشه که این نوع ای سی ها با پکت dip با کیفیت خیلی پایین تولید میشه.
                        دوست عزیز سلام
                        SMD هستش...
                        سه تا خریدم از یه فروشگاه اینترنتی اصفهان!...یکیشون اصلا کار نکرد...نمیدونم از اول خراب بود چش شده بود!
                        ممکنه از میکرو باشه؟؟؟؟؟
                        تولید کننده تجهیزات برنامه پذیر اتوماسیون صنعتی

                        www.intelart.ir


                        ساخت کنترلر دما PID فازی با AVR [آموزشی]

                        دیدگاه


                          پاسخ : کوچ کردن از کدویژن به AtmelStudio

                          نوشته اصلی توسط Mahdi.Faani
                          دوست عزیز سلام
                          SMD هستش...
                          سه تا خریدم از یه فروشگاه اینترنتی اصفهان!...یکیشون اصلا کار نکرد...نمیدونم از اول خراب بود چش شده بود!
                          ممکنه از میکرو باشه؟؟؟؟؟
                          سلام
                          احتمالش زیاده چون شما گفتی یکیشون خراب بوده..
                          کلا سعی کن میکرو ها را از فروشگاه جوان بگیری که در اصل بودنش اطمینان وجود داره(البته اگر به دو دوستان ECA بر نخوره :biggrin...
                          قندیل، تندیس قطره هایی است که تسلیم جاذبه زمین نشدند. "چگوآرا"

                          دیدگاه


                            پاسخ : کوچ کردن از کدویژن به AtmelStudio

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


                            ای خدا ، من باید از نظر علم از همه برتر باشم، تا مبادا که دشمنان مرا از این راه طعنه زنند. باید به آن سنگدلانی که علم را بهانه کرده و به دیگران فخر میآ*فروشند، ثابت کنم که خاک پای من هم نخواهند شد. باید همه آن تیره دلان مغرور و متکبر را به زانو در آورم، آنگاه خود خاضع ترین و افتاده ترین مرد روی زمین باشم.
                            شهید دکتر مصطفی چمران
                            اللهم صل علی محمد و ال محمد و عجل فرجهم
                            ; C is not for children

                            دیدگاه


                              پاسخ : کوچ کردن از کدویژن به AtmelStudio

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

                              www.intelart.ir


                              ساخت کنترلر دما PID فازی با AVR [آموزشی]

                              دیدگاه


                                پاسخ : کوچ کردن از کدویژن به AtmelStudio

                                سلام دوستان
                                به یه مشکل برخوردم.
                                تو AVRStudio 6.2 می خواستم از دو سرویس وقفه استفاده منم. یکی برای برای مقایسه OCR2 و یکی برای oveflow تایمر دو.
                                ساب روتین ها رو تشکیل دادم ولی بعد کامپایل یه error میده. redefinition of 'ISR'

                                کد:
                                // ***************************** Timer 2 compare Subrutine *********************************
                                //							Start of function
                                void ISR (int TIMER2_COMP_vect){
                                	rsig_on;
                                	OCR2=pulse_value++;
                                	
                                	if (pulse_value==256)
                                	{	pulse_value=190;
                                	}
                                reti();
                                }
                                //							End of Timer 0 compare Subrutine
                                
                                // ***************************** Timer 2 overflow Subrutine *********************************
                                //							Start of function
                                void ISR(int TIMER2_OVF_vect){
                                	TCNT2=190;
                                	rsig_off;
                                	lsig_off;
                                }
                                مشکل کجاست؟

                                دیدگاه

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