Skocz do zawartości

Matthew11

Użytkownicy
  • Zawartość

    152
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    7

Matthew11 zajął 1. miejsce w rankingu.
Data osiągnięcia: 4 kwietnia.

Treści użytkownika Matthew11 zdobyły tego dnia najwięcej polubień!

Reputacja

191 Mistrz

O Matthew11

  • Ranga
    5/10

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Kraków
  • Programuję w
    C, C++

Ostatnio na profilu byli

4201 wyświetleń profilu
  1. Jeśli chodzi o prywatne biblioteki, to tak umieszczasz je w lib. Rozumiem, że chodzi Ci o dodatkowe biblioteki (poza tymi dostarczonymi w ramach toolchainu), które instalujesz za pomocą Arduino IDE? Wtedy odpowiedź brzmi - tak. Platformio rozumie to jako specyficzne dla projektu bądź prywatne: This directory is intended for project specific (private) libraries. To jak powinna być zdefiniowana struktura plików takich bibliotek masz opisane dokładnie w README w katalogu lib jak stworzysz nowy projekt. Natomiast jeśli chodzi Ci o np. bibliotekę SPI - czyli driver dostarczony w
  2. @Gieneq Wrzuciłem funkcje smaller* do CompilerExplorer - link do mojego testu - i w wynikowym asemblerze możemy zobaczyć że już przy O1 kod funkcji smaller_v1, smaller_v2 i smaller_v3 generują ten sam kod maszynowy, z kolei smaller_v4 generuje kod maszynowy który ma dwie instrukcje więcej niż pozostała trójka. Do testu wziąłem output z STM32CubeIDE: arm-none-eabi-gcc "../Core/Src/main.c" -mcpu=cortex-m4 -std=gnu11 -g3 -DDEBUG -DUSE_HAL_DRIVER -DSTM32L476xx -c -I../Core/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc -I../Drivers/STM32L4xx_HAL_Driver/Inc/Legacy -I../Drivers/CMSIS/Device/ST/
  3. @_LM_ Wszystko dokładnie masz opisane w plikach README.md każdego katalogu, który tworzy PIO po stworzeniu nowego projektu. include - tam dodajesz nagłówki ze swoim kodem czyli np. common.h src - tam masz main.cpp i tam byś np. dodał common.c lib - tam umieszczasz swoje prywatne biblioteki (nie musi to być biblioteka w rozumieniu biblioteki, ale np. jakiś moduł, który z Twojego punktu widzenia można wykorzystywać jako niezależny element w wielu projektach) w Twoim przypadku tam mogły by prawdopodobnie wlecieć pliki ATcmd.c i ATcmd.h - według wymagań opisanych w README.md
  4. Nie ma takiego wymogu. Możesz używać .h lub .hpp i z tego co mi wydaje można stosować jeszcze inne rozszerzenia. W praktyce nie miałem żadnych problemów z używaniem .h/.cpp przy kompilacji pod C++. Natomiast słyszałem opinię, że stosownie odpowiednio .h/.c i .hpp/.cpp jest dobrą praktyką i chroni przed wieloma problemami (ta opinia głównie dotyczyła pisania kodu, który miał działać na wielu platformach pewnie można to wygrzebać gdzieś w prezentacjach lub na kanale Jasona Turnera). Byłoby świetnie, ale niestety nie*. PIO korzysta ze swojego customowego systemu budowania *
  5. Update. Wiem o co chodzi. Masz "bibliotekę" która jest kodem C. W tym kodzie załączasz bibliotekę Ticker, która, załącza header C++ <functional>. Nie znam się na miksowaniu C i C++, ale generalnie to nie chce działać. Ale jak zmienisz rozszerzenie 3080r.c na 3080r.cpp to błędu z problemem dołączenia <functional> już nie ma, ale za to pojawia się masa kolejnych błędów, ale już w Twoim kodzie.
  6. Z tego co sprawdziłem to u mnie pierwszy błąd polega na braku dołączenia SPI: In file included from .pio\libdeps\esp12e\SparkFun AS3935 Lightning Detector Arduino Library\src\SparkFun_AS3935.cpp:12:0: .pio\libdeps\esp12e\SparkFun AS3935 Lightning Detector Arduino Library\src\SparkFun_AS3935.h:5:17: fatal error: SPI.h: No such file or directory Zwykle rozwiązuje się to... przez dodanie include'a SPI.h w main.cpp. Po załączeniu SPI, pojawia się kolejny problem, który już wskazuje na to, że kompilator nie może sobie ogarnąć include <functional> (od std::function). In file include
  7. To jest błąd rzucony przez kompilator czy IDE? Z tego co podałeś to ciężko stwierdzić. Musisz podać więcej informacji. Możesz udostępnić projekt przez Gita albo dołączyć archiwum z projektem żeby dało się to odpalić samodzielnie?
  8. Sam uważałem standard RS232 za archaizm, ale ostatnio słuchając podcastu Cppcast okazuje się, że stosowany jest on w robotach, które wykorzystuje się do inspekcji elektrowni atomowych. Według Davida Barra (gościa podcastu) wykorzystywany jest dlatego, że jest bardziej odporny na zakłócenia w środowisku wysokiego promieniowania. Co ciekawe wynik w postaci 10minut pracy takiego urządzenia w takim środowisku to spore osiągnięcie. A gdyby tak sterować diodą z jakiejś aplikacji która ma interfejs graficzny? Wystarczy wykorzystać aplikację z drugiej części Forbotowego kursu Qt. Umawiamy
  9. Ten artykuł jest częścią serii "Kompilatory od podszewki" #1 - Wprowadzenie #2 - Linker i biblioteki #3 - Automatyzacja procesu kompilacji, kompilatory a mikrokontrolery #4 - Programowanie mikrokontrolerów AVR z terminala (właśnie to czytasz) W tej części Zobaczysz jak bardzo proste jest programowanie mikrokontrolerów AVR bezpośrednio z terminala - bez żadnego IDE. Napiszemy program, który będzie sterował diodą. Następnie skompilujemy ten program pod mikrokontroler ATmega328p a wygenerowany plik wsadowy wgramy na płytkę Arduino Uno. Logo mikrokon
  10. Ten artykuł jest częścią serii "Kompilatory od podszewki" #1 - Wprowadzenie #2 - Linker i biblioteki #3 - Automatyzacja procesu kompilacji, kompilatory a mikrokontrolery (właśnie to czytasz) #4 - Programowanie mikrokontrolerów AVR z terminala W tej części Dowiesz się o różnych sposobach automatyzacji procesu budowania projektów oraz napiszesz swój własny plik Makefile. Poruszymy również temat kompilatorów dla innych architektur i zajrzymy pod maskę IDE przeznaczonego do programowania mikrokontrolerów STM32 - STM32CubeIDE. Dodatkowo przedstawimy inne przydat
  11. Ten artykuł jest częścią serii "Kompilatory od podszewki" #1 - Wprowadzenie #2 - Linker i biblioteki (właśnie to czytasz) #3 - Automatyzacja procesu kompilacji, kompilatory a mikrokontrolery #4 - Programowanie mikrokontrolerów AVR z terminala Schemat procesu budowania programu. Źródło grafiki. W tej części Dowiesz się czym tak właściwie są "dll'ki" - czyli znane wszystkim z systemu Windows pliki z rozszerzeniem .dll. Omówimy szerzej zastosowanie linkera i opowiemy o znaczeniu i wykorzystaniu bibliotek. Zbudujemy też między innymi własne bibliote
  12. Ten artykuł jest częścią serii "Kompilatory od podszewki" #1 - Wprowadzenie (właśnie to czytasz) #2 - Linker i biblioteki #3 - Automatyzacja procesu kompilacji, kompilatory a mikrokontrolery #4 - Programowanie mikrokontrolerów AVR z terminala O czym jest ta seria artykułów? Każdy większy projekt (o ile korzysta z jakiegoś kompilowanego języka), na pewnym etapie zacznie korzystać z jakiegoś dostępnego systemu budowania (o ile nie od razu). Który następnie zostanie zintegrowany z wykorzystanym IDE i... ta historia kończy się na kliknięciu przycisku Buduj. Ale
  13. @yukimikoto Ad 1. Gdy wygenerowane zostanie przerwanie np. na wciśnięcie przycisku to działający program wstrzumuje pracę, którą w chwili wystąpienia przerwania wykonywał i dokonuje skoku do tzw. procedury obsługi tego konkretnego przerwania - gdzie program przechodzi do wywołania jakiejś funkcji - callbacka. Callback to nic innego jak zdefiniowany kawałek kodu, który określa co się ma zadziać, gdy wystąpi przerwanie X. W tym konkretnym przypadku w callbacku zazwyczaj odczytujemy odebrany znak i coś z nim robimy. Ad 2. UART_HandleTypeDef jest to po prostu struktura z wielom
  14. @tbl4h Ciężko z dostarczonego przez Ciebie wycinka kodu stwierdzić co jest problemem, ale na pewno wiele rzeczy jest niepokojących. Problemu doszukiwałbym się w: Sposobie nadawania danych po stronie odbiornika, nie wiem jak dane wysyłasz z mikrokontrolera - wysyłasz je w postaci struktury? Czy w postaci 2 charów i 2 floatów? Czy jeszcze jakoś inaczej. W zależności od tego jak te dane wysyłasz to w różnej formie mogą być one reprezentowane wewnątrz QByteArray po ich odebraniu. Zakładając że wysyłasz dane w postaci struktury (przez castowanie adresu obiektu wysyłanej struktury na u
  15. @Wojtek65 Jak zdecydujesz się na C++ i napisanie takiej aplikacji w Qt to "prawie gotowe" rozwiązanie znajdziesz w drugim linku który podrzucił @Treker Jak byś mimo kursu miał problemy to załóż nowy temat, opisz problem i oznacz mnie wtedy chętnie pomogę.
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.