ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 5 از 5
  1. #1
    2005/06/10
    بابل
    1,808
    40

    راه اندازي ADC با استفاده از ASF

    با سلام
    جستجويي در اين بخش انجام دادم و پست مشابهي پيدا نکردم اگه موضوع تکراري هست دوستان راهنمايي کنن پست رو در جاي مناسبي قرار بدم.
    --
    من از ATXMEGA32A4U استفاده ميکنم، به جهت اينکه کد پروژه زياد شده بود و احساس کردم ممکنه مشکلاتي در خصوص وقفه ها و پرچم ها و ... پيش بياد ترجيح دادم از ASF اتمل استفاده کنم و ميخوام ADC رو با توابع ASF راه اندازي کنم. کدم رو تکميل کردم ولي يه مشکل اساسي دارم و اون اينکه کدم با IAR کامپايل نميشه و خطا هاي زيادي داره. ظاهرا ASF بيشتر براي برد هايي آموزشي اي هست که خود اتمل بيرون داده و براي پروژه هايي خارج از اين مجموعه به راحتي قابل استفاده نيست.
    کد کامل ASF رو از لينک زير دانلود کردم
    http://www.atmel.com/tools/AVRSOFTWAREFRAMEWORK.aspx
    نسخه آخر ASF هست. ولي خطاهاي زيادي هنگام کامپايل ايجاد ميشه، ظاهرا برخي از اين خطا ها براي بروز نبودن هدر هاي IAR هست که خود اتمل راهنمايي کرده که اين هدرها بايد بروز بشن ولي فولدري که آدرس داده در آخرين ورژن ASF وجود نداره. اين يه مشکل.
    مشکل ديگه اينکه ظاهرا باگ ها زيادي وجود داره مثلا موقع کامپايل، رهنمون هايي وجود داره مثل if# که مثلا گفته اگر XMEGA_AU تعريف شده يه کد خاصي رو اضافه کن. ولي کامپايلر IAR با اينکه نوع ميکرو من دقيقا از همين نوع هست اون رو تعريف شده نميشناسه.(که اين ممکنه به دليل بروز نبودن هدر هاي IAR باشه)
    مشکل ديگه اينکه در يکي از کتابخونه ها از farflash__ آ*استفاده شده در صورتي که اين ويژگي براي ميکروهايي با حافظه بيش از 64 کيلو بايت تعريف شده و با اينکه من ميکرو ام رو 32A4u يعني با حافظه 32 کيلو بايت تعريف ميکنم باز اين بخش از کد کامپايل ميشه و به کامپايلر هم خطاي تنظيمات رو ميگيره يعني ميکرو ي انتخاب شده اين قابليت رو نداره.

    خلاصه اينکه حدود 2 هفته هست من مشغول کامپايل کردن کدم هستم ولي هنوز موفق نشدم باگ ها رو برطرف کنم.
    کسي از دوستان در اين زمينه تجربيه اي داره؟
    با سپاس فراوان
    شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ*ي جهاد فيآ*سبيلآ*الله.
    هجرت، هجرت از سنگينيآ*هاست و جاذبهآ*هايي كه تو را به خاك ميآ*چسباند.
    چكمهآ*هايت را بپوش، رهآ*توشهآ*ات را بردار و هجرت كن.
  2. #2
    2009/10/27
    تهران
    3,312
    1,016

    پاسخ : راه اندازي ADC با استفاده از ASF

    به دلیل کلی بودن محتوای پست شما، راهنمایی خاصی را نمی توان انجام داد. اما بطور کلی توابع و ماکروهای موجود در AVR1300 بسیار خوب عمل می کنند و اگر از محتوای آن استفاده کنید، برای جواب گرفتن از ADC بسیار مناسب است.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
  3. #3
    2005/06/10
    بابل
    1,808
    40

    پاسخ : راه اندازي ADC با استفاده از ASF

    سلام.
    من از کتابخونه هايي که همراه 1300 هست نتونستم استفاده کنم نواقص زيادي داشت يا شايد من بلد نبودم درست استفاده کنم.

    برخي از مشکلات حل شد به اين ترتيب که avrstudio رو دانلود کردم و يه امکاني داره که توابع asf يه ماژول رو مثلا adc به صورت کامل با شرايط دلخواه به پروژه اضافه ميکنه. من به کمک اون تونستم آخرين و بروزترين کتابخونه ها رو بدست بيارم و در پروژه خودم کپي کنم(نکته مهم اينه که آخرين نسخه ASF يعني 3.4 که در سايت به صورت مستقيم براي دانلود قرار داده شده کامل نيست بلکه نسخه اي که همراه AVRStudio ارائه شده از اون کامل تر هست) برخي ايراد ها مثل ايرادي که در مورد farflash__ داشتم در کتابخونه nvm.h بر طرف شد. به اين خاطر که در نسخه آخر اين کتابخونه استفاده از farflash__ رو به شرط بزرگتر بودن حافظه فلش از 64 کيلو بايت در نظر گرفته و به اين ترتيب کامپايلر IAR ديگه خطا نميده.

    بگذريم اينا رو گفتم شايد براي دوستان مفيد باشه و مسيري رو که من رفتم به عنوان يه تجربه همراه داشته باشن.

    حالا يه مشکل ديگه که من فکر ميکنم فراتر از بحث راه اندازي ADC هست و خوبه مطالب آموزشي اي در اين زمينه منتشر بشه چون به نظرم خيلي مهم هست.
    و اون اينکه نحوه کار با ASF چطوري هست؟
    مثلا مجموعه کامل اين کتابخونه که دانلود ميشه چندين کتابخونه با يک اسم وجود داره مثلا OSC.h شايد 5 تا وجود داره. حتي در خود شاخه xmega هم 2 تا کتابخونه به همين نام وجود داره. اين کتابخونه ها با اينکه اسمشون مثل هم هست ولي با هم تفاوت دارن. يکي از اونها تعيين کننده OSC.hآ* اصلي هست که بايد به پروژه اضافه بشه مثلا: کتابخونه زير osc.h عمومي هست و کتابخونه اي که به همين نام در پايين تر اومده osc.h مخصوص xmega هست.
    کد:
    #ifndef OSC_H_INCLUDED
    #define OSC_H_INCLUDED
    
    #include "parts.h"
    #include "conf_clock.h"
    
    #if SAM3S
    # include "sam3s/osc.h"
    #elif SAM3XA
    # include "sam3x/osc.h"
    #elif SAM3U
    # include "sam3u/osc.h"
    #elif SAM3N
    # include "sam3n/osc.h"
    #elif SAM4S
    # include "sam4s/osc.h"
    #elif (UC3A0 || UC3A1)
    # include "uc3a0_a1/osc.h"
    #elif UC3A3
    # include "uc3a3_a4/osc.h"
    #elif UC3B
    # include "uc3b0_b1/osc.h"
    #elif UC3C
    # include "uc3c/osc.h"
    #elif UC3D
    # include "uc3d/osc.h"
    #elif UC3L
    # include "uc3l/osc.h"
    #elif XMEGA
    # include "xmega/osc.h"
    #else
    # error Unsupported chip type
    #endif
    
    
    #ifndef __ASSEMBLY__
    
    static inline void osc_wait_ready(uint8_t id)
    {
      while (!osc_is_ready(id)) {
        /* Do nothing */
      }
    }
    
    #endif /* __ASSEMBLY__ */
    
    //@}
    
    //! @}
    
    #endif /* OSC_H_INCLUDED */


    دقيقا با همين نام osc.h کتابخونه اي مخصوص xmega هست که به صورت زيره:


    کد:
    #ifndef XMEGA_OSC_H_INCLUDED
    #define XMEGA_OSC_H_INCLUDED
    
    #include "compiler.h"
    #include "board.h"
    
    
    //! \name Oscillator identifiers
    //@{
    //! 2 MHz Internal RC Oscillator
    #define OSC_ID_RC2MHZ     OSC_RC2MEN_bm
    //! 32 MHz Internal RC Oscillator
    #define OSC_ID_RC32MHZ    OSC_RC32MEN_bm
    //! 32 KHz Internal RC Oscillator
    #define OSC_ID_RC32KHZ    OSC_RC32KEN_bm
    //! External Oscillator
    #define OSC_ID_XOSC      OSC_XOSCEN_bm
    /**
     * \brief Reference from USB Start Of Frame
     * \note This cannot be enabled or disabled, but can be used as a reference for
     * the autocalibration (DFLL).
     */
    #define OSC_ID_USBSOF     0xff
    //@}
    
    //! \name External oscillator types
    //@{
    #define XOSC_TYPE_EXTERNAL  0  //!< External clock signal
    #define XOSC_TYPE_32KHZ    2  //!< 32.768 kHz resonator on TOSC
    #define XOSC_TYPE_XTAL    3  //!< 0.4 to 16 MHz resonator on XTAL
    //@}
    
    /**
     * \def CONFIG_XOSC_32KHZ_LPM
     * \brief Define for enabling Low Power Mode for 32 kHz external oscillator.
     */
    #ifdef __DOXYGEN__
    # define CONFIG_XOSC_32KHZ_LPM
    #endif /* __DOXYGEN__ */
    
    //! \name XTAL resonator start-up cycles
    //@{
    #define XOSC_STARTUP_256   0  //!< 256 cycle start-up time
    #define XOSC_STARTUP_1024   1  //!< 1 k cycle start-up time
    #define XOSC_STARTUP_16384  2  //!< 16 k cycle start-up time
    //@}
    
    
    //! \name XTAL resonator frequency range
    //@{
    //! 0.4 to 2 MHz frequency range
    #define XOSC_RANGE_04TO2   OSC_FRQRANGE_04TO2_gc
    //! 2 to 9 MHz frequency range
    #define XOSC_RANGE_2TO9    OSC_FRQRANGE_2TO9_gc
    //! 9 to 12 MHz frequency range
    #define XOSC_RANGE_9TO12   OSC_FRQRANGE_9TO12_gc
    //! 12 to 16 MHz frequency range
    #define XOSC_RANGE_12TO16   OSC_FRQRANGE_12TO16_gc
    //@}
    
    
    // If application intends to use XOSC.
    #ifdef BOARD_XOSC_HZ
    // Get start-up config for XOSC, if not manually set.
    # ifndef CONFIG_XOSC_STARTUP
    # ifndef BOARD_XOSC_STARTUP_US
    #  error BOARD_XOSC_STARTUP_US must be configured.
    # else
    //! \internal Number of start-up cycles for the board's XOSC.
    #  define BOARD_XOSC_STARTUP_CYCLES \
        (BOARD_XOSC_HZ / 1000000 * BOARD_XOSC_STARTUP_US)
    
    #  if (BOARD_XOSC_TYPE == XOSC_TYPE_XTAL)
    #  if (BOARD_XOSC_STARTUP_CYCLES > 16384)
    #   error BOARD_XOSC_STARTUP_US is too high for current BOARD_XOSC_HZ.
    
    #  elif (BOARD_XOSC_STARTUP_CYCLES > 1024)
    #   define CONFIG_XOSC_STARTUP  XOSC_STARTUP_16384
    #   define XOSC_STARTUP_TIMEOUT  (16384*(1000000/BOARD_XOSC_HZ))
    
    #  elif (BOARD_XOSC_STARTUP_CYCLES > 256)
    #   define CONFIG_XOSC_STARTUP  XOSC_STARTUP_1024
    #   define XOSC_STARTUP_TIMEOUT  (1024*(1000000/BOARD_XOSC_HZ))
    
    #  else
    #   define CONFIG_XOSC_STARTUP  XOSC_STARTUP_256
    #   define XOSC_STARTUP_TIMEOUT  (256*(1000000/BOARD_XOSC_HZ))
    #  endif
    #  else /* BOARD_XOSC_TYPE == XOSC_TYPE_XTAL */
    #  define CONFIG_XOSC_STARTUP   0
    #  endif
    # endif /* BOARD_XOSC_STARTUP_US */
    # endif /* CONFIG_XOSC_STARTUP */
    
    // Get frequency range setting for XOSC, if not manually set.
    # ifndef CONFIG_XOSC_RANGE
    # if (BOARD_XOSC_TYPE == XOSC_TYPE_XTAL)
    #  if (BOARD_XOSC_HZ < 400000)
    #  error BOARD_XOSC_HZ is below minimum frequency of 400 kHz.
    
    #  elif (BOARD_XOSC_HZ < 2000000)
    #  define CONFIG_XOSC_RANGE  XOSC_RANGE_04TO2
    
    #  elif (BOARD_XOSC_HZ < 9000000)
    #  define CONFIG_XOSC_RANGE  XOSC_RANGE_2TO9
    
    #  elif (BOARD_XOSC_HZ < 12000000)
    #  define CONFIG_XOSC_RANGE  XOSC_RANGE_9TO12
    
    #  elif (BOARD_XOSC_HZ <= 16000000)
    #  define CONFIG_XOSC_RANGE  XOSC_RANGE_12TO16
    
    #  else
    #  error BOARD_XOSC_HZ is above maximum frequency of 16 MHz.
    #  endif
    # else /* BOARD_XOSC_TYPE == XOSC_TYPE_XTAL */
    #  define CONFIG_XOSC_RANGE   0
    # endif
    # endif /* CONFIG_XOSC_RANGE */
    #endif /* BOARD_XOSC_HZ */
    
    #ifndef __ASSEMBLY__
    
    /**
     * \internal
     * \brief Enable internal oscillator \a id
     *
     * Do not call this function directly. Use osc_enable() instead.
     */
    static inline void osc_enable_internal(uint8_t id)
    {
      irqflags_t flags;
    
      Assert(id != OSC_ID_USBSOF);
    
      flags = cpu_irq_save();
      OSC.CTRL |= id;
      cpu_irq_restore(flags);
    }
    
    #if defined(BOARD_XOSC_HZ) || defined(__DOXYGEN__)
    
    static inline void osc_enable_external(uint8_t id)
    {
      irqflags_t flags;
    
      Assert(id == OSC_ID_XOSC);
    
    #ifndef CONFIG_XOSC_32KHZ_LPM
      OSC.XOSCCTRL = BOARD_XOSC_TYPE | (CONFIG_XOSC_STARTUP << 2) |
          CONFIG_XOSC_RANGE;
    #else
      OSC.XOSCCTRL = BOARD_XOSC_TYPE | (CONFIG_XOSC_STARTUP << 2) |
          CONFIG_XOSC_RANGE | OSC_X32KLPM_bm;
    #endif /* CONFIG_XOSC_32KHZ_LPM */
    
      flags = cpu_irq_save();
      OSC.CTRL |= id;
      cpu_irq_restore(flags);
    }
    #else
    
    static inline void osc_enable_external(uint8_t id)
    {
      Assert(false); // No external oscillator on the selected board
    }
    #endif
    
    static inline void osc_disable(uint8_t id)
    {
      irqflags_t flags;
    
      Assert(id != OSC_ID_USBSOF);
    
      flags = cpu_irq_save();
      OSC.CTRL &= ~id;
      cpu_irq_restore(flags);
    }
    
    static inline void osc_enable(uint8_t id)
    {
      if (id != OSC_ID_XOSC) {
        osc_enable_internal(id);
      } else {
        osc_enable_external(id);
      }
    }
    
    static inline bool osc_is_ready(uint8_t id)
    {
      Assert(id != OSC_ID_USBSOF);
    
      return OSC.STATUS & id;
    }
    
    //! \name XMEGA-Specific Oscillator Features
    //@{
    
    static inline void osc_enable_autocalibration(uint8_t id, uint8_t ref_id)
    {
      irqflags_t flags;
    
      flags = cpu_irq_save();
      switch (id) {
      case OSC_ID_RC2MHZ:
        Assert((ref_id == OSC_ID_RC32KHZ) || (ref_id == OSC_ID_XOSC));
    
        if (ref_id == OSC_ID_XOSC) {
          OSC.DFLLCTRL |= OSC_RC2MCREF_bm;
        } else {
          OSC.DFLLCTRL &= ~(OSC_RC2MCREF_bm);
        }
        DFLLRC2M.CTRL |= DFLL_ENABLE_bm;
        break;
    
      case OSC_ID_RC32MHZ:
    #if XMEGA_AU || XMEGA_B || XMEGA_C
        Assert((ref_id == OSC_ID_RC32KHZ)
            || (ref_id == OSC_ID_XOSC)
            || (ref_id == OSC_ID_USBSOF));
    
        OSC.DFLLCTRL &= ~(OSC_RC32MCREF_gm);
    
        if (ref_id == OSC_ID_XOSC) {
          OSC.DFLLCTRL |= OSC_RC32MCREF_XOSC32K_gc;
        }
        else if (ref_id == OSC_ID_USBSOF) {
          /*
           * Calibrate 32MRC at 48MHz using USB SOF
           * 48MHz / 1kHz = 0xBB80
           */
          DFLLRC32M.COMP1 = 0x80;
          DFLLRC32M.COMP2 = 0xBB;
          OSC.DFLLCTRL |= OSC_RC32MCREF_USBSOF_gc;
        }
        else if (ref_id == OSC_ID_RC32KHZ) {
          /*
           * Calibrate 32MRC at 48MHz using USB SOF
           * 48MHz / 1kHz = 0xBB80
           */
          DFLLRC32M.COMP1 = 0x80;
          DFLLRC32M.COMP2 = 0xBB;
          osc_enable(OSC_ID_RC32KHZ);
          OSC.DFLLCTRL |= OSC_RC32MCREF_RC32K_gc;
        }
    #else
        Assert((ref_id == OSC_ID_RC32KHZ) || (ref_id == OSC_ID_XOSC));
    
        if (ref_id == OSC_ID_XOSC) {
          OSC.DFLLCTRL |= OSC_RC32MCREF_bm;
        }
        else {
          OSC.DFLLCTRL &= ~(OSC_RC32MCREF_bm);
        }
    #endif
        DFLLRC32M.CTRL |= DFLL_ENABLE_bm;
        break;
    
      default:
        Assert(false);
        break;
      }
      cpu_irq_restore(flags);
    }
    
    static inline void osc_disable_autocalibration(uint8_t id)
    {
      switch (id) {
      case OSC_ID_RC2MHZ:
        DFLLRC2M.CTRL = 0;
        break;
    
      case OSC_ID_RC32MHZ:
        DFLLRC32M.CTRL = 0;
        break;
    
      default:
        Assert(false);
        break;
      }
    }
    
    static inline void osc_user_calibration(uint8_t id, uint16_t calib)
    {
      switch (id) {
      case OSC_ID_RC2MHZ:
        DFLLRC2M.CALA=LSB(calib);
        DFLLRC2M.CALB=MSB(calib);
        break;
    
      case OSC_ID_RC32MHZ:
        DFLLRC32M.CALA=LSB(calib);
        DFLLRC32M.CALB=MSB(calib);
        break;
    
      default:
        Assert(false);
        break;
      }
    }
    //@}
    
    static inline uint32_t osc_get_rate(uint8_t id)
    {
      Assert(id != OSC_ID_USBSOF);
    
      switch (id) {
      case OSC_ID_RC2MHZ:
        return 2000000UL;
    
      case OSC_ID_RC32MHZ:
    #ifdef CONFIG_OSC_RC32_CAL
        return CONFIG_OSC_RC32_CAL;
    #else
        return 32000000UL;
    #endif
    
      case OSC_ID_RC32KHZ:
        return 32768UL;
    
    #ifdef BOARD_XOSC_HZ
      case OSC_ID_XOSC:
        return BOARD_XOSC_HZ;
    #endif
    
      default:
        Assert(false);
        return 0;
      }
    }
    
    #endif /* __ASSEMBLY__ */
    
    //! @}
    
    #endif /* XMEGA_OSC_H_INCLUDED */


    اگه دقت کنيد متوجه ميشيد که اولي با توجه به نوع ميکرو osc.h مناسب براي پروژه رو از شاخه مناسب يعني xmega/osc.h انتخاب و به پروژه اضافه ميکنه. دقت کنيد داشته باشيد که شاخه xmega رو خودتون بايد در پروژه در شاخه اي که main برنامه وجود داره ايجاد کنيد و کتابخونه هاي اصلي رو درش کپي کنيد.

    اما مشکل من کجاست:
    در کتابخونه pll.h تابعي رو استفاده کرده به نام osc_wait_ready که اين کتابخونه رو اگه دقت کنيد در osc.h اولي تعريف شده . ولي زماني که برنامه کامپايل ميشه osc.h که ميشناسه دومي هست که اين تابع درش تعريف نشده از طرف ديگه کتابخونه pll.h هيچ include در خصوص کتابخونه osc.h درش وجود نداره. براي همين کامپايلر هم ميگه که اين تابع رو نميشناسه.
    سوالم اينکه زماني که دو کتابخونه با يک اسم به برنامه اضافه ميشن چه اتفاقي ميفته؟ آيا توابعي که در کتابخونه اول وجود داره توسط برنامه شناخته شده خواهند بود؟
    با اين تفاسير روش صحيحي که من بتونم اين تابع رو به برنامه بشناسون چيه؟
    کل پروژه رو هم ضميمه کردم هم توابعش قابل استفاده هست و هم با کامپايلش مشکل من رو بهتر درک خواهيد کرد.
    با سپاس
    فايل هاي پيوست شده فايل هاي پيوست شده
    شأن انسان در ايمان و هجرت و جهاد است و هجرت، مقدمهآ*ي جهاد فيآ*سبيلآ*الله.
    هجرت، هجرت از سنگينيآ*هاست و جاذبهآ*هايي كه تو را به خاك ميآ*چسباند.
    چكمهآ*هايت را بپوش، رهآ*توشهآ*ات را بردار و هجرت كن.
  4. #4
    2009/10/27
    تهران
    3,312
    1,016

    پاسخ : راه اندازي ADC با استفاده از ASF

    بر مبنای عملکرد IAR که احتمالا در AVRStudio هم همینطور است، روال کلی برای استفاده از کتابخانه های Atmel همان روش include کردن فایل با پسوند h در فایل های لازم و add کردن فایل با پسوند c در پروژه است که بدون مشکل عمل می کند. برای شناسایی یک فایل عمل include کردن مهم است و add کردن به پروژه به تنهایی باعث شناسایی یک فایل در فایل دیگر نمی شود.
    اوژن: به معنای افکننده و شکست دهنده است
    دانایی، توانایی است-Knowledge is POWER
    برای حرفه ای شدن در الکترونیک باید با آن زندگی کرد
    وضعمان بهتر می شود، اگر همه نسبت به جامعه و اطراف خود مسوول باشیم و نگوئیم به ما چه
    قوی شدن و خوب ماندن - خوبی کردن به دیگران یک لذت ماندگار است
    اگر قرار باشد نفت و منابع خام را بدهیم و چرخ بگیریم، بهتر است چرخ را از نو اختراع کنیم
    ساعت کار بدن اکثر انسان ها کمتر از 800000 ساعت است و بعد از آن از کار می افتد
  5. #5
    2008/08/02
    تهران
    1,292
    13

    پاسخ : راه اندازي ADC با استفاده از ASF

    من اين کد رو با استفاده از توابع ASF نوشتم. اما داده هاي دريافتي نا معتبر هستند. يعني با ورودي هيچ نسبتي ندارند.
    کد:
    #define MY_ADC  ADCB
    #define MY_ADC_CH ADC_CH0
    static void adc_init(void)
    {
    	struct adc_config adc_conf;
    	struct adc_channel_config adcch_conf;
    	adc_read_configuration(&MY_ADC, &adc_conf);
    	adcch_read_configuration(&MY_ADC, MY_ADC_CH, &adcch_conf);
    	adc_set_conversion_parameters(&adc_conf, ADC_SIGN_ON, ADC_RES_8,
    	ADC_REF_VCC);
    	adc_set_conversion_trigger(&adc_conf, ADC_TRIG_MANUAL, 1, 0);
    	adc_set_clock_rate(&adc_conf, 200000UL);
    	adcch_set_input(&adcch_conf, ADCCH_POS_PIN2, ADCCH_NEG_NONE, 1);
    	adc_write_configuration(&MY_ADC, &adc_conf);
    	adcch_write_configuration(&MY_ADC, MY_ADC_CH, &adcch_conf);
    }
    
    int main(void)
    {
    	sysClock_init();
    	adc_init();
    	
    	 	
    uint16_t result;
    adc_enable(&MY_ADC);
    
    	while (1) {
    		
    		adc_start_conversion(&MY_ADC, MY_ADC_CH);
    		adc_wait_for_interrupt_flag(&MY_ADC, MY_ADC_CH);
    		result = adc_get_result(&MY_ADC, MY_ADC_CH);
    
    	}		
    	
    }
    دوستاني که با ASF تونستندADC رو راه بندازن راهنمايي کنن.
    گفت که دیوانه نهی لایق این خانه نهی
نمایش نتایج: از 1 به 5 از 5

موضوعات مشابه

  1. راه اندازي برد beaglebone با استفاده از visualGDB و QT
    توسط ghazaaleh در انجمن مینی کامپیوتر Mini PC
    پاسخ: 4
    آخرين نوشته: 2014/12/12, 22:39
  2. راه اندازي وب کم بدون استفاده از برق usb
    توسط mohsen.s.h در انجمن مباحث دیگر علم الکترونیک
    پاسخ: 2
    آخرين نوشته: 2013/08/06, 12:07
  3. راه اندازي يک منبع جريان با استفاده از lm317
    توسط mahboob2 در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2013/08/02, 12:29
  4. راه اندازي led با استفاده از atmega
    توسط mfn59 در انجمن میکروکنترلرهای AVR
    پاسخ: 7
    آخرين نوشته: 2013/04/17, 13:45
  5. سوال در مورد راه اندازي PWM بدون استفاده از INT
    توسط sutech88 در انجمن میکروکنترلرهای AVR
    پاسخ: 2
    آخرين نوشته: 2012/01/12, 13:27

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •