اطلاعیه

Collapse
No announcement yet.

چند سوال مبتدی در رابطه با AVR

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

    چند سوال مبتدی در رابطه با AVR

    سلام.
    من به تازگی AVR یادگرفتم و تجربه ی چندانی ندارم. با codevision هم کار می کنم. یه atmga16A و AVR USB Programmer هم از همین سایت eca گرفتم.
    چندتا سوال داشتم که امیدوارم راهنمایی کنید:
    - برای خروجی کردن (PB3 (OC0 باید چی کار کرد که پالس PWM رو خارج کنه؟ (فقط رجیستر DDRB رو مقدار بدیم ، کافیه؟)
    - برای تنظیم کلاک سیستم و کلاکی که برای timer استفاده می شه (I/O) باید چی کار کرد؟ (مثلا 4 مگاهرتز)
    - برای نوشتن برنامه در ابتدا باید میکرو اینطوری تعریف بشه: <include <mega16a.h#
    - فرمول زیر برای مقدار فرکانس PWM در مد Phase correct PWM در timer/counter 0 هستش. برای dutycycle (دیوتی سایکل) چه فرمولی وجود داره؟ (مثلا اگر فرض کنیم که فرکانس کلاک سیستم 4 مگاهرتز و کلاک I/O هم 4 مگاهرتز باشه باید به OCR0 و N چه مقداری بدیم تا دیوتی سایکل 10 درصد بشه و همچنین فرکانس 50 هرتز بشه.)

    ----- *دل نوشته* -----
    راستش محور این سوال ها همشون برای راه اندازی موتور براشلسه که واقعا اعصابم رو خورد کرده و برنامه ای هم که نوشتم و توی میکرو میریزم و با اینکه توی پروتئوس جواب می ده ولی توی میکرو کنترلر انگار نه انگار که اتفاقی باید بیفته :angry:. اگه کسی تجربه ای توی این زمینه داره لطفا کدی رو اینجا بذاره تا ما هم امتحان کنیم. :applause: کمک کنین که یه مدلر برای ساخت هواپیماش این قدر درجا نزنه فقط به خاطر روشن شدن موتورش (و پالسی که باید به اسپیدکنترلرش بدیم.) :cry:.
    هر سوزنی که برای غیر خدا زدم به دستم فرو رفت (شیخ رجبعلی خیاط)

    #2
    پاسخ : چند سوال مبتدی در رابطه با AVR

    این فایلو بخونی جواب همه سوالات توشه:
    http://www.4shared.com/office/gI37a8kg/AVR_PNK.html
    mer30

    دیدگاه


      #3
      پاسخ : چند سوال مبتدی در رابطه با AVR

      سلام
      یه سوال هم من دارم اگه دو تا میکرو با برنامه مشابه کلا همه چیزش یکی باشه بجز تفاوت در خروجی ها روی یک برد با تغذیه مشترک بسته بشن امکان داره هماهنگیشون از نظر زمانی بهم بخوره ؟

      دیدگاه


        #4
        پاسخ : چند سوال مبتدی در رابطه با AVR

        نوشته اصلی توسط tester_t
        سلام
        یه سوال هم من دارم اگه دو تا میکرو با برنامه مشابه کلا همه چیزش یکی باشه بجز تفاوت در خروجی ها روی یک برد با تغذیه مشترک بسته بشن امکان داره هماهنگیشون از نظر زمانی بهم بخوره ؟
        بستگی داره 2 تا میکرو با یه اسیلاتور محلی پالس گرفته باشن و تو حالت : external clock
        mer30

        دیدگاه


          #5
          پاسخ : چند سوال مبتدی در رابطه با AVR

          دوستان یه سوالی هم من داشتم. میخام با میکرو 6تا سون سگمنتو روشن کنم یعنی دوتا 7سگمنت 3دیجیت. واسهی پایه مشترک سون سگمنتا ترانزیستور گذاشتم برای تقویت جریان. ولی همه ی سون سگمنتا اینجوری روشن میشه. چرا؟ برنامه میکرو بدون ترانزیستور درست کار میکنه.
          در ضمن 2تا سنسوره شمارنده دارم. دوتاشو باهم میدم یک بشن باید بشمره و اگه فقط یکیشون یک بشه باید ارور بده. به نظرتون از چه روشی واسه برنامه شمردن استفاده کنم؟ من با c تو کدویژن بلدم کار کنم.

          دیدگاه


            #6
            پاسخ : چند سوال مبتدی در رابطه با AVR

            برای تنظیمات فرکانس و دیوتی سایکل بصورت تخصصی اینجا گفته شده:
            http://www.eca.ir/forum2/index.php?topic=51858.0
            mer30

            دیدگاه


              #7
              پاسخ : چند سوال مبتدی در رابطه با AVR

              دوستان کسی نیس مشکل منو حل کنه؟!!!!!!!!!! :cry: :cry2: :sad:
              ممنون میشم از توجهتون.

              دیدگاه


                #8
                پاسخ : چند سوال مبتدی در رابطه با AVR

                نوشته اصلی توسط soso67
                دوستان کسی نیس مشکل منو حل کنه؟!!!!!!!!!! :cry: :cry2: :sad:
                ممنون میشم از توجهتون.
                برو اینجا در موردpwm متغیر با فرکانس متغیر توضیح داده
                سایت http://knowledgeplus.ir :agree:
                .The best question deserves a better answer
                =-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=
                «پناه»می برم «به خدا»
                از عـیبی که ، «امروز» در خود می بینم، و «دیروز» «دیگران را» به خاطر، «هـمان عیـب» ملامت کرده ام.
                محتاط باشیم، در «سرزنش» و «قضاوت کردن دیگران». وقتی نه از «دیروز او» خبر داریم و نه از "فردای خودمان" .

                دیدگاه


                  #9
                  پاسخ : چند سوال مبتدی در رابطه با AVR

                  نوشته اصلی توسط blue_pulse
                  برو اینجا در موردpwm متغیر با فرکانس متغیر توضیح داده
                  سایت http://knowledgeplus.ir :agree:
                  سلام از جوابتون ممنونم.
                  ولی دوستان میخام یکی که مشکلمو متوجه شده جواب سوالامو بده. چون به توضیحات بیشتر نیاز دارم.

                  دیدگاه


                    #10
                    پاسخ : چند سوال مبتدی در رابطه با AVR

                    نوشته اصلی توسط soso67
                    دوستان یه سوالی هم من داشتم. میخام با میکرو 6تا سون سگمنتو روشن کنم یعنی دوتا 7سگمنت 3دیجیت. واسهی پایه مشترک سون سگمنتا ترانزیستور گذاشتم برای تقویت جریان. ولی همه ی سون سگمنتا اینجوری روشن میشه. چرا؟ برنامه میکرو بدون ترانزیستور درست کار میکنه.
                    در ضمن 2تا سنسوره شمارنده دارم. دوتاشو باهم میدم یک بشن باید بشمره و اگه فقط یکیشون یک بشه باید ارور بده. به نظرتون از چه روشی واسه برنامه شمردن استفاده کنم؟ من با c تو کدویژن بلدم کار کنم.
                    متنی که نوشتی یکم مبهمه و برنامه و شماتیک کارتم که نیست از روش نگاه کنیم :smile:
                    mer30

                    دیدگاه


                      #11
                      پاسخ : چند سوال مبتدی در رابطه با AVR

                      سلام برمانه ای که نوشتم اینه :

                      /************************************************** ***
                      Project : money counter
                      Version : 0.00
                      Date : 2013/08/12
                      Author : soso
                      Company : sepehr alborz damavand

                      Chip type : ATmega16L
                      Clock frequency : 8.000000 MHz
                      Memory model : Small
                      Data Stack size : 256
                      ************************************************** ***/

                      #include <mega32.h>
                      #include <delay.h>
                      #include <BCD.h>

                      void main(void)
                      {
                      int m ,s ,d ,y , n, b, mm, ss, dd, yy, bb,i ;
                      int c=0, a=0;
                      c=0;
                      a=0;

                      PORTA=0x00;
                      DDRA=0xff; // khoroji . 7segment counter

                      PORTB=0x00;
                      DDRB=0xff; // khoroji . 7segment stop

                      PORTD=0xff;
                      DDRD=0xff; // vorodi . sensores . switches

                      SFIOR=0x00;

                      while (1)
                      {
                      if (PIND.4==0){
                      c=c+10;
                      if(c==1000)
                      c=0;
                      }

                      if (PIND.5==0){
                      c=c+100;
                      if(c==1000)
                      c=0;
                      }
                      if (PIND.6==0)
                      c=0;

                      while ((PIND.0==1)) // if sens1(gozashtan pol) ok
                      {

                      if (c==0)
                      PORTB.7=1; // start motor
                      else {
                      if (a<c){
                      PORTB.7=1; // start motor
                      }
                      else
                      PORTB.7=0;
                      }




                      if (PIND.1==0) // sensor bardashtan polaye ghabli
                      a=0 ;
                      if ((PIND.2 | PIND.3)==1){ // 2ta sensor polshomar
                      if ((PIND.2 & PIND.3)==0) // error **??????????
                      PORTB.7 = 0; // STOP MOTOR


                      if ((PIND.2 & PIND.3)==1) {
                      ++a ;
                      if (a==999);
                      PORTB.7 = 0;
                      if (c!=0){
                      if (a==c)
                      PORTB.7 = 0;
                      }
                      }
                      }

                      m = a/10 ;
                      s = bin2bcd (a/100); // sadegan
                      d = bin2bcd (m-(s*10)); // dahegan
                      y = bin2bcd (a%10); // yakan

                      mm = c/10 ;
                      ss = bin2bcd (c/100); // sadegan
                      dd = bin2bcd (mm-(ss*10)); // dahegan
                      yy = bin2bcd (c%10); // yakan



                      for (i=100 ; i>0 ; i--)
                      {
                      PORTA = 0X00 ;



                      b = 0b00001111 & y ;
                      n = 0b00010000 | b ;
                      PORTA = n ;
                      delay_us(100);
                      PORTA = 0X00 ;

                      b = 0b00001111 & d ;
                      n = 0b00100000 | b ;
                      PORTA = n;
                      delay_us(100);
                      PORTA = 0X00 ;

                      b = 0b00001111 & s ;
                      n = 0b01000000 | b ;
                      PORTA = n;
                      delay_us(100);
                      PORTA = 0X00 ;


                      bb = 0b00001111 & yy ;
                      PORTB.0=1 ;
                      PORTA = bb ;
                      delay_us(100);
                      PORTB.0=0;

                      bb = 0b00001111 & dd ;
                      PORTB.1=1 ;
                      PORTA = bb;
                      delay_us(100);
                      PORTB.1=0 ;

                      bb = 0b00001111 & ss ;
                      PORTB.2=1 ;
                      PORTA = bb;
                      delay_us(100);
                      PORTB.2=0 ;
                      }

                      }






                      m = a/10 ;
                      s = bin2bcd (a/100); // sadegan
                      d = bin2bcd (m-(s*10)); // dahegan
                      y = bin2bcd (a%10); // yakan

                      mm = c/10 ;
                      ss = bin2bcd (c/100); // sadegan
                      dd = bin2bcd (mm-(ss*10)); // dahegan
                      yy = bin2bcd (c%10); // yakan



                      for (i=100 ; i>0 ; i--)
                      {
                      PORTA = 0X00 ;


                      b = 0b00001111 & y ;
                      n = 0b00010000 | b ;
                      PORTA = n ;
                      delay_us(100);
                      PORTA = 0X00 ;

                      b = 0b00001111 & d ;
                      n = 0b00100000 | b ;
                      PORTA = n;
                      delay_us(100);
                      PORTA = 0X00 ;

                      b = 0b00001111 & s ;
                      n = 0b01000000 | b ;
                      PORTA = n;
                      delay_us(100);
                      PORTA = 0X00 ;


                      bb = 0b00001111 & yy ;
                      PORTB.0=1 ;
                      PORTA = bb ;
                      delay_us(100);
                      PORTB.0=0;

                      bb = 0b00001111 & dd ;
                      PORTB.1=1 ;
                      PORTA = bb;
                      delay_us(100);
                      PORTB.1=0 ;

                      bb = 0b00001111 & ss ;
                      PORTB.2=1 ;
                      PORTA = bb;
                      delay_us(100);
                      PORTB.2=0 ;

                      }
                      }
                      }

                      ممنونم .

                      دیدگاه


                        #12
                        پاسخ : چند سوال مبتدی در رابطه با AVR

                        یه سوال تو پروتووس با این کد جواب گرفتی؟ کار میکنه یا نه
                        کاش برنامتو اینطوری رو پست نمیزاشتی که همیچیش بهم بخوره من که سر در گم شدم عزیز :angry:
                        برنامهتو از طریق کد وارد کن تا کدها بهم نخوره.
                        در ضمن اگه با این برنامه تو شبیه سازجواب گرفتی مشکل به اختمال زیاد از سخت افزارته که لازمه pdfشو بزاری
                        mer30

                        دیدگاه


                          #13
                          پاسخ : چند سوال مبتدی در رابطه با AVR

                          نوشته اصلی توسط mohsenmax70
                          این فایلو بخونی جواب همه سوالات توشه:
                          http://www.4shared.com/office/gI37a8kg/AVR_PNK.html
                          ممنون از این که کمک کردی.
                          با این که فرمولی برای محاسبه ی dutyctcle توش نبود ولی در واقع خیلی سادس و با یک سری مفاهیم فیزیکی (روابط فرکانس و زمان) به دست میاد...
                          هر سوزنی که برای غیر خدا زدم به دستم فرو رفت (شیخ رجبعلی خیاط)

                          دیدگاه


                            #14
                            پاسخ : چند سوال مبتدی در رابطه با AVR

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

                            دیدگاه


                              #15
                              پاسخ : چند سوال مبتدی در رابطه با AVR

                              نوشته اصلی توسط soso67
                              سلام نه تو برد برد جواب نگرفتم.
                              فدات شم به سوالم دقت کن :bye نوشتم تو پروتووس جواب گرفتی یعنی اونجا کدهای برنامت درست کار میکنن یا نه :question:
                              mer30

                              دیدگاه

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