Skocz do zawartości
Komentator

Kurs STM32 F4 - #5 - Pomiar napięcia (ADC), DMA, STMStudio

Pomocna odpowiedź

Najprawdopodobniej dlatego że do zmiennej Temperature_average cały czas coś dodajesz

Temperature_average*4 + Temperature_instantaneous

po rozwinięciu div_temp, nigdy nie odejmujesz i nie dzielisz, więc po kilku iteracjach zmienna osiąga wartość maksymalną.

Udostępnij ten post


Link to post
Share on other sites
Witam. Mam problem z pomiarem w trybie blokującym. W STM Studio po imporcie zmiennych nie pojawiają mi się PomiarADC, VSense, Temperature. Jaki może być powód?

Mam również ten sam problem, czy ktoś wie może, co jest nie tak?

PROBLEM ROZWIĄZANY:

Na rysunku zaznaczyłam na czerwono obszar, w którym należy po prostu przesunąć drugą linijkę "Name.. Expression..." w dół i nasze zmienne się pokażą.

1253895528_rozwizanie.thumb.jpg.8471a4af134214d53434efecf498e3f5.jpg

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

hatamarii, super, dzięki za podzielenie się rozwiązaniem - na pewno jeszcze wiele osób skorzysta z Twojej rady 🙂

Udostępnij ten post


Link to post
Share on other sites

Cześć,

rozpocząłem niedawno kurs i mam nieustanny problem z STM Studio.

Program kompiluje się bez żadnych problemów i równie łatwo idzie zaprogramowanie płytki ale po uruchomieniu STM Studio zawsze mam zerowe wartości. Nawet stałe zmienne jak Vsense lub SupplyVoltage równe są zero a Temperature nie wspomnę bo również ma zerową wartość.

W Cube zmieniłem już SYS na Serial Wire Debug ale to nie pomogło. Na czas pracy wyłączam również Avasta aby nie przeszkadzał i też nic...

Czy ktoś miał podobny problem?

Udostępnij ten post


Link to post
Share on other sites

W którym miejscu programu sprawdzasz wartości zmiennych?

Początkowe przypisania zmiennych są wykonywane przez program w asemblerze, który jest uruchamiany przed funkcją main. Nazwa tego pliku najczęściej zawiera słowo startup, np. startup_stm32f407.s - powinieneś odszukać plik bez problemu.

W momencie rozpoczęcia funkcji main, zmienne powinny mieć już poprawną wartość. Ale jeśli zatrzymujesz program wcześniej, mogą to być zera albo losowe wartości.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Wyrzuciłem zmienne od pomiaru temperatury procka poza main-a i stm studio odczytuje wartości, tak więc połowiczny sukces jest.

Sprawdzę czy to samo uda się zrobić wykorzystując przerwania.

Dzięki za szybką odpowiedź i dam znać jak działa program z przerwaniami.

Program z przerwaniami również zaczął działać chociaż dałbym sobie paznokieć obciąć,

że przy pierwszym podejściu zrobiłem wszystko poprawnie.

Nie wiem czy to ma jakieś znaczenie ale przed uruchomieniem STM Studio wyłączam całkowicie

program Utility. Może to dziwny zbieg okoliczności albo jest w tym jakaś metoda.

Dzięki!

Udostępnij ten post


Link to post
Share on other sites

Hej, mam pytanie odnośnie korzystania z ADC, mianowicie:

Chciałbym dokonywać dwóch pomiarów i zależało by mi na zebraniu kilkudziesięciu próbek i w przypadku przekroczenia granicy sygnału na jednym z kanałów przerwać dokonywanie pomiarów do czasu wykonania się pętli głównej programu z obliczeniami.

Tu pojawia się moje pytanie jak najłatwiej to osiągnąć przerwaniami, DMA ?

A przy okazji jak tego dokonać ?

Myślałem, czy da się po każdej konwersji z 2 kanałów, wrzucić pomiary do buforów kołowych i sprawdzić, czy na jednym z nich nie został przekroczony próg, następnie wstrzymać dokonywanie pomiarów, żeby mogły się dokonać obliczenia w głównej pętli programu.

Żeby trochę rozbudować post to dodam, że planuję porównywać sygnał z dwóch mikrofonów w celu znalezienia kierunku z którego dochodzi dźwięk, dlatego zależy mi na maksymalnej prędkości pomiaru, w celu zwiększenia dokładności.

Byłbym niezmiernie wdzięczny za każdą próbę pomocy, bo przeszukuję internet już kilka dni i nie potrafię wyciągnąć jakieś przydatnej informacji zbliżającej mnie do rozwiązania problemu :/ .

Udostępnij ten post


Link to post
Share on other sites

Akamaru113, a ten program będzie robił coś jeszcze, czy ma tylko porównywać odczyty z kanałów ADC? Jeśli to jest jego jedyne zadanie, to chyba możesz zacząć od odczytywania informacji przez DMA i później normalnie porównywać wartości w pętli. Na początku powinno się udać przetestować wszystko bez przerwań 😉

Udostępnij ten post


Link to post
Share on other sites

Na początku dziękuję, za szybką odpowiedź. A mój problem udało mi się rozwiązać.

Otóż nie zdawałem sobie sprawy, że przerwanie HAL_ADC_ConvCpltCallback występuje także przy użyciu DMA, więc mogłem normalnie dokonać pomiaru dwóch sygnałów i zamiast używać ich w pętli głównej użyłem ich właśnie w callback'u w miejscu HAL_ADC_GetValue(&hadc1)

wtedy pojedynczym if'em mogę decydować, czy moja funkcja się wykona, a jak tak to dopóki się nie wykona pomiary zostają zatrzymane. Rozwiązanie bardzo proste, ale jak to w życiu bywa najtrudniej znaleźć to co leży na widoku. Odpowiadając na pytanie, to pomiary dokonywały się za szybko i pętla główna programu nie miała kiedy się wykonać (przy najmniej tak wywnioskowałem, po tym jak zwykłe dodawanie nie zwracało w STMStudio wyniku, a jedynie początkowo zadeklarowaną wartość).

Udostępnij ten post


Link to post
Share on other sites

Witam,

Mam takim problem że STM Studio wyrzuca mi bardzo dziwne liczby pod zmiennymi które są stałe w miarę poruszania JoySticka(To samo z temperaturą). STM Studio wykrywa zmienne ale na to wygląda że przypisuje im bardzo dziwne wartości. Byłbym wdzięczny za jakąkolwiek pomoc w tej sprawie.

Pozdrawiam,
Statkiewicz

Udostępnij ten post


Link to post
Share on other sites

Cześć.

Chciałbym poprosić Was o pomoc. W programie STMStudio po kliknięciu "Start" wyskakuje mi następujący błąd:

Failure pening file

C:\Users\Paweł\Documents\STMicroelectronics\STMStudio\log.txt:

No such file or directory

Czy winą tego jest nazwa katalogu, gdzie jest polski znak? W tym katalogu, plik log.txt się nie znajduje, czy powinien on być gdzieś indziej (w innych folderach z programem STMStudio również go nie znalazłem)? Czy ktoś zna sposób na rozwiązanie tego problemu?

Dodam jeszcze, że płytka nie jest połączona przez żaden inny program, ani przez debugger ani przez ST-Link Utility.

Dziękuję za fatygę i pozdrawiam.

Udostępnij ten post


Link to post
Share on other sites

Imilek, witam na forum 🙂 Bez głębszej analizy na pewno pierwszym podejrzanym będzie polski znaki w nazwie katalogu - zacząłbym od sprawdzenia tego tropu (najczęściej pomaga w podobnych sytuacjach).

Udostępnij ten post


Link to post
Share on other sites

Dziękuję za przywitanie. Miło dołączyć do Waszej społeczności 😃

Wracając jednak do mojego problemu, czy ten plik log.txt mogę wykorzystać od programu ST-Link Utility? Czy też ten plik log.txt kreuje się samoczynnie? Czy mógłby mi ktoś podrzucić go tutaj, na forum, może z tym udałoby się coś zdziałać?

Pozdrawiam serdecznie.

EDIT:

Udało się. W folderze, do którego prowadziła ścieżka, którą podałem we wcześniejszym poście nie było rzeczonego pliku Log.txt. Dlatego cały folder STMicroelectronics wyciąłem z "Dokumentów" i przeniosłem do folderu Temp. Oczywiście nadal nie działało, dlatego znalazłem plik Log.txt w folderze od programu STM32 ST-LINK Utility (folder nazywał się ST-LINK Utility i znajdował się w folderze Dokumenty). Owy plik .txt przekopiowałem do folderu Temp\STMicroelectronics\STMStudio i po tych wszystkich zabiegach, program STMStudio zaczął łączyć się z moim mikrokontrolerem i zaczął pokazywać interesujące mnie zmienne.

Dziękuję za wsparcie i pozdrawiam. 😃

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Imilek, dziękuję za opisywanie rozwiązania - na pewno przyda się komuś w przyszłości 🙂

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...