Hirdetés

Új hozzászólás Aktív témák

  • Janos250

    őstag

    válasz skul0 #3892 üzenetére

    "A frekvencia nem, hogy állandó?"
    Nem tudom, aktuális-e még, de leírom, hátha mást is érdekel a PWM frekvencia állítása.
    STM32-n nem kell szoftverből megszakítással vezérelni, a hardver elintézi úgy, hogy nem fogyaszt processzor időt, illetve nem befolyásolja, ha valami másik megszakítás közbejön. Ha valakit érdekel részletesebben, a munualokban megtalálja. Itt csak annyi, amit az Arduino alapbeállításai után át kell állítani:

    uint32_t baseaddress = 0x40000000;
    void setup()
    {
    pinMode(3, PWM);
    *((volatile uint32_t *) (baseaddress + 0x28)) = 0 ; //PSC
    *((volatile uint32_t *) (baseaddress + 0x2C)) = 719; //ARR
    *((volatile uint32_t *) (baseaddress + 0x40)) = 72 ; //CCR4
    *((volatile uint32_t *) (baseaddress + 0x20)) = 4096 ; //CCER
    // 100 kHz, 10 us, 1 us
    // Hz = CLK / (( PSC + 1) * (ARR + 1)
    // 72 000 000 / 1 / 720 = 100 000 Hz
    // kitöltöttség = CCR4 / (ARR + 1) = 0.1 (10%)
    };
    void loop()
    {
    // Ha a kitöltöttséget akarjuk változtatni 0% és 100 % között:
    // *((volatile uint32_t *) (baseaddress + 0x40)) = 720 * (szazalek/100) ;
    }

    Ez a képernyőrészlet copy az STM32F103C8T6-ba ("sárga jumperes") készült, elvileg a többi STM32-ben is kéne működni.

Új hozzászólás Aktív témák