Wpis z mikrobloga

@Mr_Przyjemny: nie no, aż tak nisko to nie, trochę zbyt dużo zachodu ;) Ale makefile mam własny, linkerscript też
Poprzedni firmware pisałem ręcznie podając rejestry z dokumentacji i chyba jednak nie chcę tak robić. CMSIS upraszcza wystarczająco, idzie odczytać co autor miał na myśli.
  • Odpowiedz
@WyrobCzekoladopodobny: być może, ale to jest jakiś pośrednik. Daję się nauczać w pracy ludziom, którzy mają po 30 lat doświadczenia w programowaniu, więc nie wydziwiam i idę drogą, którą mi pokazują (ʘʘ)
Tak czy inaczej szukam kogoś z doświadczeniem właśnie w takim kodowaniu bliżej dokumentacji, a nie wywoływania funkcji z pomocą IDE. Nie zgadzają mi się bity z opisami w dwóch miejscach. Jak zmieniłem bity konfiguracyjne
  • Odpowiedz
@zarowka12: ech, przerobiłem temat z @WyrobCzekoladopodobny na PW i zapomniałem, że tu tak lakonicznie poszło...
robię na STM32L031K6T, tu jest manualka: https://www.st.com/resource/en/reference_manual/rm0377-ultralowpower-stm32l0x1-advanced-armbased-32bit-mcus-stmicroelectronics.pdf
strona 415, rejestr TIMx CR1, bit DIR. Wypisywałem sobie wartość licznika printfem po uarcie, przy ustawieniu DIR = 0 (stan po resecie) licznik liczył mi w dół, przestawiłem DIR = 1 i liczy w górę. Odwrotnie jak w dokumentacji.
ten sam plik, strona 763, rejestr LPUART ISR,
  • Odpowiedz
@macgajster: ciekawa sprawa. Faktycznie może to być błąd w dokumentacji. Możliwa jest też wadliwa seria mikrokontrolerów, ale w erracie (https://www.st.com/resource/en/errata_sheet/es0322-stm32l031xxl041xx-device-errata-stmicroelectronics.pdf) nic na ten temat nie ma. Dziwne, że przez tyle lat nikt tego nie zauważył. Biblioteki od ST są zgodne z dokumentacją:
#define TIMCOUNTERMODEUP 0x00000000U /*!< Counter used as up-counter */
#define TIMCOUNTERMODEDOWN TIMCR1DIR /*!< Counter used as down-counter
  • Odpowiedz
@macgajster: ile wynosi okres printowania i a ile okres timera? Bo da się tak dobrać okresy, że będzie wyglądało jak licznik liczył w drugą stronę ( ͡° ͜ʖ ͡°) Dla licznika liczącego w górę z okresem 1000 printowanie z okresem 900 da:
900
800
700
600
itd ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°
  • Odpowiedz