اطلاعیه

Collapse
No announcement yet.

سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

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

    پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

    نوشته اصلی توسط p2daaaaa
    سلام من یه سوالی درباره پیدا کردن کدها برای هر عدد در کی پد دارم اگر کمکم کنید ممنون میشم
    روشی ک مهندس کی نژاد در مثال های آموزشی برای اسکن صفحه کلید انجام دادن مناسب هست. با کمک روتین وقفه و تنظیمات در مد ctc و ایجاد زمان 1 میلی ثانیه و به کمک روتین وقفه زیر میتونید کد های لازم از صفحه کلید رو بدست بیارید
    کد:
    interrupt [TIM0_COMP] void timer0_compare_isr(void)
    {
     static unsigned char x20=0;
     unsigned char temp , i;
     if (++x20==20)
     {
     x20=0;
     DDRB=(1<<DDB2)|(1<<DDB1)|(1<<DDB0);
     PORTB=(1<<PORTB6)|(1<<PORTB5)|(1<<PORTB4)|(1<<PORTB3);
     delay_us(5); // delay for signal stablization
     temp=(PINB & 0X78);
     DDRB=(1<<DDB6)|(1<<DDB5)|(1<<DDB4)|(1<<DDB3);
     PORTB=(1<<PORTB2)|(1<<PORTB1)|(1<<PORTB0);
     delay_us(5); // delay for signal stablization
     temp |=(PINB & 0X07);
     for(i=0;i<12;i++)
     {
      if(temp==keyboard_codes[i])
      {
      key_code=i;
      break;
      }
      else key_code=nokey_code;
     }
     }
    }
    ضمنا آرایه keyboard_codes هم باید در ابتدا تعریف بشه

    کد:
    //keyboard codes
    flash unsigned char keyboard_codes[]={0x76,0x6E,0x5E,0x3E,0x75,0x6D,0x5D,0x3D,0x73,0x6B,0x5B,0x3B};
    اگر توضیحی در مورد این برنامه هم میخوایید بهتره که جلسه 17-18 از مجموعه فیلمهای اموزشی ایشونو رو ببینید

    http://www.knowledgeplus.ir/default.aspx?lang=Fa

    دیدگاه


      پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

      سلام
      من یه مشکل تو برنامه نویسی دارم من تازه وارد برنامه نویسی C شده ام.
      از اینترنت برنامه ی پیدا کردم که با اون میتونم سروو موتور رو کنترل کنم موفق به راه اندازی شدم ولی من می خوام دوتا سروو راه اندازی کنم از atmega16 پایه (PD.5 (OCR1A برای این کار استفاده می کنم. یه جا نوشته بود میشه با OCR1B هم سروو راه اندازی کرد یعنی هم زمان دو سروو رو راه اندازی کرد.

      میشه یه لطفی کنید کمکم کنید...
      این قسمتی از برنامه ست کجا رو باید تغییر بدم.
      خیلی خیلی ممنونم. :applause: :applause: :applause: @};- @};- @};-

      کد:
      TCCR1A=0x80;
      TCCR1B=0x12;
      TCNT1H=0x00;
      TCNT1L=0x00;
      ICR1H=0x4E;
      ICR1L=0x20;
      OCR1A=1240;

      دیدگاه


        پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

        سلام دوستان
        یه راهنمایی میخواستم
        میشه راهنماییم کنید چطوری شرط بر اساس زمان درست کنم
        کلا اینطوری میخوام بگم
        مثلا رو
        رو پایه صفر پورت a یه کلید هست این کلید در حالت عادی با هر بار فشار دادنش یه عدد رو زیاد میکنه یا کلا یه کاری میکنه
        حالا اگر.اون کلید براق مدت دو ثاینه یک بودیه کار دیگه کنه مثلا بره تو منو
        واضحتر
        من میخوام یه ساعت درست کنم که تایمر هم داشته باشه میخوام وقتی یه کلید رو مثلا د وثاینه فشار میدم بره تو حالت تنظیم زمان تایمر
        امیدوارم متوجه شده باشین
        مرسی
        وقتی زندگی به سمت دشوار شدن تغییر مسیر میدهد
        شما به سمت قوی تر شدن تغییر مسیر دهید

        دیدگاه


          پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

          نوشته اصلی توسط ALI micro
          سلام
          من یه مشکل تو برنامه نویسی دارم من تازه وارد برنامه نویسی C شده ام.
          از اینترنت برنامه ی پیدا کردم که با اون میتونم سروو موتور رو کنترل کنم موفق به راه اندازی شدم ولی من می خوام دوتا سروو راه اندازی کنم از atmega16 پایه (PD.5 (OCR1A برای این کار استفاده می کنم. یه جا نوشته بود میشه با OCR1B هم سروو راه اندازی کرد یعنی هم زمان دو سروو رو راه اندازی کرد.

          میشه یه لطفی کنید کمکم کنید...
          این قسمتی از برنامه ست کجا رو باید تغییر بدم.
          خیلی خیلی ممنونم. :applause: :applause: :applause: @};- @};- @};-

          کد:
          TCCR1A=0x80;
          TCCR1B=0x12;
          TCNT1H=0x00;
          TCNT1L=0x00;
          ICR1H=0x4E;
          ICR1L=0x20;
          OCR1A=1240;
          آقا کسی نبود کمک کنه :surprised: :surprised: :surprised: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2:

          دیدگاه


            پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

            نوشته اصلی توسط ALI micro
            آقا کسی نبود کمک کنه :surprised: :surprised: :surprised: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2:
            سلام

            برنامه ی کامل را بگذارید تا همه تغیرات را بدیم .
            باد می وزد ...
            میتوانی در مقابلش هم دیوار بسازی ، هم آسیاب بادی
            تصمیم با تو است ...

            دیدگاه


              پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

              نوشته اصلی توسط ALI micro
              آقا کسی نبود کمک کنه :surprised: :surprised: :surprised: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2:
              کامنت های قبلش که مربوط به کانفیگ تایمر هست رو بذار
              گفت که دیوانه نهی لایق این خانه نهی

              دیدگاه


                پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                سلام
                :applause: :applause: :applause: :applause: :applause: :applause: :applause:
                :wow: :wow: :wow: :wow:
                تشکر ATROBOT و Finder_ @};- @};- @};- @};-
                کد:
                #include <mega16.h>
                #include <stdio.h>
                #include <delay.h>
                #include <nRF24L01+.h>
                #include <alcd.h>
                #include <Stdlib.h>
                
                
                void main(void)
                {
                
                
                #pragma used+
                
                 int i,j;
                unsigned char str3[];
                unsigned char str4[];
                unsigned char str5[];
                unsigned char str6[];
                
                #pragma used- 
                
                
                
                unsigned int data1;
                unsigned int data2;
                 unsigned int T;
                 int b1;
                 int b2;
                 int b3;
                 int b4;
                 int a;
                
                lcd_init(16);
                lcd_clear();
                lcd_gotoxy(4,0);
                lcd_puts("START RX"); 
                delay_ms(500);
                lcd_clear();
                
                nRF_Config(1);
                DDRC = 0x03;
                DDRD.6=1;
                DDRD.5=1;
                DDRD.4=1;
                TCCR1A=0x80;
                TCCR1B=0x12;
                TCNT1H=0x00;
                TCNT1L=0x00;
                ICR1H=0x4E;
                ICR1L=0x20;
                 
                while (1)
                   { 
                  
                    
                   if(State == 1)  
                   { 
                
                    PORTD.6=1;
                    delay_ms(10);
                    PORTD.6=0;
                         
                   b1 = payload[1]; 
                   b2 = payload[2]; 
                   b3 = payload[3];
                   b4 = payload[4]; 
                   
                   if (b2>0) b2=b2+255;
                   else b2=0;
                
                   if (b3>0) b3=b3+507;
                   else b3=0;
                
                   if (b4>0) b4=b4+760;
                   else b4=0;
                
                   T= b1+b2+b3+b4;
                  
                   T=T+281;
                   if (T<320)T=320; 
                   OCR1A=T; 
                   OCR1B=T;   
                   itoa(T,str3);      
                   lcd_clear();
                   lcd_gotoxy(0,0);   
                   lcd_puts(str3); 
                   State = 0; 
                       
                   }       
                    
                   } 
                   
                   
                }

                دیدگاه


                  پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                  سلام
                  آقای ATROBOT و Finder_
                  و دیگر دوستان

                  لطفا یه نگاه به برنامه بندازید ببینید باید چی کار کنم. :question: :question:
                  :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :angry: :angry: :angry: :cry2: :cry2: :cry2:

                  ممنون @};- @};- @};-

                  دیدگاه


                    پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                    سلام دوستان
                    من میخوام یه برنامه تو کدویژن بنویسم که یه گیرنده ی مادونه قرمز به عنوانه یه ورودی به میکرو (Mega32) وصل کنم و با یه فرستنده ی مادونه قرمز چند لحظه بفرستم و اوگیرنده بگیره و به میکرو انتقال بده و میکرو برام یه ال ای دیو روشن کنه چند ثانیه و بعد خاموش کنه . در این مورد چنتا سوال داشتم :
                    1 - وقتی گیرنده ی مادونه قرمزو به پین A میبندم چطور توی c تعریف کنم که اگر ورودی این ؟؟ که نمیدونم چیه و تو زبانه c شد واسه من یه ال ای دیو تو پورت B روشن کنه و خاموش کنه
                    (??if(PINA=0b
                    }
                    PORTA.1=1;
                    {
                    2 - وقتی مداره فرستنده ی مادونه قرمزو بستم هر گیرنده ی دیگه ی مادونه قرمز چیزی که میفرسترو دریافت میکنن ؟ اگه نه من چطور به گیرنده ام بفهمونم دارم با فرستندم میفرستم ؟

                    دیدگاه


                      پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                      بستگی داره گیرنده از چه نوعی هست مثلا دیودی ,ترانزیستوری هستش NPN یا PNP

                      دیدگاه


                        پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                        بطور کلی باید مدار رو به صورت پول پ تعریف کنی
                        یعنی پایه ورودی رو که قصد داری گیرنده رو بهش وصل کنی پول پ تعریف کن مثلا پایه 1 از پورت A
                        DDRA.0=1;
                        بعد سر آند یا سر کلکتور (در صورتی که گیرنده ترانزیستوری هستش) رو به پایه A.0 وصل کن و سر کاتد یا (امیتر)رو زمین کن
                        بعد تو برنامه دستور زیر رو تعریف کن (پایه یک از پورت B خروجی هستش)
                        if(PORTA.0==0)PORTB.0=1;
                        حالا اگه می خوای برای لحظه ای روشن بشه باید تاخیر delay_ms تعریف کنی و بعدPORTB.0=0
                        اما پاسخ سوال دوم : تمامی گیرنده ها با دیدن ی مادون قرمز تو خروجی خود تغییراتی دارن حالا برای اینکه اطلاعات فرستنده دیگه ای روی گیرنده تو تاثیر نگذاره باید اطلاعاتت رو بصورت کد شده بفرستی

                        دیدگاه


                          پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                          نوشته اصلی توسط ALI micro
                          سلام
                          من یه مشکل تو برنامه نویسی دارم من تازه وارد برنامه نویسی C شده ام.
                          از اینترنت برنامه ی پیدا کردم که با اون میتونم سروو موتور رو کنترل کنم موفق به راه اندازی شدم ولی من می خوام دوتا سروو راه اندازی کنم از atmega16 پایه (PD.5 (OCR1A برای این کار استفاده می کنم. یه جا نوشته بود میشه با OCR1B هم سروو راه اندازی کرد یعنی هم زمان دو سروو رو راه اندازی کرد.

                          میشه یه لطفی کنید کمکم کنید...
                          این قسمتی از برنامه ست کجا رو باید تغییر بدم.
                          خیلی خیلی ممنونم. :applause: :applause: :applause: @};- @};- @};-

                          کد:
                          TCCR1A=0x80;
                          TCCR1B=0x12;
                          TCNT1H=0x00;
                          TCNT1L=0x00;
                          ICR1H=0x4E;
                          ICR1L=0x20;
                          OCR1A=1240;
                          سلام
                          کسی نمی خواد یه کمکی کنه :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2:

                          دیدگاه


                            پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                            نوشته اصلی توسط ALI micro
                            سلام
                            کسی نمی خواد یه کمکی کنه :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2: :cry2:
                            کامنتای قبل کد برای کانفیگ تایمر 1 رو بذار
                            گفت که دیوانه نهی لایق این خانه نهی

                            دیدگاه


                              پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                              نوشته اصلی توسط Finder_
                              کامنتای قبل کد برای کانفیگ تایمر 1 رو بذار
                              سلام
                              کد:
                              Project : nRF24L01+
                              Version : 
                              Date  : 9/25/2013
                              Author : Ali Imanifar
                              Company : ECA
                              Comments: 
                              
                              
                              Chip type        : ATmega32
                              Program type      : Application
                              AVR Core Clock frequency: 8.000000 MHz
                              Memory model      : Small
                              External RAM size    : 0
                              Data Stack size     : 512
                              منظور شما این دیگه .... درسته :question: :question: :sad: :sad: :sad: :sad: :sad:

                              دیدگاه


                                پاسخ : سوالات مربوط به زبان C و کدویژن(در میکرو AVR)

                                نوشته اصلی توسط ALI micro
                                سلام
                                کد:
                                Project : nRF24L01+
                                Version : 
                                Date  : 9/25/2013
                                Author : Ali Imanifar
                                Company : ECA
                                Comments: 
                                
                                
                                Chip type        : ATmega32
                                Program type      : Application
                                AVR Core Clock frequency: 8.000000 MHz
                                Memory model      : Small
                                External RAM size    : 0
                                Data Stack size     : 512
                                منظور شما این دیگه .... درسته :question: :question: :sad: :sad: :sad: :sad: :sad:
                                نه اونایی که قبل از تایمر هاست
                                باد می وزد ...
                                میتوانی در مقابلش هم دیوار بسازی ، هم آسیاب بادی
                                تصمیم با تو است ...

                                دیدگاه

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