Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

STM32F4 Discovery - Timer nie szybszy niż 2MHz

TheVoid 14 Sep 2013 19:55 2484 4
  • #1
    TheVoid
    Level 11  
    Witajcie
    Chyba nie zrozumiałem idei timera lub źle coś ustawiam.
    Code: c
    Log in, to see the code


    Przy ustawieniu
    tim.TIM_Period = 42-1
    dioda miga z częstotliwością 1Hz, czyli zegar działa z częstotliwością 2MHz, ale dla ustawienia
    tim.TIM_Period = 21-1
    nic się nie zmienia, a przecież dioda powinna migać z częstotliwością 2Hz (zegar 4MHz).
    Co robię źle?

    Pozdrawiam
  • #2
    BlueDraco
    MCUs specialist
    Wejście w procedurę obsługi przerwania, wykonanie paru instrukcji i powrót - to min. 50..60 cykli procesora. Przerwania zgłaszasz tak często, że procesor zajmuje się wyłączueni ich obsługą i obsługuje je wolniej, niż są one powtarzane. Proste?

    Zamiast odlicczać prpgramowo dwa miliony przerwań, przeprogramuj timer np. na 1000 Hz i odliczaj 1000 lub 500 przerwań.
  • #3
    TheVoid
    Level 11  
    BlueDraco wrote:
    Wejście w procedurę obsługi przerwania, wykonanie paru instrukcji i powrót - to min. 50..60 cykli procesora. Przerwania zgłaszasz tak często, że procesor zajmuje się wyłączueni ich obsługą i obsługuje je wolniej, niż są one powtarzane. Proste?

    Nie spodziewałem się tak wolnego obsługiwania przerwania, bo jakoś miałem w głowie, że większość instrukcji zajmuje jeden cykl, ale faktycznie - jeśli to zajmuje 60 cykli, to by się zgadzało.

    BlueDraco wrote:
    Zamiast odlicczać prpgramowo dwa miliony przerwań, przeprogramuj timer np. na 1000 Hz i odliczaj 1000 lub 500 przerwań.

    OK, dzięki. Testowałem tyko, co to cudeńko może.

    Pozdrawiam
  • #4
    BlueDraco
    MCUs specialist
    A ilu wg. Ciebie cykli mógły minimalnie potrzebować procesor na zapis 8 słów na stos, zaindeksowanie tablicy, pobranie z pamięci i załadowanie do PC nowej wartości, wykonanie kilkunastu instrukcji oraz pobranie ze stosu i przeładowanie 8 rejestrów?
  • #5
    TheVoid
    Level 11  
    BlueDraco wrote:
    A ilu wg. Ciebie cykli mógły minimalnie potrzebować procesor na zapis 8 słów na stos, zaindeksowanie tablicy, pobranie z pamięci i załadowanie do PC nowej wartości, wykonanie kilkunastu instrukcji oraz pobranie ze stosu i przeładowanie 8 rejestrów?

    Nie wiem i na razie nie będe tego analizował. Jeszcze raz dzięki za zwrócenie uwagi.