اطلاعیه

Collapse
No announcement yet.

افزایش پورتهای میکرو AVR

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

    افزایش پورتهای میکرو AVR

    سلام. من یک ADC 16 بیتی رو به میکرو mega32 وصل کردم و چند تا ورودی وخروجی دیگه هم دارم که تعدادپورتهای میکروم کافی نیست. خواستم تعداد پورتهای ورودی و خروجیم رو افزایش بدم. این فکر به ذهنم اومد که از 82c88 PPI استفاده کنم. آیا میشه این کار رو کرد؟
    اگه پیشنهادی دارید بهم بگید

    #2
    پاسخ : افزایش پورتهای میکرو AVR

    .

    دیدگاه


      #3
      پاسخ : افزایش پورتهای میکرو AVR

      نوشته اصلی توسط کیوان جافرزاده
      سلام. من یک ADC 16 بیتی رو به میکرو mega32 وصل کردم و چند تا ورودی وخروجی دیگه هم دارم که تعدادپورتهای میکروم کافی نیست. خواستم تعداد پورتهای ورودی و خروجیم رو افزایش بدم. این فکر به ذهنم اومد که از 82c88 PPI استفاده کنم. آیا میشه این کار رو کرد؟
      اگه پیشنهادی دارید بهم بگید
      با سلام

      جهت افزایش ورودیها و خروجیهای میکرو ، برای پروژه های شما ، سه راه پیشنهاد میگردد .

      1- استفاده از چیپهای 74ls573 یا 74ls595 و یا 74ls541 - 74ls540 - 74ls245 ... برای ایجاد I/O های ساده

      2- استفاده از چیپ 82c55 برای ایجاد I/O های قابل برنامه ریزی (( موردی که فرمودید >> 82c88PPI ، احتمالا همین چیپ 82c55 میباشد))

      3- استفاده از چیپهای CPLD

      دیدگاه


        #4
        پاسخ : افزایش پورتهای میکرو AVR

        منظورم 82c55 بود

        دیدگاه


          #5
          پاسخ : افزایش پورتهای میکرو AVR

          آقا متشکرم . منم منظورم همین 8255 بود. پس شما هم موافقید.اگه میشه لینک یک برنامه و یا پروژه مثال با این 8255 وMega 32 بذارید برام.

          دیدگاه


            #6
            پاسخ : افزایش پورتهای میکرو AVR

            نوشته اصلی توسط کیوان جافرزاده
            آقا متشکرم . منم منظورم همین 8255 بود. پس شما هم موافقید.اگه میشه لینک یک برنامه و یا پروژه مثال با این 8255 وMega 32 بذارید برام.
            با سلام

            برای گاهی از روش ارتباط با 82c55PPI بازبینی این مطالب مفید میباشند .

            http://marc.rawer.de/Gameboy/docu_3_2.htm

            http://www.ianstedman.co.uk/Amiga/designs/diocard/diocard.html

            http://cs.boisestate.edu/~amit/research/CPM/

            و توضیحات مناسب در اینجا:
            http://www24.brinkster.com/microprocessor2/Interface/Interface_8/PPI2.htm

            دیدگاه


              #7
              پاسخ : افزایش پورتهای میکرو AVR

              سلام دوست عزیز،منم چند روزه که دارم رو اتصال 82c55 به avr کار میکنم،با بسکام یکم راه انداختم،ولی هنوز کار داره،اگه می خوای برنامرو برات بگذارم.

              دیدگاه


                #8
                پاسخ : افزایش پورتهای میکرو AVR

                نوشته اصلی توسط کیوان جافرزاده
                سلام. من یک ADC 16 بیتی رو به میکرو mega32 وصل کردم و چند تا ورودی وخروجی دیگه هم دارم که تعدادپورتهای میکروم کافی نیست. خواستم تعداد پورتهای ورودی و خروجیم رو افزایش بدم. این فکر به ذهنم اومد که از 82c88 PPI استفاده کنم. آیا میشه این کار رو کرد؟
                اگه پیشنهادی دارید بهم بگید
                سلام
                دوست عزیز می تونی از آی سی لچ هم استفاده کنید.

                دیدگاه


                  #9
                  پاسخ : افزایش پورتهای میکرو AVR

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

                  دیدگاه


                    #10
                    پاسخ : افزایش پورتهای میکرو AVR

                    [pre]بازم سلام من این 8255 رو به میکرو وصل کردم اما جواب نداد نمی دونم چرا
                    برنامش رو واستون گذاشتم که ببینی. این برنامه قراره 8 تا LED رو به فاصله یک ثانیه روشن کنه.
                    #include <mega32.h>

                    // Standard Input/Output functions
                    #include <stdio.h>
                    #include <delay.h>

                    #define dta PORTC


                    #define wr PORTD.2
                    #define rd PORTD.3

                    #define a0 PORTD.4
                    #define a1 PORTD.5

                    // Declare your global variables here

                    void main(void)
                    {
                    // Declare your local variables here
                    int i,l1;
                    // 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=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=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
                    PORTC=0x00;
                    DDRC=0xFF;

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

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

                    // Timer/Counter 1 initialization
                    // Clock source: System Clock
                    // Clock value: Timer 1 Stopped
                    // Mode: Normal top=FFFFh
                    // OC1A output: Discon.
                    // OC1B output: Discon.
                    // Noise Canceler: Off
                    // Input Capture on Falling Edge
                    // Timer 1 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: Timer 2 Stopped
                    // Mode: Normal top=FFh
                    // 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
                    // Communication Parameters: 8 Data, 1 Stop, No Parity
                    // USART Receiver: On
                    // USART Transmitter: On
                    // USART Mode: Asynchronous
                    // USART Baud Rate: 9600
                    UCSRA=0x00;
                    UCSRB=0x18;
                    UCSRC=0x86;
                    UBRRH=0x00;
                    UBRRL=0x33;

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

                    while (1)
                    {
                    a0=1;
                    a1=1;

                    rd=1;
                    wr=0;
                    dta=0x80;
                    delay_ms(1);
                    dta=0x01;
                    for (i=1;i<9;i++){
                    printf("sending"
                    a0=0 ;
                    a1=1;
                    rd=1;
                    wr=0 ;
                    delay_ms(1000);
                    l1=dta;
                    dta=l1<<1;;

                    } //here
                    };
                    }[/pre]

                    دیدگاه


                      #11
                      پاسخ : افزایش پورتهای میکرو AVR

                      دوست عزیز، اگه تعداد وروی خروجیهات خیلی زیاد نیست، میتونی از اینا هم استفاده کنی.
                      74hc138 - یه دیکودر 3 به هشته که با اشغال سه تا از پایه های میکرو هشتا خروجی میتونی داشته باشی.
                      74hc595 - یه مبدل سریال به پارالل - که با سه تا پایه میکرو میتونی تا n تا خروجی بگیری که البته بصورت سریاله - ولی بدلیل سرعت بالای avr خیلی راحت میتونی ازشون استفاده بکنی - در ضمن میتونی هر تعداد از 74hc595 ها رو بصورت زنجیری به وصل کنی و همه خروجیها رو فقط از همون سه تا پایه کنترل کنی.
                      دانلود بدون دردسر از راپیدشر و فور شرد و ...

                      دیدگاه


                        #12
                        پاسخ : افزایش پورتهای میکرو AVR

                        من مشکلم حل شد از همتون متشکرم

                        دیدگاه

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