Ta strona używa ciasteczek (plików cookies), dzięki którym może działać lepiej. Dowiedz się więcejRozumiem i akceptuję

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

Autor Wiadomość
Lukaszm 



Posty: 622
Pomógł: 27 razy
Otrzymał 29 piw(a)
Skąd: Warszawa
Programuję w:
C, C++, MATLAB
Wysłany: 06-05-2017, 11:39   

Najprawdopodobniej dlatego że do zmiennej Temperature_average cały czas coś dodajesz
Kod programu: Zaznacz cały
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ą.

Postaw piwo autorowi tego posta
 
 
amilo_pa 



Posty: 13
Wysłany: 07-05-2017, 12:44   

Hej,
Dzięki, pomogło :)

Postaw piwo autorowi tego posta
 
 
hatamarii 



Posty: 17
Otrzymał 5 piw(a)
Skąd: Jaworzno
Wysłany: 08-06-2017, 12:30   

Dones napisał/a:
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żą.


rozwiązanie.jpg
Plik ściągnięto 56 raz(y) 52.8 KB

Ostatnio zmieniony przez hatamarii 08-06-2017, 13:20, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 
 
Więcej szczegółów
Wystawiono 1 piw(a):
Treker
Treker 




Posty: 8322
Pomógł: 123 razy
Otrzymał 515 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 08-06-2017, 19:24   

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


Na udzielam odpowiedzi na pytania techniczne zadawane kanałami prywatnymi (maile, komunikatory, PW).
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
Jarmuch 



Posty: 2
Wysłany: 19-11-2017, 18:24   

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?

Postaw piwo autorowi tego posta
 
 
Elvis 



Posty: 1608
Pomógł: 99 razy
Otrzymał 279 piw(a)
Skąd: wawa
Programuję w:
C, asm
Wysłany: 19-11-2017, 18:46   

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.

Postaw piwo autorowi tego posta
 
 
Więcej szczegółów
Wystawiono 1 piw(a):
Jarmuch
Jarmuch 



Posty: 2
Wysłany: 19-11-2017, 19:31   

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!

Ostatnio zmieniony przez Jarmuch 19-11-2017, 20:09, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 
 
Akamaru113 



Posty: 4
Skąd: Warszawa
Wysłany: 27-12-2017, 17:10   

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 :/ .

Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 8322
Pomógł: 123 razy
Otrzymał 515 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 28-12-2017, 17:24   

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ń ;)


Na udzielam odpowiedzi na pytania techniczne zadawane kanałami prywatnymi (maile, komunikatory, PW).
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
Akamaru113 



Posty: 4
Skąd: Warszawa
Wysłany: 04-01-2018, 16:43   

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ść).

Ostatnio zmieniony przez Akamaru113 04-01-2018, 19:40, w całości zmieniany 2 razy  
Postaw piwo autorowi tego posta
 
 
MaStat 



Posty: 1
Wysłany: 19-02-2018, 22:24   

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

Postaw piwo autorowi tego posta
 
 
Imilek 



Posty: 2
Otrzymał 1 piw(a)
Wysłany: 14-03-2018, 20:00   

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.

Ostatnio zmieniony przez Imilek 14-03-2018, 20:02, w całości zmieniany 1 raz  
Postaw piwo autorowi tego posta
 
 
Treker 




Posty: 8322
Pomógł: 123 razy
Otrzymał 515 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 15-03-2018, 12:42   

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).


Na udzielam odpowiedzi na pytania techniczne zadawane kanałami prywatnymi (maile, komunikatory, PW).
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
Imilek 



Posty: 2
Otrzymał 1 piw(a)
Wysłany: 16-03-2018, 17:31   

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

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. :D

Ostatnio zmieniony przez Imilek 16-03-2018, 19:19, w całości zmieniany 4 razy  
Postaw piwo autorowi tego posta
 
 
Więcej szczegółów
Wystawiono 1 piw(a):
Treker
Treker 




Posty: 8322
Pomógł: 123 razy
Otrzymał 515 piw(a)
Skąd: Gdynia
Programuję w:
C, Arduino
Moje roboty:
Spectrum, Fuzzy

Wysłany: 18-03-2018, 20:44   

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


Na udzielam odpowiedzi na pytania techniczne zadawane kanałami prywatnymi (maile, komunikatory, PW).
Sprawdź » Kurs ARDUINOKurs podstaw elektronikiZbuduj swojego robota - kurs!
Postaw piwo autorowi tego posta
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Wersja do druku

Skocz do:  

Nie rozwiązałeś swojego problemu? Zobacz podobne tematy: Kurs STM32 - #2 - Po... Kurs STM32 - #3 - Pł... Kurs STM32 - #4 - St... Kurs STM32 - #1 - Za...
lub przeszukaj forum po wybranych tagach: adc, dma, f4, kurs, napiecia, pomiar, stm32, stmstudio


Powered by phpBB modified by Przemo © 2003 phpBB Group
Popularne kursy: Arduinopodstawy elektroniki