Skocz do zawartości

Przeszukaj forum

Pokazywanie wyników dla tagów 'ADC'.

  • Szukaj wg tagów

    Wpisz tagi, oddzielając przecinkami.
  • Szukaj wg autora

Typ zawartości


Kategorie forum

  • Elektronika i programowanie
    • Elektronika
    • Arduino i ESP
    • Mikrokontrolery
    • Raspberry Pi
    • Inne komputery jednopłytkowe
    • Układy programowalne
    • Programowanie
    • Zasilanie
  • Artykuły, projekty, DIY
    • Artykuły redakcji (blog)
    • Artykuły użytkowników
    • Projekty - roboty
    • Projekty - DIY
    • Projekty - DIY (początkujący)
    • Projekty - w budowie (worklogi)
    • Wiadomości
  • Pozostałe
    • Oprogramowanie CAD
    • Druk 3D
    • Napędy
    • Mechanika
    • Zawody/Konkursy/Wydarzenia
    • Sprzedam/Kupię/Zamienię/Praca
    • Inne
  • Ogólne
    • Ogłoszenia organizacyjne
    • Dyskusje o FORBOT.pl
    • Na luzie
    • Kosz

Szukaj wyników w...

Znajdź wyniki, które zawierają...


Data utworzenia

  • Rozpocznij

    Koniec


Ostatnia aktualizacja

  • Rozpocznij

    Koniec


Filtruj po ilości...

Data dołączenia

  • Rozpocznij

    Koniec


Grupa


Znaleziono 2 wyniki

  1. Dzień dobry, Korzystam z STM32F103C8, oprogramowanie CUBEIDE, debugowanie st-link v2. Problem polega na tym, że dobrze działające DMA w circular mode zawiesza program gdy dodaję do niego 4 linie obliczeń (sinusy, cosinusy, arcusy), #include <math.h> wpisałem. obliczenia z wyłączoną konwersją również wykonują się poprawnie /* USER CODE BEGIN 0 */ void set_coordinate (void) { ST=hour+(4*(18-15)); D = 23.45f*sinf(360*((284.f+day_of_year)/365)*rad)*rad;//////////////////////////////////blad Height = asinf(sinf(D)*sinf(W)+cosf(D)*cosf(W)*cosf((15*(hour-12))*rad))*rad;// nie dochodzi do tych obliczen A = acosf((sinf(D)-sinf(Height)*sinf(W))/(cosf(Height)*cosf(W)))*deg; H=Height*deg; } /* USER CODE BEGIN 2 */ HAL_ADC_Start_DMA(&hadc1, adc_val, 4); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ // set_coordinate(); motor_rad_1 = adc_val[0]/13.65;//podzielic przez zakres 4095/300 stopni motor_rad_2 = adc_val[1]/13.65; } /* USER CODE END 3 */ } hadc1.Instance = ADC1; hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; hadc1.Init.ContinuousConvMode = ENABLE; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.NbrOfConversion = 4; if (HAL_ADC_Init(&hadc1) != HAL_OK) { Error_Handler(); } /** Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_1; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN ADC1_Init 2 */ /* USER CODE END ADC1_Init 2 */ } /* Enable DMA controller clock */ static void MX_DMA_Init(void) { /* DMA controller clock enable */ __HAL_RCC_DMA1_CLK_ENABLE(); /* DMA interrupt init */ /* DMA1_Channel1_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); } Z kodu wyciąłem tylko najważniejsze rzeczy, mogę zamieścić dodatkowo screeny z konfiguracji ADC,DMA Nie wyskakuje żaden błąd, tylko program zawiesza się na liniach obliczeń. Dlaczego obliczenia zawieszają program? Czy to nie jest tak, że DMA nie korzysta z procesora? Moim pomysłem byłoby zastosowanie wyzwalania konwersji przez licznik, wykonywanie jej co 200 ms, ale nie wiem, czy ma to sens, drugim pomysłem jest odczyt ADC zaraz po obliczeniach, ale nie mam pojęcia jak się do tego zabrać. z góry dziękuję za odpowiedź
  2. Aktualnie pracuję nad tym kursem: https://forbot.pl/blog/kurs-stm32-f4-5-pomiar-napiecia-adc-dma-stmstudio-id13099 tylko na plytce stm32f303re Znalazłem w dokumentacji mikrokontrolera dane do przeliczania wyniku na stopnie celsjusza, nie wiem czy błąd jest w danych czy w czymś innym ale temperatura znacznie odbiega od tej jaka powinna wyjść według kursu. U mnie jest 40 stopni zas wedlug kursu powinna byc chyba zblizona do temperatury otoczenia. Czy ktos moze mi sprawdzic czy znalazlem poprawne dane i napisalem dobrze kod? Największe wątpliwości mam co do maksymalnego napiecia zasilania. Poniżej zamieszczam screeny ze znalezionymi danymi oraz kod.
×
×
  • Utwórz nowe...