Skocz do zawartości

adamnar

Użytkownicy
  • Zawartość

    23
  • Rejestracja

  • Ostatnio

Reputacja

5 Neutralna

O adamnar

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Programuję w
    C++

Ostatnio na profilu byli

587 wyświetleń profilu
  1. Z artykułu dość jasno wynika, że delay_us nie jest dobrym podejściem i nie powinno być używane w większych projektach. Autorzy używają tego podejścia żeby zilustrować działanie protokołu 1-wire, co byłoby trudne używając rozwiązania docelowego, czyli UART. Wersja pro, czyli ta z UART, nie wymaga żadnego delay_us.
  2. Witam. Rozwiązałem problem. Program funkcjonuje poprawnie po zmienieniu linijki led_buffer[RESET_LEN + 24 * LED_N] = 100; na led_buffer[RESET_LEN + 24 * LED_N] = 0; Ogólnie, wydaje mi się, że w tym odcinku kursu znajduje się poważny błąd. Zaprezentowany sposób komunikacji z linijką led jest niezgodny z notą katalogową. Zacznijmy od następującego zdania: Dlaczego? Po co potrzebne jest nam pełne wypełnienie? W nocie katalogowej nigdzie nie jest napisane że stan wysoki jest do czegokolwiek potrzebny. Następnie: Dlaczego RESET jest na początku? W nocie kata
  3. Muszę przyznać, że totalnie zgłupiałem. Zrobiłem wszystko zgodnie z instrukcjami (kod kopiuj-wklej etc.). A diody zachowują się bardzo dziwnie. A konkretnie, linijka diod czasami zapomina o diodzie numer 0. Żeby znaleźć przyczynę tej usterki zmodyfikowałem kod funkcji main() (wszystko inne pozostawiłem tak samo). Teraz wygląda on tak: ws2812b_init(); HAL_Delay(1000); ws2812b_set_color(0, 32, 0, 0); ws2812b_set_color(1, 0, 32, 0); ws2812b_set_color(2, 0, 0, 32); while (1) { ws2812b_update(); HAL_Delay(250); Czyli spodziewane zachowanie to: wszystkie diody gasną na se
  4. Dzięki za kolejny odcinek. Czuję że naprawdę dużo się nauczyłem. Mam kilka pytań: 1. Pierwsza rzecz jaką spróbowałem zrobić to animacje używające funkcji trygonometrycznych do wyznaczenia koloru piksela. Szybko okazało się, że jest to masakrycznie wolne, co mnie zaskoczyło, bo pamiętałem, że STM32L4 ma FPU. W końcu udało mi się znaleźć taką stronę: https://developer.arm.com/documentation/ddi0439/b/Floating-Point-Unit/FPU-Functional-Description/FPU-instruction-set?lang=en Wynika mi z niej, że jedyna funkcja wspomagana sprzętowo przez FPU która nie jest zwykłą arytmetyką, to sqrtf. Zgadza s
  5. Robiąc ten rozdział od razu przyszło mi do głowy, że przydałoby się, gdyby można było wysyłać dowolne wiadomości, a nie tylko te predefiniowane w send_next_message - chociażby wiadomości o tym, ile razy został wciśnięty przycisk. W tym celu napisałem funkcję send_message, która wpycha tekst do bufora, a bufor jest sukcesywnie opróżniany przez HAL_UART_Transmit_IT. Wyszło mi coś takiego: char buffer[1024]; char tmp[1024]; uint8_t busy = 0; void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { if (huart==&huart2) { busy = 0; if (strlen(buffer)>0) { busy = 1; strcpy(t
  6. Ok, problem solved. Winowajca znajdował się w pliku stm32l4xx_hal_conf.h i wyglądał tak: #define TICK_INT_PRIORITY 15U /*!< tick interrupt priority */ Z jakiegoś powodu u mnie domyślnie (we wszystkich projektach) priorytet przerwania SysTick jest ustawiony na 15. Zmiana na 0 rozwiązuje problem.
  7. Witam. Mam kłopot z priorytetami. Mimo nadaniu niższego priorytetu, program cały czas zawiesza się po wciśnięciu przycisku (tymczasowo dla pętli i permanentnie dla HAL_Delay). Oto moje przerwanie: void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == UB_Pin) { counter++; //HAL_Delay(100); for (int i=0;i<10000000;i++) {} } } W kodzie funkcji MX_GPIO_Init widzę takie linijki: HAL_NVIC_SetPriority(EXTI15_10_IRQn, 8, 0); HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); Więc domyślam się, że konfiguracja jest prawidłowa. Czy jest jeszcze coś co powinienem sprawdzić? Jak e
  8. Fajny kurs, ale jednej rzeczy bardzo mi brakowało: motywacji. Chodzi o to, że po przerobieniu całego kursu nadal nie wiem do czego może mi się to przydać i jakie ogólnie ma to zastosowania. W kursie nie było ani jednego przykładu konkretnego zastosowania. Dla porównania, w kursie STM32L4 już na samym początku jest sugestia, że tego typu rozwiązania mogą być używane w terminalach płatniczych, dekoderach TV, urządzeniach medycznych itp. Samemu też łatwo wpaść na to, że można ich użyć np. do budowy robotów jako bardziej wypasiony zamiennik Arduino. A do czego można użyć FPGA? Odpowiedź
  9. Ok, udało mi się wyjść z tej sytuacji. Po prostu zrobiłem wszystko od nowa i tym razem zadziałało. Nawet zrobiłem własny eksperyment z bramką xor5 i też zadziałał. Automatyczne drzwi też zadziałały. Coś musiałem skopsać za pierwszym razem.
  10. Wydaje mi się, że nie mogę podpisać odczepów. Odczepy nie są automatycznie podpisywane jak na animacji. Natomiast gdy ja próbuję je podpisać manualnie, to nic się nie dzieje. Klikam na różne sposoby w różnych miejscach i nic się nie dzieje. Na rysunku powyżej podpisałem "wire" pomiędzy odczepem a bramką NOT a nie sam odczep. Jak zatem podpisać odczepy?
  11. Witam. Mam kłopot z bramką or4. Dostaję następujące komunikaty o błędzie: ERROR:Xst:2585 - Port <I0> of instance <XLXI_1> does not exist in definition <or4>. Please compare the definition of block <or4> to its component declaration to detect the mismatch. ERROR:Xst:2585 - Port <I1> of instance <XLXI_1> does not exist in definition <or4>. Please compare the definition of block <or4> to its component declaration to detect the mismatch. ERROR:Xst:2585 - Port <I2> of instance <XLXI_1> does not exist in definition <or4>. Please c
  12. Mnie też coś takiego od razu przyszło do głowy. Wywaliłem else ze wszystkich czterech warunków i wyszło mi, że wszystko działa ok. Tak więc podbijam pytanie: czy to else w ogóle czemuś służy?
  13. Faktycznie zadziałało - odpalając szybciej a potem zwalniając byłem w stanie zejść do 20 PWM mimo że wystartować z 20 PWM nigdy mi się nie udało. Dzięki!
  14. Dzięki. Mam jeszcze takie pytanie: gdy zapodaję pwm < 40 na oba silniki, to koła nie kręcą się tylko cicho piszczą. Czy jest to zachowanie normalne, tzn. czy oznacza to, że nie da się jechać powoli i istnieje jakaś minimalna prędkość z którą można jechać?
×
×
  • 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.