Skocz do zawartości

robaczek122

Użytkownicy
  • Zawartość

    8
  • Rejestracja

  • Ostatnio

Posty napisane przez robaczek122


  1. Cześć,

    Zaprojektowałem płytkę z STM32. Podłączyłem ją pierwszy raz i zaczął dymić mi kondensator tantalowy (był odwrotnie wlutowany, więc wylutowałem i wlutowałem taki sam odwrotnie).

    Normalnie, kiedy zasilanie nie jest włączone, to multimetr pokazuje że nie ma zwarcia, ale jak podłącze zasilanie, to mam zwarcie między + i masą. Po odłączeniu zasilania, zwarcie jeszcze występuje na jedno "piknięcie (dotknięcie)" multimetru.

    Zwarcie pokazuje mi ze jest zarówno na wejściu, jak i za regulatorem napięcia. Jednocześnie pokazuje, że najpierw jest napięcie 5V, a później 3.3V.

    Co to może być?


  2. Jeżeli pin jest podpięty do czegokolwiek na płytce, to nic z tym nie zrobisz. Możesz jedynie fizycznie usunąć (wylutować) LSM303DLHC z płytki.

    Nie masz racji.

    Mogę przecież używać wyjścia PD14 do generowania PWM mimo, że jest tam podpięty także czerwony LED.

    A piny PA5, PA6, PA7 są współdzielone z żyroskopem L3GD20, a z powodzeniem można ich używać np. jako wejścia analogowe.


  3. Mam płytkę discovery, czyli jest tam STM32F411VCT.

    Manual znalazłem tutaj: tutaj

    U mnie jak daję sConfig. IC2Polarity = TIM_ICPOLARITY_BOTHEDGE (oraz IC1Polarity = TIM_ICPOLARITY_BOTHEDGE ), to licznik przestaje działać i wynik jest niezależny od obracania enkoderem. Dla TIM_ICPOLARITY_RISING i FALLING działa poprawnie.

    @marek1707 Tabelkę rozumiem. Z tabelki poniżej przez Ciebie wskazanej wynika, że zamiana CC1P z 0 na 1 odwraca kierunek obrotu.

    Znalałem na jakimś forum zdanie o polarity sConfig.IC1Polarity = TIM_ICPOLARITY_BOTHEDGE:

    The TIM_ICPolarity_Rising is about inverting the input edges, not the counting mode. As far as I can see, you should make both polarities either rising or falling. To quite from the reference manual:

    I z manuala:

    To select Encoder Interface mode write SMS=‘001’ in the TIMx_SMCR register if the counter is counting on TI2 edges only, SMS=’010’ if it is counting on TI1 edges only and SMS=’011’ if it is counting on both TI1 and TI2 edges.

    Select the TI1 and TI2 polarity by programming the CC1P and CC2P bits in the TIMx_CCER register. When needed, you can program the input filter as well. CC1NP and CC2NP must be kept low

    W kodzie znalazłem:

    #define TIM_INPUTCHANNELPOLARITY_BOTHEDGE (TIM_CCER_CC1P | TIM_CCER_CC1NP)

    #define TIM_ICPOLARITY_BOTHEDGE TIM_INPUTCHANNELPOLARITY_BOTHEDGE

    Czym więc jest CC1P oraz CC1NP na które składa się TIM_ICPOLARITY_BOTHEDGE?

    Czyli wychodzi na to, że wybierając TIM_ICPOLARITY_BOTHEDGE oraz domyślą wartość z kursu:

    sConfig.IC1Filter = 15; //zakładam, że to "input filter"

    wychodzi nam sprzeczny kod, który nie powinien w żaden sposób działać?

    Ale dalej nie wiem czym jest tem polarity both edge.

    [ Dodano: 26-07-2017, 08:38 ]

    Ok przeglądnąłem dokładniej i dostałem odpowiedź, że nie powinienem używać jednocześnie CC1P i CC1NP dla trybu z enkoderem:

    CC1 channel configured as input:

    CC1NP/CC1P bits select the active polarity of TI1FP1 and TI2FP1 for trigger or capture

    operations.

    00: non-inverted/rising edge

    The circuit is sensitive to TIxFP1 rising edge (capture or trigger operations in reset, external

    clock or trigger mode), TIxFP1 is not inverted (trigger operation in gated mode or encoder

    mode).

    01: inverted/falling edge

    The circuit is sensitive to TIxFP1 falling edge (capture or trigger operations in reset, external

    clock or trigger mode), TIxFP1 is inverted (trigger operation in gated mode or encoder

    mode).

    10: reserved, do not use this configuration.

    11: non-inverted/both edges

    The circuit is sensitive to both TIxFP1 rising and falling edges (capture or trigger operations

    in reset, external clock or trigger mode), TIxFP1 is not inverted (trigger operation in gated

    mode). This configuration must not be used in encoder mode.

    Do wykrywania zbocza są inne bity:

    #define TIM_SMCR_SMS_0            (0x1U << TIM_SMCR_SMS_Pos)                   /*!< 0x0001 */
    #define TIM_SMCR_SMS_1            (0x2U << TIM_SMCR_SMS_Pos)                   /*!< 0x0002 */

    Czyli ustawienie:

    SMS=011 if it is counting on both TI1 and TI2 edges

    Brak pytań 😉

    [ Dodano: 26-07-2017, 18:25 ]

    Mam problem z ostatnim zadaniem z tego tematu - odczytywanie PWM.

    Lampka

    [ Dodano: 26-07-2017, 18:33 ]

    Mam problem z ostatnim zadaniem z tego tematu - odczytywanie PWM.

    Lampka świeci z różnym natężeniem w zależności od pozycji enkodera. Wnioskuję więc, że zarówno generowanie PWM jak i obsługa enkodera działa poprawnie.

    Jednak niezależnie od tych dwóch rzeczy zawsze poniższe zmienne mają takie same wartości (są volatile)

    InputPWMDuty_cycles 0x20000060 1

    InputPWMPeriod_cycles 0x20000144 1

    InputPWMPeriod_miliseconds 0x20000064 0

    Co może być przyczyną?

    Jak odczytujący timer TIM2 jest połączony z nadawającym timerem TIM4?

    [ Dodano: 26-07-2017, 18:34 ]

    ---------------------------------------------

    Mam problem z ostatnim zadaniem z tego tematu - odczytywanie PWM.

    Lampka świeci z różnym natężeniem w zależności od pozycji enkodera. Wnioskuję więc, że zarówno generowanie PWM jak i obsługa enkodera działa poprawnie.

    Jednak niezależnie od tych dwóch rzeczy zawsze poniższe zmienne mają takie same wartości (są volatile)

    InputPWMDuty_cycles 0x20000060 1

    InputPWMPeriod_cycles 0x20000144 1

    InputPWMPeriod_miliseconds 0x20000064 0

    Co może być przyczyną?

    Jak odczytujący timer TIM2 jest połączony z nadawającym timerem TIM4?


  4. Cześć,
    Czym jest polarity do ustawienia w konfiguracji enkodera?

    W kursie ustawiamy go na Rising Edge. Ale czemu nie Both Edge.

    Help z programu nie za bardzo mi pomógł, bo nie znalazłem nic o polarity.

    Z kodu komentarz z tej linii:

    sConfig.IC2Polarity = TIM_ICPOLARITY_RISING;

    to:

    uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal.

    Gdzie więc szukać odpowiedzi na przyszłość?

×
×
  • Utwórz nowe...