Kolejna dziwna sytuacja.
Projekt na STM32F107RCT6 złożony, więc powoli zabieram się za
uruchamianie poszczególnych peryferiów. Na pierwszy rzut UART. Coś
wysyła - ale dochodzą krzaki. Sprawdzam analizatorem logicznym i
faktycznie - przebiegi niby prawidłowe, ale impulsy dwa razy dłuższe niż
powinny.
Sprawdzam więc miganie diodą - dwa razy wolniej, niż powinna. Wygląda
więc na to, że procesor pracuje dwa razy wolniej, niż by to wynikało z
przyjętych założeń.
Do taktowania wykorzystałem kwarc SMD, który miał pracować z prędkością
8 MHz. Na obudowie ma napis "8.000" i pochodzi z zaufanego źródła (TME)
a poza tym takie same kwarce wykorzystywałem już w paru projektach i
zawsze działały prawidłowo.
Kod konfiguracyjny wygenerowany STM32CubeMX, podając właściwą
częstotliwość kwarcu.
Co mogło pójść nie tak?
Atlantis <m...@w...pl> napisał(a):
> Kolejna dziwna sytuacja.
> Projekt na STM32F107RCT6 złożony, więc powoli zabieram się za uruchamianie
> poszczególnych peryferiów. Na pierwszy rzut UART. Coś wysyła - ale
> dochodzą krzaki. Sprawdzam analizatorem logicznym i faktycznie - przebiegi
> niby prawidłowe, ale impulsy dwa razy dłuższe niż powinny.
> Sprawdzam więc miganie diodą - dwa razy wolniej, niż powinna. Wygląda więc
> na to, że procesor pracuje dwa razy wolniej, niż by to wynikało z
> przyjętych założeń.
> Do taktowania wykorzystałem kwarc SMD, który miał pracować z prędkością 8
> MHz. Na obudowie ma napis "8.000" i pochodzi z zaufanego źródła (TME) a
> poza tym takie same kwarce wykorzystywałem już w paru projektach i zawsze
> działały prawidłowo.
> Kod konfiguracyjny wygenerowany STM32CubeMX, podając właściwą
> częstotliwość kwarcu.
> Co mogło pójść nie tak?
Sprawdź jaka jest prędkość na HSI, które też ma 8 MHz.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
W dniu 2021-01-25 o 23:20, Atlantis pisze:
> Kolejna dziwna sytuacja.
> Projekt na STM32F107RCT6 złożony, więc powoli zabieram się za
> uruchamianie poszczególnych peryferiów. Na pierwszy rzut UART. Coś
> wysyła - ale dochodzą krzaki. Sprawdzam analizatorem logicznym i
> faktycznie - przebiegi niby prawidłowe, ale impulsy dwa razy dłuższe niż
> powinny.
>
> Sprawdzam więc miganie diodą - dwa razy wolniej, niż powinna. Wygląda
> więc na to, że procesor pracuje dwa razy wolniej, niż by to wynikało z
> przyjętych założeń.
>
> Do taktowania wykorzystałem kwarc SMD, który miał pracować z prędkością
> 8 MHz. Na obudowie ma napis "8.000" i pochodzi z zaufanego źródła (TME)
> a poza tym takie same kwarce wykorzystywałem już w paru projektach i
> zawsze działały prawidłowo.
>
> Kod konfiguracyjny wygenerowany STM32CubeMX, podając właściwą
> częstotliwość kwarcu.
>
> Co mogło pójść nie tak?
Częstotliwość kwarcu możesz sprawdzić oscyloskopem ;)
Jestem zawsze nieufny co do kodu wygenerowanego przez CubeMX.
Ja bym debuggerem sprawdził po wszystkich funkcjach inicjujących
stan rejestrów decydujących o zegarze:
RCC->CR
RCC->CFGR
i zweryfikował, czy naprawdę jest w nich to, co powinno być.
Na przykład w rejestrze RCC->CFGR jest bit PLLXTPRE, który
ustawiony dzieli częstotliwość HSE przez 2. A jak dasz jako
wejście PLL rezonator wewnętrzny (HSI) to tego dzielenia nie ma.
Więc zmieniając HSE z HSI można się zdziwić.
W kodzie HAL powinna być zdefiniowana stała HSE_VALUE.
Sprawdź, czy ma poprawną wartość (8000000). Z niej są wyliczane
dalsze dzielniki.
Pozdrowienia,
MKi
I jeszcze mi się przypomniało:
W HAL powinna być funkcja SystemCoreClockUpdate()
której działanie polega na ustawieniu zmiennej
globalnej SystemCoreClock - na częstotliwość
SYSCLK.
Możesz tę funkcję wywołać na początku programu
po funkcjach inicjujących i sprawdzić,
czy w SystemCoreClock jest to co powinno być.
Ta funkcja działa przy założeniu,
że HSE_VALUE jest poprawne.
Pozdrowienia,
MKi
Atlantis wrote on 25.01.2021 23:20:
> Sprawdzam więc miganie diodą - dwa razy wolniej, niż powinna. Wygląda
> więc na to, że procesor pracuje dwa razy wolniej, niż by to wynikało z
> przyjętych założeń.
>
> Do taktowania wykorzystałem kwarc SMD, który miał pracować z prędkością
> 8 MHz. Na obudowie ma napis "8.000" i pochodzi z zaufanego źródła (TME)
> a poza tym takie same kwarce wykorzystywałem już w paru projektach i
> zawsze działały prawidłowo.
>
> Kod konfiguracyjny wygenerowany STM32CubeMX, podając właściwą
> częstotliwość kwarcu.
>
> Co mogło pójść nie tak?
W twoim przypadku tradycyjnie:
1. ojej, nie zauważyłem że nie przylutował się lub pomyliłem kondensator
lub urwałem przewód w obwodzie oscylatora i procek pracuje na wbudowanym RC
2. ojej, załadowałem inny kod niż mi się wydawało
3. ojej, źle ustawiłem typ procesora w okienku.
4. ojej, ale tej dokumentacji dużo, nie będę czytał o konfiguracji
zegara, tylko poszukam kogoś ze szklaną kulą na grupie dyskusyjnej.
Zbych <a...@o...pl> wrote:
> W twoim przypadku tradycyjnie:
> 1. ojej, nie zauważyłem że nie przylutował się lub pomyliłem kondensator
> lub urwałem przewód w obwodzie oscylatora i procek pracuje na wbudowanym RC
> 2. ojej, załadowałem inny kod niż mi się wydawało
> 3. ojej, źle ustawiłem typ procesora w okienku.
Mało to razy coś się odlutuje, źle kliknie albo inaczej pomyli? Tylko ten
się nie myli, kto nic nie robi.
> 4. ojej, ale tej dokumentacji dużo, nie będę czytał o konfiguracji
> zegara, tylko poszukam kogoś ze szklaną kulą na grupie dyskusyjnej.
Zakładam, że czytał, tylko utknął i skończyły mu się pomysły. Od tego jest
przecież grupa.
--
Na podwórku rozmawiają 2 koguty:
- Czy ty z ta kura to chodzisz na poważnie czy tylko dla jaj?
Arnold Ziffel <a...@h...invalid> napisał(a):
>> 4. ojej, ale tej dokumentacji dużo, nie będę czytał o konfiguracji
>> zegara, tylko poszukam kogoś ze szklaną kulą na grupie dyskusyjnej.
> Zakładam, że czytał, tylko utknął i skończyły mu się pomysły. Od tego
> jest przecież grupa.
Akurat to o szklanej kuli jest słuszne bo nie została wklejona ani jedna
linijka kodu, nie mówiąc już o zawartości rejestrów konfiguracyjnych i
statusowych.
--
Grzegorz Niemirowski
https://www.grzegorz.net/
Arnold Ziffel wrote on 26.01.2021 11:52:
> Zbych <a...@o...pl> wrote:
>
>> W twoim przypadku tradycyjnie:
>> 1. ojej, nie zauważyłem że nie przylutował się lub pomyliłem kondensator
>> lub urwałem przewód w obwodzie oscylatora i procek pracuje na wbudowanym RC
>> 2. ojej, załadowałem inny kod niż mi się wydawało
>> 3. ojej, źle ustawiłem typ procesora w okienku.
>
> Mało to razy coś się odlutuje, źle kliknie albo inaczej pomyli? Tylko ten
> się nie myli, kto nic nie robi.
I jak ktoś na grupie ma to wykryć? Przejrzyj historię postów Atlantisa -
ludzie się produkują, rzucają pomysłami a on na koniec napisze, że
pomylił wsad albo niedolutował (vide post sprzed 4 dni)
>> 4. ojej, ale tej dokumentacji dużo, nie będę czytał o konfiguracji
>> zegara, tylko poszukam kogoś ze szklaną kulą na grupie dyskusyjnej.
>
> Zakładam, że czytał, tylko utknął i skończyły mu się pomysły. Od tego jest
> przecież grupa.
I gdzie jest opis miejsca w którym utknął?
Atlantis ma naprawdę długą historię debugowania problemów na grupie i
zazwyczaj sprowadza się to do:
1. czy podłączyłeś oscyloskop do kwarcu i sprawdziłeś przebiegi? no
niebardzo.
2. czy przeszedłeś w debugerze kod inicjalizacyjny dystrybucji zegara
krok po kroku i sprawdziłeś czy nie zwraca błędów? też nie.
3. Czy sprawdziłeś jaka częstotliwość zegara jest brana do obliczeń
prędkości UARTu? a skąd.
PS. żeby nie było, to nie mam nic przeciwko takim postom. Ale czy
naprawdę ciężko jest ogarnąć kilka podstawowych kroków, zwłaszcza jeśli
się popełnia podobne błędy?
On 26/01/2021 12:21, Zbych wrote:
> PS. żeby nie było, to nie mam nic przeciwko takim postom. Ale czy
> naprawdę ciężko jest ogarnąć kilka podstawowych kroków, zwłaszcza jeśli
> się popełnia podobne błędy?
Mnie tam Atlantis nie przeszkadza ... nawet popkorn wyciągam czasami.
O wiele gorszy był Identyfikator_cośtam_cośtam ... ten to się dopiero
naprodukował śmieci.
c.
On 26.01.2021 10:05, MKi wrote:
> Jestem zawsze nieufny co do kodu wygenerowanego przez CubeMX.
> Ja bym debuggerem sprawdził po wszystkich funkcjach inicjujących
Pewnie masz rację. Ciągle nie wiem co było przyczyną, ale lekarstwem
okazało się być ponowne wygenerowanie projektu, od podstaw.
TOP 10 najlepiej płatnych stanowisk w branży nieruchomości
Nadpłata kredytu mieszkaniowego? Polacy niechętni
Obroty na GPW II 2021 r. Największy wzrost na NewConnect
Podstawa opodatkowania podatkiem od spadków i darowizn
Sprzedaż nieruchomości nabytej w drodze zamiany w PIT
Praktyczna nauka zawodu pozbawia prawa do ulgi prorodzinnej
Rok 2021 na rynku nieruchomości to jedna wielka niewiadoma