Dokąd zmierza świat?

Tu można porozmawiać na dowolny temat nie koniecznie związany z tematyką maszyn i CNC
Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 15
Posty: 9456
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Dokąd zmierza świat?

#1

Post napisał: tuxcnc » 31 maja 2025, 19:30

Będzie o programowaniu, ale bez obaw, naprawdę nie potrzeba żadnej specjalistycznej wiedzy, żeby zrozumieć o czym mowa, bo to tylko przykład, który potraktuję bardzo powierzchownie i opisowo.
Otóż wpadłem na taki pomysł, żeby stworzyć rozbudowany system diagnostyki maszyny pracującej pod kontrolą LinuxCNC. Brzmi to trochę skomplikowanie, ale jest dość proste, chodzi o zgłoszenie alarmu na przykład kiedy napięcie jakiegoś zasilacza nie będzie się mieścić w założonych granicach (równie dobrze można mierzyć inne wielkości, ale w elektronice i tak konwertuje się je do napięcia).
Wybór padł na STM32, bo płytki z tymi procesorami można kupić za kilka-kilkadziesiąt złotych, a potrafią mieć nawet po kilkadziesiąt pinów wejścia/wyjścia. Z zasady STM32 mają wbudowane przetworniki analogowo-cyfrowe, więc nie potrzeba żadnych skomplikowanych układów dodatkowych, wystarczy układ odpowiednio zaprogramować.
To tyle tytułem wstępu.
Ponieważ STM32 dość długo nie używałem, to pewne rzeczy wyleciały mi z głowy, więc postanowiłem znaleźć w necie gotowe przykłady na (jakby nie było) jedną z podstawowych użyteczności współczesnych mikrokontrolerów.
Znalazłem mnóstwo takich jak poniższy, których nie próbujcie zrozumieć, bo i tak nie działają, kompilator pluje błędami bo mu czegoś brakuje itd. Przewińcie tylko i zwróćcie uwagę na długość i stopień skomplikowania kodu:

Kod: Zaznacz cały

// some sytm32duino specific code not important for understanding
// --------------------------------------------------------------------------------------
#ifndef ADC_CLOCK_DIV
#ifdef ADC_CLOCK_SYNC_PCLK_DIV4
#define ADC_CLOCK_DIV       ADC_CLOCK_SYNC_PCLK_DIV4
#elif ADC_CLOCK_SYNC_PCLK_DIV2
#define ADC_CLOCK_DIV       ADC_CLOCK_SYNC_PCLK_DIV2
#elif defined(ADC_CLOCK_ASYNC_DIV1)
#define ADC_CLOCK_DIV       ADC_CLOCK_ASYNC_DIV1
#endif
#endif /* !ADC_CLOCK_DIV */

#ifndef ADC_SAMPLINGTIME
#if defined(ADC_SAMPLETIME_8CYCLES_5)
#define ADC_SAMPLINGTIME        ADC_SAMPLETIME_8CYCLES_5;
#elif defined(ADC_SAMPLETIME_12CYCLES_5)
#define ADC_SAMPLINGTIME        ADC_SAMPLETIME_12CYCLES_5;
#elif defined(ADC_SAMPLETIME_13CYCLES_5)
#define ADC_SAMPLINGTIME        ADC_SAMPLETIME_13CYCLES_5;
#elif defined(ADC_SAMPLETIME_15CYCLES)
#define ADC_SAMPLINGTIME        ADC_SAMPLETIME_15CYCLES;
#elif defined(ADC_SAMPLETIME_16CYCLES)
#define ADC_SAMPLINGTIME        ADC_SAMPLETIME_16CYCLES;
#elif defined(ADC_SAMPLETIME_19CYCLES_5)
#define ADC_SAMPLINGTIME        ADC_SAMPLETIME_19CYCLES_5;
#endif
#endif /* !ADC_SAMPLINGTIME */
// --------------------------------------------------------------------------------------

ADC_HandleTypeDef hadc;
void setup()
{
  pinMode(13,OUTPUT);
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
  pinMode(A2,INPUT);
  Serial.begin(115200);

  delay(2000);
  MX_ADC_Init();
}
int value[3]={0};
void loop()
{
  digitalWrite(13, HIGH);
  //adc_read(&hadc, value, 3);
  
  HAL_ADC_Start(&hadc);
  HAL_ADC_PollForConversion(&hadc, 1); // polling timeout 1ms - cannot go lower
  value[0] = HAL_ADC_GetValue(&hadc);
  HAL_ADC_PollForConversion(&hadc, 1);
  value[1] = HAL_ADC_GetValue(&hadc);
  HAL_ADC_PollForConversion(&hadc, 1);
  value[2] = HAL_ADC_GetValue(&hadc);
  
  digitalWrite(13, LOW);
  Serial.print(value[0]);
  Serial.print("\t");
  Serial.print(value[1]);
  Serial.print("\t");
  Serial.println(value[2]);
}

void MX_ADC_Init()
{
  ADC_ChannelConfTypeDef sConfig;
  /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) 
  */
  hadc.Instance = ADC1;
  hadc.Init.ClockPrescaler = ADC_CLOCK_DIV;
  hadc.Init.Resolution = ADC_RESOLUTION_12B;
  hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  hadc.Init.ScanConvMode = ENABLE;
  hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  hadc.Init.ContinuousConvMode = DISABLE;
  hadc.Init.NbrOfConversion = 3;
  hadc.Init.DiscontinuousConvMode = ENABLE; 
  hadc.Init.NbrOfDiscConversion = 3;
  // this is the important bit
  hadc.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  hadc.Init.ExternalTrigConv =  ADC_SOFTWARE_START; 
  hadc.Init.DMAContinuousRequests = DISABLE;
  HAL_ADC_Init(&hadc);
  /**Configure for the selected ADC regular channel to be converted. 
  */
  sConfig.Channel = ADC_CHANNEL_0;
  sConfig.Rank = 1;
  sConfig.SamplingTime = ADC_SAMPLINGTIME;
  HAL_ADC_ConfigChannel(&hadc, &sConfig);
     
  /**Configure for the selected ADC regular channel to be converted. 
  */
  sConfig.Channel = ADC_CHANNEL_1;
  sConfig.Rank = 2;
  HAL_ADC_ConfigChannel(&hadc, &sConfig);
  /**Configure for the selected ADC regular channel to be converted. 
  */
  sConfig.Channel = ADC_CHANNEL_4;
  sConfig.Rank = 3;
  HAL_ADC_ConfigChannel(&hadc, &sConfig);

  /* Configure ADC GPIO pin */
  pinmap_pinout(analogInputToPinName(A0), PinMap_ADC);
  pinmap_pinout(analogInputToPinName(A1), PinMap_ADC);
  pinmap_pinout(analogInputToPinName(A2), PinMap_ADC);
}
Ja zaczynałem przygodę z programowaniem kiedy komputer ZX Spectrum kosztował pięć wypłat i moich rodziców nie było stać na to, żeby mi zrobić taki prezent, więc pierwsze swoje programy pisałem ... długopisem na kartce papieru (nawet dość skomplikowane, w assemblerze 8080, po kilka kilobajtów kodu wynikowego).
Nie tęsknię za tamtymi czasami, bo były wyjątkowo paskudne, ale wyniosłem z nich kilka umiejętności, których próżno szukać u współczesnych programistów, którzy wychodzą z założenia, że pamięć jest tania, więc jak program ma megabajt, to jest krótki..
Otóż wklejony powyżej kod to HAL, czyli opis oderwany od sprzętu. Ma on tylko jedną zaletę - łatwo można go przenieść na inny sprzęt. Po prostu nie odwołuje się bezpośrednio do rejestrów procesora, tylko do plików konfiguracyjnych, które się odwołują do innych plików konfiguracyjnych, żeby na końcu było wiadomo co gdzie wpisać.
Ja nie mam nic przeciwko HAL, kiedy ktoś pisze długie i skomplikowane programy, których przepisanie na nowy model procesora byłoby niesamowitą męczarnią.
Ale żeby używać HAL do tak prostych rzeczy jak włączenie DAC?
Jako programista bardzo starej daty wiem, że to raptem wpisanie kilku bitów do kilku rejestrów, nie raz to robiłem, tylko pamięć już nie ta...
Naprawdę, znalezienie kodu który mnie interesował było szukaniem igły w stogu siana, wszędzie HAL,HAL i HAL...
W końcu coś znalazłem, trochę przerobiłem i zmierzyłem napięcie na podłączonym potencjometrze:

Kod: Zaznacz cały

//ADC registers chapter 11.12 on page 237 of
//rm0008-stm32f101xx-stm32f102xx-stm32f103xx-stm32f105xx-and-stm32f107xx-advanced-armbased-32bit-mcus-stmicroelectronics.pdf

void setup() {
  Serial.begin(115200);
  RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;         // make sure the ADC is clocked
  ADC1->CR2 = ADC_CR2_ADON | ADC_CR2_CONT;    // Turn on ADC, enable continuos mode
  ADC1->CR2 |= ADC_CR2_ADON;                  // Turn on conversion
}
void loop() {
  Serial.println(ADC1->DR);
  delay(200);
}
Tak, wiem, dla kogoś kto nie programuje, to nadal czarna magia, ale to tylko nazwy rejestrów i bitów w tych rejestrach. Wystarczy wziąć manual i znaleźć.
Natomiast nie trzeba być programistą żeby ocenić który kod jest krótszy, prostszy, a więc i łatwiejszy do zrozumienia...

Powyższe to tylko przykład ogólnej tendencji do komplikowania wszystkiego co się tylko da...
Wszystko trzeba tak zagmatwać, żeby nikt niczego nie rozumiał i do wszystkiego trzeba używać narzędzi tak skomplikowanych żeby nikt nie potrafił z nich skorzystać...
Moim zdaniem, taki postęp nas zabije.




strikexp
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 4712
Rejestracja: 31 mar 2017, 19:47
Lokalizacja: Warszawa

Re: Dokąd zmierza świat?

#2

Post napisał: strikexp » 31 maja 2025, 20:22

Ponieważ przenośność i czas życia oprogramowania jest znacznie ważniejsza niż Twoja wygoda. Założenie jest takie że ten co programuje ma mieć pewien poziom wiedzy.
A jak napisać program na mikrokontroler masz bezpośrednio w jego dokumentacji technicznej liczącej i kilkaset stron.

Co do gotowych płytek z mikrokontrolerami. Mają często ograniczenia licencyjne i nie można ich wykorzystywać komercyjnie jako zamknięte urządzenia.


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 14
Posty: 2381
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: Dokąd zmierza świat?

#3

Post napisał: drzasiek90 » 31 maja 2025, 20:37

Brak ci doświadczenia w tej dziedzinie, dlatego nie rozumiesz.
Nie rozumiesz, bo siedzisz sobie w domu, zaczynasz projekciki, rozgrzebujesz i odkładasz.
Ciebie to wali, czy narzędzie wyjdzie z użycia, czy uC wyjdzie z użycia.
Ciebie to wali ile czasu to zajmuje i jak łatwo się to zmieniam gdy będzie trzeba zmienić sprzęt.
A pracując jako programista, musisz brać pod uwagę więcej czynników niż swoje upodobania.

Ja nie pracuję jako programista, ale sporo programuję.
Ale ponieważ programuję dla siebie, to piszę jak lubię i jak mi wygodnie.
A wygodnie mi na rejestrach, mimo, że nie jestem starej daty.
Ale wszyscy programiści w firmie gdzie pracuję korzystają z HAL, w dodatku jeszcze ubóstwiają CUBE bo całą konfigurację sobie wyklikają.
Tak to już jest, że z narzędzi trzeba korzystać, bo po to są.
Świat się nie wali, możesz spać spokojnie.
Programiści są coraz lepsi, a dzięki temu, że mają narzędzia, są też coraz wydajniejsi.


atom1477
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 16
Posty: 3844
Rejestracja: 21 kwie 2011, 10:58
Lokalizacja: ::

Re: Dokąd zmierza świat?

#4

Post napisał: atom1477 » 31 maja 2025, 21:22

drzasiek90 pisze:
31 maja 2025, 20:37
Brak ci doświadczenia w tej dziedzinie, dlatego nie rozumiesz.
Ja mam doświadczenie, a też nie rozumiem.
Albo nie tyle nie rozumiem, co się nie zgadzam z taką metoda programowania.
Przenoszenie projektu na inny uC się mi praktycznie nie zdarza. Nie przypominam sobie żadnego przypadku.
Inna sprawa to robienie nowego projektu, na podstawie jakiegoś starego. Ale nawet tu mi brak HALa nie przeszkadzał. Po prostu jak coś ma być na innym mikrokontrolerze, to właśnie dlatego że on ma inne peryferia. Więc siłą rzeczy kod musi być inny, i niekompatybilny. Jakby miał być taki sam, to by nie było potrzeby dawać innego mikrokontrolera.
drzasiek90 pisze:
31 maja 2025, 20:37
Ale wszyscy programiści w firmie gdzie pracuję korzystają z HAL, w dodatku jeszcze ubóstwiają CUBE bo całą konfigurację sobie wyklikają.
To też mnie dziwi.
Sam używam CUBE, bo po prostu uznałem że trzeba iść z duchem czasu.
Ale używanie tego to mordęga. Coś tam się źle kliknie, i się projekt rozsypuje. Nie da się też ustawić pewnych rzeczy.
Inna sprawa, przy regenerowaniu kodu pyta czy pozostawić kod użytkownika. Czułem tu "podstęp", więc jak pierwszy raz tego używałem to skopiowałem sobie kod z pliku main.c. I co? Oczywiście usnął mój kod, mimo zaznaczenia opcji żeby go pozostawił. Odtworzyłem bo miałem kopię, i od tej pory zawsze już tak robię.
Może to nie tak ma działać (czyli coś źle zrozumiałem), ale chodzi mi o to że opis tej funkcji wprowadza w błąd.

Przy czym ja wcale nie narzekam, i nie wieszczę upadku cywilizacji z tego powodu że teraz są stosowane takie narzędzia.


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 14
Posty: 2381
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: Dokąd zmierza świat?

#5

Post napisał: drzasiek90 » 31 maja 2025, 21:38

atom1477 pisze:
31 maja 2025, 21:22
Albo nie tyle nie rozumiem, co się nie zgadzam z taką metoda programowania.
No ja też się nie zgadzam, bo ja wolę inaczej, bo inaczej mi wygodnie.
Ale rozumiem innych, że wolą taki sposób.
Wszystko zależy od potrzeb, od przyzwyczajeń.
Ja nie mogłem się przekonać do Arduino - takie mi się to wydawało narzędzie dla leni.
Ale przyszła pora, że potrzebowałem zbudować urządzenie na esp32 korzystając z ble.
Noi poszło z Arduino i w sumie całkiem to fajnie.
Jeśli program działa prawidłowo, wykonany jest w określonym czasie i spełnia wymagania to co za różnica jakie ktoś miał podejście.
W zespole trzeba pracować według określonych schematów, aby ktoś mógł cię w razie czego łatwo zastąpić lub pomóc.
Jak każdy będzie pracował oo swojemu to jest straszny bałagan i tworzą się ludzie niezastapieni - a pracodawcy tego nie lubią.
Programy są coraz bardziej skomplikowane, mikrokontrolery coraz bardziej rozbudowane.
Nic dziwnego, że powstają narzędzia z które mają przyspieszyć i ułatwić pracę i nic dziwnego, że ludzie z nich korzystają.
To nie zmierza w złym kierunku, nie ma się co obawiać.

P.s. program wrzucony w Arduino to też nadbudówka 😉

Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 15
Posty: 9456
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Re: Dokąd zmierza świat?

#6

Post napisał: tuxcnc » 31 maja 2025, 21:59

atom1477 pisze:
31 maja 2025, 21:22
Inna sprawa, przy regenerowaniu kodu pyta czy pozostawić kod użytkownika. Czułem tu "podstęp", więc jak pierwszy raz tego używałem to skopiowałem sobie kod z pliku main.c. I co? Oczywiście usnął mój kod, mimo zaznaczenia opcji żeby go pozostawił. Odtworzyłem bo miałem kopię, i od tej pory zawsze już tak robię.
Może to nie tak ma działać (czyli coś źle zrozumiałem), ale chodzi mi o to że opis tej funkcji wprowadza w błąd.
Też tak miałem i myślałem że trafi mnie szlag.
Okazało się, że wszystko zależy od tego, gdzie piszesz.
Są takie znaczniki User code start/end i jak coś jest pomiędzy nimi, to Cube nie ingeruje i kod zostawia, ale jeśli cokolwiek zmienisz poza tymi znacznikami, to Ci wszystko pozmienia po swojemu.
Zapewne tak musi być, żeby można sobie było część kodu pisać, a część klikać...
Osobiście Cube nie lubię i unikam.


maciek95k
Specjalista poziom 3 (min. 600)
Specjalista poziom 3 (min. 600)
Posty w temacie: 1
Posty: 808
Rejestracja: 31 mar 2017, 23:04
Lokalizacja: Kraków

Re: Dokąd zmierza świat?

#7

Post napisał: maciek95k » 01 cze 2025, 00:47

Dokładnie tak. W cube jak wygenerujesz program i chcesz sobie potem go przegenerować, to aby nie pousuwał Ci tego co dopisałeś, kod musi się znajdować dokładnie między komentarzami które on tam pozostawiał. Ja osobiście tego środowiska bardzo nie lubię bo:
- komentarze zaciemniają kod
- wersje hal'a zmieniają się jak szalone i są niekompatybilne często wstecz (jedno rozwiązanie za chwilę już nie działa w kolejnych projektach bo nie ma danych funkcji itd.)
- kontrola wersji? szkoda gadać. Co chwila po sklonowaniu repo trzeba projekt stawiać na nowo i dodawać pliki
To do czego to narzędzie jest super przydatne to:
- wyklikanie konfiguracji pinów - tak aby wyciągnąć z procka max peryferiów, nie było kolizji itd. Robienie tego z tabelki to mordęga i trwa 10 razy dłużej
- przetestowanie czegoś na szybko. Mam nowy prototyp PCB - coś mi nie działa i chcę sprawdzić jakąś jedną rzecz - generuję szybko kod i patrzę czy to w ogóle żyje
- debug i live expressions - czyli podglądanie zmiennych w czasie pracy procka bez zastopowania debugu

Ja osobiście korzystam najwięcej z platformio (wtyczka do vscode). Projekty opisane są w plikach tekstowych. Biblioteki mogą być na zewnątrz i można je podać jako link do repozytorium wraz ze znacznikiem do odpowiedniego commita czy releasa - brak problemów jak ktoś coś zaktualizuje. Jest to super bo znajdując błąd w jakiejś libce - automatycznie poprawia się on we wszystkich projektach. Da się nad jednym projektem jednocześnie pracować z linuxa i windowsa (co przy Cube Ide jest praktycznie niemożliwe). Same płytki także można sobie samemu opisać i używać już z odpowiednią abstrakcją. W przeciwieństwie do słabych IDE tutaj im dłużej się pracuje i projekty się rozrastają - tym jest łatwiej i przyjemniej a nie odwrotnie.

I tu chyba można dojść do sedna jeśli chodzi o HAL. Nie koniecznie ten w cube bo on bywał różny (aczkolwiek te nowe wersje już działają całkiem nieźle) ale ogólnie pisanie softu embedded w odpowiednich warstwach. Dzięki temu z każdym kolejnym projektem, baza naszej wiedzy ale też rozwiązań rośnie i nawet bardzo skoplikowane biblioteki możemy szybko portować na kolejne procki. Osobiście w platformio sobie piszę biblioteki w oderwaniu nawet od danego framework'u. Importując bibliotekę (linkiem do repo) dodaję tylko pliki config gdzie uzupełniam już zdefiniowane nagłówki funkcji odpowiednim wywołaniem sprzętowymi i gotowe. Polecam. Można sobie na STM pisać w arduino, C, C++ itd. (aczkolwiek wiedzę trzeba mieć bo czasem trzeba coś poprawiać).

Co do rozmiaru kodu - osobiście bawiąc się różnymi ustawieniami flag optymalizacji uważam że dzisiaj to już nie ma aż takiego znaczenia. Oczywiście znajomość rejestrów to podstawa i bez tego ani rusz imho z poważnymi programami i debugowaniem, ale jeśli nie robimy urządzenia które będzie klepane w milionach sztuk...


atom1477
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 16
Posty: 3844
Rejestracja: 21 kwie 2011, 10:58
Lokalizacja: ::

Re: Dokąd zmierza świat?

#8

Post napisał: atom1477 » 01 cze 2025, 09:02

maciek95k pisze:
01 cze 2025, 00:47
W cube jak wygenerujesz program i chcesz sobie potem go przegenerować, to aby nie pousuwał Ci tego co dopisałeś, kod musi się znajdować dokładnie między komentarzami które on tam pozostawiał.
Bezsens. Przecież mój kod to wiele fragmentów. Coś przed głowa pętlą while, coś w niej, coś jeszcze gdzie indziej.
A tam tego komentarza nie ma. Chyba że chodzi o to że można go skopiować i wstawić w dowolne miejsce jako znacznik żeby nie usuwał kodu jaki on obejmuje.
maciek95k pisze:
01 cze 2025, 00:47
- wersje hal'a zmieniają się jak szalone i są niekompatybilne często wstecz (jedno rozwiązanie za chwilę już nie działa w kolejnych projektach bo nie ma danych funkcji itd.)
Nie tylko są niekompatybilne wstecz, ale i niekompatybilne pomiędzy rodzinami uC.
Więc nie wierzę tutaj w jakąkolwiek przenoszalność.
maciek95k pisze:
01 cze 2025, 00:47
To do czego to narzędzie jest super przydatne to:
- wyklikanie konfiguracji pinów - tak aby wyciągnąć z procka max peryferiów, nie było kolizji itd. Robienie tego z tabelki to mordęga i trwa 10 razy dłużej
Ja mam na odwrót.
maciek95k pisze:
01 cze 2025, 00:47
Oczywiście znajomość rejestrów to podstawa i bez tego ani rusz imho z poważnymi programami i debugowaniem, ale jeśli nie robimy urządzenia które będzie klepane w milionach sztuk...
Ja myślę odwrotnie.
To w projekcie hobbystycznym można sobie pozwolić na dłubanie i optymalizowanie.
A w takim do produkcji dzisiaj się stawia na szybkość napisania kodu, kosztem wydajności i wykorzystania uC (tzn. że nie może byś wysokie, tylko trochę uC musi się marnować).
Podsumowując, mam na myśli że HAL jest dobry ale tylko do tworzenia "prostych" projektów. Nie że badziewnych czy mało funkcjonalnych, tylko takich gdzie wykorzystujemy tylko podstawowe konfiguracje peryferiów.
Ten HAL ma od początku znany problem, że wiele konfiguracji nie współdziała ze sobą (jedna wpływa na inne, bo zajmuje jakieś współdzielone peryfieria (PLLe, Timery)).
A po drugie, nie ma konfiguracji na wszystko. Pierwszy z brzegu przykład z mojego projektu: dla F7R3 nie było konfiguracji na przetwornicę dającą 1.8V, i wbudowany LDO. A taką konfigurację ma fabrycznie nowy niezaflashowany procek (tzn. w momencie gdy stoi na resecie albo w bootloaderze). Ale z CUBE nie dało się tego wyklikać. Sporo czasu straciłem na szukanie czy ta opcja jest gdzie indziej, albo czy może źle widzę w datasheecie że w ogóle jest możliwa do uzyskania. W końcu zrobiłem to sam grzebiąc w kodzie. Nikt mi więc nie wmówi że wyklikanie jest szybsze, skoro są przypadki że czegoś w ogóle się nie da wyklikać.
Inny przypadek to ADC. Zaznaczenie chęci jego użycia (jeszcze przed zaznaczeniem pinów) od razu wywala sporo błędów że jakieś piny są niekompatybilne (nawet jak ich wcześniej jeszcze nie przypisałem do innych celów). No i znowu, szukanie po necie, po datasheecie, po forum STM. Ogromna strata czasu.
Ostatnio zmieniony 01 cze 2025, 09:16 przez atom1477, łącznie zmieniany 1 raz.


drzasiek90
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 14
Posty: 2381
Rejestracja: 25 kwie 2016, 11:58
Lokalizacja: Jodlowa
Kontakt:

Re: Dokąd zmierza świat?

#9

Post napisał: drzasiek90 » 01 cze 2025, 09:07

atom1477 pisze:
01 cze 2025, 09:02
Bezsens. Przecież mój kod to wiele fragmentów. Coś przed głowa pętlą while, coś w niej, coś jeszcze gdzie indziej.
Ale tych fragmentów oznaczonych jako miejsce na twój kod jest dużo, w każdym możliwym miejscu, więc to nie jest problem.
Ale ja tego nie lubię nie korzystam, bo dla mnie to jest niewygodne, jak mam za dużo zbędnego komentarza.
Dla mnie to zaciemnia kod i utrudnia orientację.
Ale u mnie w pracy wszyscy pracują z CUBE i sobie chwalą i zupełnie nie rozumieją mojego punktu widzenia :)
Więc zapewne jest to tylko i wyłącznie kwestia przyzwyczajeń i upodobań.


atom1477
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 16
Posty: 3844
Rejestracja: 21 kwie 2011, 10:58
Lokalizacja: ::

Re: Dokąd zmierza świat?

#10

Post napisał: atom1477 » 01 cze 2025, 09:17

Może to jakiś problem z nowym HALem konkretnie dla rodziny H7R3. Tam był tylko jeden taki komentarz (+ te problemy z wyklikaniem potrzebnych konfiguracji).

W każdym razie ma to i swoje niespodziewane plusy. Cały świat idzie w kierunku marnowania zasobów uC (oraz FPGA), więc ktoś kto umie nie marnować tych zasobów będzie miał przewagę (ale też pod pewnymi warunkami).
Mi się zdarzył tylko jeden przypadek konieczności wejścia w inne uC (w sumie FPGA). Gdy był ten niedawny kryzys dostępności półprzewodników.
Z perspektywy czasu słabo to wyszło (wystarczyło poczekać ten rok i mieć to samo, zamiast tracić ten rok na zrobienie tego na innym układzie). Ale przy okazji rozejrzałem się za innymi układami, i przeanalizowałem jak poszedł rozwój. No i co zauważyłem? Że wiele niskopoziompowych funkcji środowisk zostało pousuwanych.
Może ktoś sobie tłumaczyć że to rozwój, i że można to zrobić wysokopoziomowymi bibliotekami. No ale ja mówię że nie można.
Mam unikalne implementacje na każdy z układów, wyciągające z nich ogromną wydajność. Żadna dostępna biblioteka (czy to producenta, czy jakaś płatna z niezależnej firmy) tego nie ma. Przez wiele lat nie pojawił się też żaden nowy układ który by mógł to przebić na normalnych bibliotekach (dzięki temu że jest nowy, czy dzięki swojej większej mocy obliczeniowej).
Ale dla mnie to zaleta: mam dzięki temu przewagę nad innymi programistami. Szkoda tylko że ogranicza mi się takie dłubanie na nowych układach i nowych środowiskach.

ODPOWIEDZ Poprzedni tematNastępny temat

Wróć do „Na luzie”