Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Wyszukaj w ofercie 200 tys. produktów TME
Proszę, dodaj wyjątek elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32L053 - ADC w trybie multichannel

.:KoSik:. 06 Sie 2017 00:52 825 16
  • #1 06 Sie 2017 00:52
    .:KoSik:.
    Poziom 18  

    Witam!

    Jakoś nie mogę ogarnąć tego pomiaru... Odpaliłem ADC w STM32L053 na płycie discovery. Działa bez zarzutu na jednym kanale. Udało mi się uruchomić 2 kanały z DNA. Jednak, po pierwsze - już przy trzech pomiary zaczynają pływać/błędne odczyty, po drugie - jako, że mikrokontroler planuję wybudzać na chwile tylko co ok. 10 minut by zrobić sekwencję pomiarów używanie DNA uważam za bezcelowe.
    Nie bardzo rozumiem jak działa w tym mikrokontrolerze taki pomiar na wielu kanałach. Z STM32F4 nie miałem problemu. Jednak w tym jest to jakoś inaczej rozwiązane.
    Próbuję na różne sposoby i nic... Jedno z rozwiązań jest np. takie:

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Konfiguracja przetwornika:
    STM32L053 - ADC w trybie multichannel

  • #3 07 Sie 2017 10:39
    .:KoSik:.
    Poziom 18  

    Po co ta ironia? Nie masz ochoty pomóc to nie pomagaj...

  • #4 07 Sie 2017 11:05
    Piotrus_999
    Poziom 39  

    .:KoSik:. napisał:
    Po co ta ironia? Nie masz ochoty pomóc to nie pomagaj...
    A czego oczekiwaleś? Gdzie kod? Chyba nie te 2 linijki? Jak można Ci pomóc?

  • #5 07 Sie 2017 11:19
    .:KoSik:.
    Poziom 18  

    Nie wkleiłem kodu ponieważ: po pierwsze mój problem nie dotyczy błędu w programie, a braku wiedzy jak używać tego trybu. Po drugie poza podstawowa konfiguracja i wysłaniem danych na USB nic w nim więcej nie ma. Z uwagi na to uznałem, że kod nie będzie potrzebny.
    Jeśli jest taka potrzeba to zamiast używać trybu trola internetowego wystarczy napisać coś w stylu "proszę wkleić kod" 😉
    W tej chwili jestem w pracy. Kod wkleję dopiero wieczorem.

    Moderowany przez tmf:

    3.1.9. Nie ironizuj i nie bądź złośliwy w stosunku do drugiej strony dyskusji.

    Aby uzyskać pomoc potrzebe są informacje, proszę je zamieścić. Proszę też nie obrażać osób, które chcą ci pomóc.

  • #6 07 Sie 2017 20:00
    .:KoSik:.
    Poziom 18  

    Cytat:
    3.1.9. Nie ironizuj i nie bądź złośliwy w stosunku do drugiej strony dyskusji.

    Aby uzyskać pomoc potrzebe są informacje, proszę je zamieścić. Proszę też nie obrażać osób, które chcą ci pomóc.


    Nigdy nie obrażam osób które chcą mi pomóc. Nie obrażam też tych którzy traktują mnie z szacunkiem. Jeżeli nie zamieściłem wszystkich potrzebnych informacji to można normalnie o nie zapytać.
    To jest "chyba" (bo teraz już zaczynam mieć wątpliwości) również forum dla amatorów więc mogę nie wiedzieć?

    Wracając do tematu...
    Jako, że próbowałem to rozwiązać trochę inaczej, kod trochę się różni. Teraz po skończeniu każdego z pomiarów program wchodzi w przerwanie i tam zapisuje ADC do zmiennej po czym wykonuje kolejny pomiar. Tak przynajmniej miało to działać. Niestety nie działa. W odczytach same 0.

    Kod: c
    Zaloguj się, aby zobaczyć kod



    W załączniku cały plik main.c. Jeśli będzie taka potrzeba mogę wrzucić cały projekt.

  • #7 07 Sie 2017 20:49
    Piotrus_999
    Poziom 39  

    Z HAL-em mało mam do czynienie ale jedna uwaga - ind musi być volatile - nie ma do nie go poza collbackiem odniesienia w tym pliku i przykazdej optymalizacji ind++ zostanie z dużym prawdopodobieństwem wyoptymalizowany. Jezeli wartości będą "pływać" to proponuję zwiększyć czas samplowania.

  • #8 07 Sie 2017 20:55
    .:KoSik:.
    Poziom 18  

    ustawiana gdy wszystkie konwersje gotowe

  • #10 07 Sie 2017 20:59
    .:KoSik:.
    Poziom 18  

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Wedle opisu to ta flaga jest ustawiana gdy wszystkie konwersje skończone.
    EOC - po jednej konwersji
    EOS - po całej sekwencji

    DMA też nie działa mi tak jak trzeba. Dwa pomiary działają, 3 już nie... Poza tym DMA odczytuje ciągle ADC, a ja potrzebuje tylko sekwencję odczytów co jakieś 10 minut. Konfiguruję wszystko za pomocą CubeMX i pewnie można odpalić DMA "w locie" ale nie bardzo wiem jak się za to zabrać...

  • #11 07 Sie 2017 21:16
    Piotrus_999
    Poziom 39  

    .:KoSik:. napisał:
    Poza tym DMA odczytuje ciągle ADC
    Nie prawda

    Następny krok - proponuję porzucić HAL-a. Ja nie wiem jakim cudem to jest ustawiane przez HAL-a. W zależności od konfiguracji flaga jest ustawiana po każdej konwersji, lub po całym cyklu. HAL penie to liczy jakoś wewnętrznie bo sprzętowych mechanizmów nie ma żeby i jedno i drugie.

    Jeżeli te pomiary są rzadko to ustaw max samplowanie

  • #12 07 Sie 2017 21:21
    .:KoSik:.
    Poziom 18  

    Nie ustawiane...

    Kod: c
    Zaloguj się, aby zobaczyć kod



    Kod: c
    Zaloguj się, aby zobaczyć kod


    Z HAL dobrze mi się pracuje. Dla mnie to tylko hobby i HAL dużo upraszcza...

    Poprawiłem ind na volatile. Bez efektu.
    Nie rozumiem co się dzieje:
    STM32L053 - ADC w trybie multichannel
    ind - kolejny pin ADC.

  • #13 07 Sie 2017 21:26
    Piotrus_999
    Poziom 39  

    W tym rocku rzeczywiście tak - pisałes o F4 i to mnie zmyliło - spojrzałem w RM-a

    Czy HAL prostszy - ustawinie konwersji dla 4 kanałów jest jak widać ciężkie - na rejestrach zrobiłbyś w 10 minut.

  • #14 07 Sie 2017 21:30
    .:KoSik:.
    Poziom 18  

    Masz rację ale odpalenie wyświetlacza RGB na F4 już prostsze nie jest :P

    Przecież to powinno być proste...

  • #15 07 Sie 2017 21:46
    Piotrus_999
    Poziom 39  

    .:KoSik:. napisał:
    Masz rację ale odpalenie wyświetlacza RGB na F4 już prostsze nie jest
    jest - jedyne to USB i Ethernet

    Dodano po 4 [minuty]:

    Jedyne co moge zaproponowac t ozobaczyc jak po tych super iniclalizacjach ustawione są rejestry.

  • #16 07 Sie 2017 21:55
    .:KoSik:.
    Poziom 18  

    Może jednak ugryzę to DMA? Spróbuje pozmieniać czasy pomiarów. Nie potrzebuję jakiejś super precyzji...

    Czyli mogę DMA włączyć tylko na chwilę i później wyłączyć przed uśpieniem procka? Czy przechodząc w tryb stopMode sam się wyłączy?

 Szukaj w ofercie
Zamknij 
Wyszukaj w ofercie 200 tys. produktów TME