اطلاعیه

Collapse
No announcement yet.

مشکل با پورت G atmega64

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

    مشکل با پورت G atmega64

    با سلام خدمت اساتید
    من با atmega64یک مشکل دارم اون هم این که دستور چک کردن پایه رو تو کد ویژن قبول نمی کنه
    فرمان رو هم این توری نوشتم ولی باز هم نشد if(PING&(1<<2)==0 ) PORTB.1=1
    نمیدونم از کجاست مشکل لطفا راهنمایی کنید پورت رو میتونم صفر ویک کنم ولی نمی تونم چک کنم
    ممنون لطفا کمک کنید

    #2
    پاسخ : مشکل با پورت G atmega64

    من با یه پروژه ساده کد رو چک کردم کار میکنه . حتما از یه ماژولی از میکرو استفاده میکنی که پورت رو قبضه کرده .
    اگه فیوز بیت m103c فعال باشه پورت G غیر فعال میشه .
    به راه بادیه رفتن ، به از نشستن باطل

    دیدگاه


      #3
      پاسخ : مشکل با پورت G atmega64

      متشکرم دوست خوبم ولی من هر کاری کردم نشد
      تمام فیوز بیتها درسته تمام قسمتهای میکرو داره درست کار میکنه
      فقط این جریان من رو کلافه کرده هم تو پروتوس وهم به صورت عملی

      دیدگاه


        #4
        پاسخ : مشکل با پورت G atmega64

        همیشه قبل از خواندن پورت g پورت را مجددا به عنوان ورودی تنظیم کن . DDRG=0x00
        به راه بادیه رفتن ، به از نشستن باطل

        دیدگاه


          #5
          پاسخ : مشکل با پورت G atmega64

          این 64 چرا دوتا vcc و gnd داره ؟؟؟؟؟
          معجزه پس از معجزه می آید و شگفتی ها از تجلی باز نمی مانند.

          دیدگاه


            #6
            پاسخ : مشکل با پورت G atmega64

            نشد دوستان به این برنامه یک نگاه بندازین مشکل منو بگین ممنون


            #include <mega64.h>

            // I2C Bus functions
            #asm
            .equ __i2c_port=0x12 ;PORTD
            .equ __sda_bit=1
            .equ __scl_bit=0
            #endasm
            #include <i2c.h>

            // DS1307 Real Time Clock functions
            #include <ds1307.h>

            // Timer 1 overflow interrupt service routine
            interrupt [TIM1_OVF] void timer1_ovf_isr(void)
            {


            }

            // Declare your global variables here
            void Init (void);
            void main(void)
            {
            Init();
            PORTA.7=1;
            while (1)
            {
            // Place your code here
            DDRG=0x18;
            if(PING&(1<<2)==0){
            PORTA.6=1;

            }else PORTA.6=0;
            };
            }

            void Init(void){
            // Declare your local variables here

            // Input/Output Ports initialization
            // Port A 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
            PORTA=0x00;
            DDRA=0xFF;

            // Port B 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
            PORTB=0x00;
            DDRB=0x00;

            // Port C initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
            // State7=P State6=P State5=P State4=P State3=P State2=P State1=P State0=P
            PORTC=0xFF;
            DDRC=0x00;

            // Port D initialization
            // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
            // State7=P State6=P State5=P State4=P State3=T State2=T State1=T State0=T
            PORTD=0xF0;
            DDRD=0x00;

            // Port E 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
            PORTE=0x00;
            DDRE=0x00;

            // Port F 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
            PORTF=0x00;
            DDRF=0x00;

            // Port G initialization
            // Func4=Out Func3=Out Func2=In Func1=In Func0=In
            // State4=0 State3=0 State2=P State1=P State0=P
            PORTG=0x07;
            DDRG=0x18;

            // Timer/Counter 0 initialization
            // Clock source: System Clock
            // Clock value: Timer 0 Stopped
            // Mode: Normal top=FFh
            // OC0 output: Disconnected
            ASSR=0x00;
            TCCR0=0x00;
            TCNT0=0x00;
            OCR0=0x00;

            // Timer/Counter 1 initialization
            // Clock source: System Clock
            // Clock value: 125.000 kHz
            // Mode: Normal top=FFFFh
            // OC1A output: Discon.
            // OC1B output: Discon.
            // OC1C output: Discon.
            // Noise Canceler: Off
            // Input Capture on Falling Edge
            // Timer 1 Overflow Interrupt: On
            // Input Capture Interrupt: Off
            // Compare A Match Interrupt: Off
            // Compare B Match Interrupt: Off
            // Compare C Match Interrupt: Off
            TCCR1A=0x00;
            TCCR1B=0x03;
            TCNT1H=0x00;
            TCNT1L=0x00;
            ICR1H=0x00;
            ICR1L=0x00;
            OCR1AH=0x00;
            OCR1AL=0x00;
            OCR1BH=0x00;
            OCR1BL=0x00;
            OCR1CH=0x00;
            OCR1CL=0x00;

            // Timer/Counter 2 initialization
            // Clock source: System Clock
            // Clock value: Timer 2 Stopped
            // Mode: Normal top=FFh
            // OC2 output: Disconnected
            TCCR2=0x00;
            TCNT2=0x00;
            OCR2=0x00;

            // Timer/Counter 3 initialization
            // Clock source: System Clock
            // Clock value: Timer 3 Stopped
            // Mode: Normal top=FFFFh
            // Noise Canceler: Off
            // Input Capture on Falling Edge
            // OC3A output: Discon.
            // OC3B output: Discon.
            // OC3C output: Discon.
            // Timer 3 Overflow Interrupt: Off
            // Input Capture Interrupt: Off
            // Compare A Match Interrupt: Off
            // Compare B Match Interrupt: Off
            // Compare C Match Interrupt: Off
            TCCR3A=0x00;
            TCCR3B=0x00;
            TCNT3H=0x00;
            TCNT3L=0x00;
            ICR3H=0x00;
            ICR3L=0x00;
            OCR3AH=0x00;
            OCR3AL=0x00;
            OCR3BH=0x00;
            OCR3BL=0x00;
            OCR3CH=0x00;
            OCR3CL=0x00;

            // External Interrupt(s) initialization
            // INT0: Off
            // INT1: Off
            // INT2: Off
            // INT3: Off
            // INT4: Off
            // INT5: Off
            // INT6: Off
            // INT7: Off
            EICRA=0x00;
            EICRB=0x00;
            EIMSK=0x00;

            // Timer(s)/Counter(s) Interrupt(s) initialization
            TIMSK=0x04;
            ETIMSK=0x00;

            // Analog Comparator initialization
            // Analog Comparator: Off
            // Analog Comparator Input Capture by Timer/Counter 1: Off
            ACSR=0x80;
            SFIOR=0x00;

            // I2C Bus initialization
            i2c_init();

            // DS1307 Real Time Clock initialization
            // Square wave output on pin SQW/OUT: On
            // Square wave frequency: 32768Hz
            rtc_init(3,1,0);

            // Global enable interrupts
            #asm("sei&quot
            }

            دیدگاه


              #7
              پاسخ : مشکل با پورت G atmega64

              یه اشتباه کوچولو تو برنامه نویسی سی و اون هم اولویت عملگرها

              PING&(1<<2)==0

              اول 0 == ( 2 >> 1 ) انجام میشه یعنی 4==0 همیشه غلط است و بعد یا PING ضرب میشود & که جواب if همیشه غلط است و قسمت else اجرا میشود . میتونید شرط if رو به صورت زیر بنویسید .

              PING2==0
              امیدوارم مشکلات عموم مسلیمن حل بشوند.


              این هم یه راهنما

              http://www.difranco.net/cop2220/op-prec.htm
              به راه بادیه رفتن ، به از نشستن باطل

              دیدگاه


                #8
                مشکل با پورت F atmega64

                سلام من با کد
                PORTG.1=1;
                or
                PORTG2=1;


                PORTF.2=0;
                or
                PORTF2=0;
                مشکل دارم
                تروخدا من را کمکم کنید

                دیدگاه


                  #9
                  پاسخ : مشکل با پورت G atmega64

                  با سلام دوست عزیز در مگا 64 برای پورت f, g باید به صورت بایتی آدرس بدی نمیتونی بیتی آدرس بدی مثلا باید بنویسی PORTG=PORTG|0X1

                  دیدگاه


                    #10
                    پاسخ : مشکل با پورت G atmega64

                    دوستان گرامی در یک کلام باید بگم که در mega64 به هیچ عنوان نمی توانید از پورت های G و F بصورت bit استفاده کنید و باید به صورت بایتی یا 8 بیتی استفاده کنید . در کل دسترسی بیتی به این دو پورت امکان ندارد و برای روشن شدن این موضوع فایل mega64.h را در محیط text باز کنید تا تفاوت تعریف این دو پورت را با دیگر پورتها ببینید . :nice:

                    دیدگاه


                      #11
                      پاسخ : مشکل با پورت G atmega64

                      سلام
                      میخواستم بدونم که این مشکل مربوط به ATmega64 است یا کدویژن ؟
                      اگر مربوط به توابع هدر در کدویژن است میشه با تغییر در تعریف توابع این مشکل را حل کرد؟
                      ممنون
                      زندگی آنچه زیسته ایم نیست ، بلکه چیزی است که به یاد ميآوريم تا روايتش كنيم.
                      گابريل گارسيا ماركز

                      دیدگاه


                        #12
                        پاسخ : مشکل با پورت G atmega64

                        سلام
                        قاعده اصلی زبان C برای کار کردن با پورت ها استفاده از عملگر های " & , | " هست ولی کدویژن با Define کردن یک سری دستور این پورت ها را بصورت بیتی در اختیار گذاشته.
                        مثلا برای set کردن PORTB.0 باید اینطوری نوشت :
                        کد:
                        Portb |=0b00000001;
                        و برای Reset کردن :
                        کد:
                        Portb &=0b11111110;
                        موفق باشید
                        امام علي (عليه السلام) : الزکات العلم نشرهُ/ زکات علم نشر آن است

                        دیدگاه


                          #13
                          پاسخ : مشکل با پورت G atmega64

                          نوشته اصلی توسط mrhashemi
                          سلام
                          میخواستم بدونم که این مشکل مربوط به ATmega64 است یا کدویژن ؟
                          اگر مربوط به توابع هدر در کدویژن است میشه با تغییر در تعریف توابع این مشکل را حل کرد؟
                          ممنون
                          این مشکل مربوط به خود میکرو هست نه کامپایلر.

                          دیدگاه


                            #14
                            پاسخ : مشکل با پورت G atmega128

                            سلام دوستان.من رله رو به portg.2 مگا 128 وصل کردم..ولی 0 یا 1 نمیشه...یه برنامه ساده بهم بدید که بتونه پورت g.2 رو خاموش و روشن کنه..ممنون
                            Ehsana3232@gmail.com

                            دیدگاه


                              #15
                              پاسخ : مشکل با پورت G atmega64

                              یه برنامه ساده میخام ک portg.2 مگا 128 رو صفر و یک کنه...ممنون میشم :cry: :cry:

                              دیدگاه

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