اطلاعیه

Collapse
No announcement yet.

کمک در راه اندازی DAC با SPI

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

    کمک در راه اندازی DAC با SPI

    سلام
    خواهشا هرکسی میتونه یه کمکی به من بکنه. -
    من میخوام یک DAc رو با SPI راه اندازی کنم و ولتاژ ازش بگیرم به میزان دلخواه البته با spi میکرو 8-32یاATmega

    مدل DAC LTC1655 هست.
    حالا سوال من اینه که باید چطوری SPI و برنامه نویسی کنم با توجه به خواسته این آی سی.

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

    #2
    پاسخ : کمک در راه اندازی DAC با SPI

    نوشته اصلی توسط ahmad1370ahmad نمایش پست ها
    سلام
    خواهشا هرکسی میتونه یه کمکی به من بکنه. -
    من میخوام یک DAc رو با SPI راه اندازی کنم و ولتاژ ازش بگیرم به میزان دلخواه البته با spi میکرو 8-32یاATmega

    مدل DAC LTC1655 هست.
    حالا سوال من اینه که باید چطوری SPI و برنامه نویسی کنم با توجه به خواسته این آی سی.

    انشالله خیر ببینه هر کی میتونه کمک بکنه
    من یکی دیگه رو که ماله میکروچیپ و 12 بیتی بود را راه اندازی کردم تابع اش رو دارم کار خیلی ساده ای هست اگه اون بدردتون می خره قرار بدم اگه نه همین هم نباید مشکلی باشه
    التماس دعا

    دیدگاه


      #3
      پاسخ : کمک در راه اندازی DAC با SPI

      نوشته اصلی توسط ali.ra نمایش پست ها
      من یکی دیگه رو که ماله میکروچیپ و 12 بیتی بود را راه اندازی کردم تابع اش رو دارم کار خیلی ساده ای هست اگه اون بدردتون می خره قرار بدم اگه نه همین هم نباید مشکلی باشه


      سلام اشکال نداره لطفا کمکم کنید
      خیلی ممنون

      دیدگاه


        #4
        پاسخ : کمک در راه اندازی DAC با SPI

        سلام
        لطفا کمکم کنید

        دیدگاه


          #5
          پاسخ : کمک در راه اندازی DAC با SPI

          MCP4922

          رو قرار می دم تابع اش رو

          دلیل: ادغام دو پست برای جلوگیری از اسپم

          /************************************************** ***This program was produced by the
          CodeWizardAVR V2.05.3 Standard
          Automatic Program Generator
          © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
          CodeVisionAVR C Compiler for Atmel AVR microcontrollers



          Project :
          Version :
          Date : 28-Jan-2015
          Author : smart
          Company :
          Comments:




          Chip type : ATmega8
          Program type : Application
          AVR Core Clock frequency: 8.000000 MHz
          Memory model : Small
          External RAM size : 0
          Data Stack size : 256
          ************************************************** ***/


          #include <mega8.h>
          #include <delay.h>
          // SPI functions
          #include <spi.h>
          int i=0;
          // Declare your global variables here
          void DAC(int number){
          char dataH,dataL;
          DDRC.0=1; //load A
          DDRC.1=1; //select A




          dataH=(number & 0x0f00)>>8;
          dataL=number & 0x00ff;


          PORTC.1=1;
          PORTC.1=0;
          spi(dataH+0x30);
          spi(dataL);
          PORTC.1=1;
          PORTC.0=0;
          PORTC.0=1;




          }




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


          // Input/Output Ports initialization
          // Port B initialization
          // Func7=In Func6=In Func5=Out Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
          // State7=T State6=T State5=0 State4=T State3=0 State2=0 State1=0 State0=0
          PORTB=0x00;
          DDRB=0x2F;


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


          // Port D 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
          PORTD=0x00;
          DDRD=0x00;


          // Timer/Counter 0 initialization
          // Clock source: System Clock
          // Clock value: Timer 0 Stopped
          TCCR0=0x00;
          TCNT0=0x00;


          // Timer/Counter 1 initialization
          // Clock source: System Clock
          // Clock value: Timer1 Stopped
          // Mode: Normal top=0xFFFF
          // OC1A output: Discon.
          // OC1B output: Discon.
          // Noise Canceler: Off
          // Input Capture on Falling Edge
          // Timer1 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: Timer2 Stopped
          // Mode: Normal top=0xFF
          // OC2 output: Disconnected
          ASSR=0x00;
          TCCR2=0x00;
          TCNT2=0x00;
          OCR2=0x00;


          // External Interrupt(s) initialization
          // INT0: Off
          // INT1: Off
          MCUCR=0x00;


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


          // USART initialization
          // USART disabled
          UCSRB=0x00;


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


          // ADC initialization
          // ADC disabled
          ADCSRA=0x00;


          // SPI initialization
          // SPI Type: Master
          // SPI Clock Rate: 500.500 kHz
          // SPI Clock Phase: Cycle Start
          // SPI Clock Polarity: Low
          // SPI Data Order: MSB First
          SPCR=0x51;
          SPSR=0x00;


          // TWI initialization
          // TWI disabled
          TWCR=0x00;


          while (1)
          {
          // Place your code here



          DAC(4095);

          }
          }
          التماس دعا

          دیدگاه


            #6
            پاسخ : کمک در راه اندازی DAC با SPI

            سلام خیلی ممنون از کمکتون
            لطفا یکم هم توضیح بدین بر چه اساسی این برنامه رو نوشتید
            انشالله کمکم کنید و من رو راهنمایی کنید
            با تشکر فراوان

            دیدگاه


              #7
              پاسخ : کمک در راه اندازی DAC با SPI

              چه توضیحی نیاز داره ؟
              اتصالات که به جز پایه های spi پایه های دیگه 2 تا هست که تعریف کردم به کجا متصل بشه تو تابع dac و مقدار اش رو هم تو while اصلی برنامه رو جداکثر قرار دادم
              التماس دعا

              دیدگاه


                #8
                پاسخ : کمک در راه اندازی DAC با SPI

                ببخشید با این میخواید ولتاژ AC تولید کنید یا DC ؟ فرکانس و با چی تنظیم میکنید ؟

                دیدگاه


                  #9
                  پاسخ : کمک در راه اندازی DAC با SPI

                  این دو خط در واقع چی هستن برای کدو خطوط هستن ؟
                  DDRC.0=1; //load A
                  DDRC.1=1; //select A

                  دیدگاه


                    #10
                    پاسخ : کمک در راه اندازی DAC با SPI

                    نوشته اصلی توسط ahmad1370ahmad نمایش پست ها
                    ببخشید با این میخواید ولتاژ AC تولید کنید یا DC ؟ فرکانس و با چی تنظیم میکنید ؟
                    هر چیزی که بخواین می شه ساخت دیگه

                    دلیل: ادغام دو پست برای جلوگیری از اسپم

                    نوشته اصلی توسط ahmad1370ahmad نمایش پست ها
                    این دو خط در واقع چی هستن برای کدو خطوط هستن ؟
                    DDRC.0=1; //load A
                    DDRC.1=1; //select A
                    2 تا پایه داره رو adc که load و select هستن اونا رو به پورت c پین 0 و 1 متصل کنید بقیه پایه ها هم که ماله spi هستن هم تو عمل خیلی ازینا استفاده کردم هم تو پروتوس یادم میاد که جواب می داد و مشکلی نداشت
                    التماس دعا

                    دیدگاه


                      #11
                      پاسخ : کمک در راه اندازی DAC با SPI

                      سلام
                      مگر dac شما MCP4922 نیست؟ 3 تا برای spi داره و یک LDAC و یک SHDN من اون تای دیگه رو جابجا هم کردم برای این دو تا بازم ولتاز و صفر نشون میداد.
                      تو برنامه نویسی شما یه dataH و یه dataL دارید که دومی عدد و میخونه بین 0 تا 4095 دومی چکاری انجام میده ؟
                      ضمنا هر کدوم از این dataH و dataL دارای تعداد بیت 16 هستند و در حالت کلی هم ریجستر 16 بیتی است کدوم و اعمال میکنه یا با هم ادغام میکنه اینها رو ؟

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

                      دیدگاه

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