Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

ATXMEGA128A1U Zegar usb sys

karol75 03 Gru 2019 12:29 75 0
  • #1
    karol75
    Poziom 16  
    Xmega128A1U

    Potrzebuję USB i inne peryferia.
    Zegar USB 48000000
    Inne 32MHz
    Podpięty zewnętrzny oscylator 16MHz.

    Fragment ASF plik config.h
    ...
    //! Configuration using On-Chip RC oscillator at 48MHz
    //! The RC oscillator is calibrated via USB Start Of Frame
    //! Clk USB = 48MHz (used by USB)
    //! Clk sys = 48MHz
    //! Clk cpu/per = 24MHz
    #define CONFIG_USBCLK_SOURCE USBCLK_SRC_RCOSC
    #define CONFIG_OSC_RC32_CAL 48000000UL

    #define CONFIG_OSC_AUTOCAL_RC32MHZ_REF_OSC OSC_ID_USBSOF

    #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RC32MHZ
    #define CONFIG_SYSCLK_PSADIV SYSCLK_PSADIV_2
    #define CONFIG_SYSCLK_PSBCDIV SYSCLK_PSBCDIV_1_1
    ...
    Niestety w tej konfiguracji systemowy zegar ma 48000000 co uniemożliwia działanie peryferiom. (Nie działa SPI, UART)

    Czy jeżeli zmienię

    #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_RC32MHZ
    na
    #define CONFIG_SYSCLK_SOURCE SYSCLK_SRC_XOSC
    #define CONFIG_SYSCLK_PSADIV SYSCLK_PSADIV_1
    to procesor (poza usb)będzie działał z częstotliwością 16MHz?
    Co zrobić aby wykorzystując ASF dać 2 częstotliwości pracy
    48MHz dla USB
    32MHz dla reszty?