logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

STM32F303RET6 - sterowanie 24 wyjściami za pomocą timera i wejścia startowego

L4y0uts 18 Sty 2023 21:21 681 12
REKLAMA
  • #1 20392837
    L4y0uts
    Poziom 8  
    Posty: 25
    Ocena: 3
    Dzień dobry mądre głowy,

    z racji na fakt iż w pracy coraz częściej spotykam się z mikrokontrolerami STM32 zakupiłem STM32F303RET6 na płycie NUCLEO by nauczyć się podstaw programowania i języka C. Jakiś czas temu wpadłem na pomysł zrobienia testera do pracowni i teraz zastanawiam się czy z wykorzystaniem wyżej wymienionego mikrokontrolera będę w stanie napisać program, który pozwoli mi wysterować 24 wyjścia jedno po drugim w jednakowych odstępach czasu? W zasadzie chodzi o to, by zaprogramować jakieś wejście które uruchomi timer, który w następstwie wysteruje mi 24 wyjścia jedno po drugim w jednakowych odstępach czasu. Czy taki scenariusz jest możliwy do wykonania z wykorzystaniem tego mikrokontrolera?
  • REKLAMA
  • #2 20392887
    inot
    Poziom 38  
    Posty: 3505
    Pomógł: 434
    Ocena: 784
    L4y0uts napisał:
    wysteruje mi 24 wyjścia jedno po drugim

    Chodzi o wyjścia samego mikrokontrolera albo jakiś dodatkowy układ ?
  • REKLAMA
  • #3 20392929
    tmf
    VIP Zasłużony dla elektroda
    Posty: 14318
    Pomógł: 2090
    Ocena: 2203
    L4y0uts napisał:
    Czy taki scenariusz jest możliwy do wykonania z wykorzystaniem tego mikrokontrolera?

    To jeszcze napisz o jakich czasach mówimy i jaka ma być precyzja. Bo jeśli mówimy o czasach rzędu mikrosekund i więcej, to każdy MCU z 24 wyjściami się nada. Jeśli mówimy o czasach rzędu ns, to tym bardziej musisz sprecyzować oczekiwania, aby dobrać pod to hardware.
  • #4 20392959
    L4y0uts
    Poziom 8  
    Posty: 25
    Ocena: 3
    inot napisał:
    L4y0uts napisał:
    wysteruje mi 24 wyjścia jedno po drugim

    Chodzi o wyjścia samego mikrokontrolera albo jakiś dodatkowy układ ?


    W zasadzie chodzi o to, by w odstępach około 80-100 milisekund wysterować ledy podpięte do wyjść mikrokontrolera (24 sztuki) jedna po drugiej.

    tmf napisał:
    To jeszcze napisz o jakich czasach mówimy i jaka ma być precyzja. Bo jeśli mówimy o czasach rzędu mikrosekund i więcej, to każdy MCU z 24 wyjściami się nada. Jeśli mówimy o czasach rzędu ns, to tym bardziej musisz sprecyzować oczekiwania, aby dobrać pod to hardware.


    Tak jak wyżej, odstępy około 80-100 ms / precyzji żadnej nie potrzeba - wystarczy dokładność do kilku ms, resztę ma już ogarnąć elektronika poza układem.

    Czyli panowie rozumiem, że w dużym skrócie od strony programowania będzie to wyglądać tak, że trzeba napisać timer który zliczy 24x prędkością 80-100 ms i można napisać mu scenariusz, by wejście go aktywowało i następnie licząc sekwencję 24x za każdym zliczeniem wystawił inne wyjście?
  • REKLAMA
  • Pomocny post
    #5 20392977
    inot
    Poziom 38  
    Posty: 3505
    Pomógł: 434
    Ocena: 784
    Można to zrealizować tak, że timer wywołuje interrupt. Jego procedura zmienia za każdym razem inne wyjście.
  • #6 20395935
    L4y0uts
    Poziom 8  
    Posty: 25
    Ocena: 3
    Zdaje się, że ogarnięcie tego tematu chwile mi zajmie, zaczynając od podstaw programowania, nie znając języka C, a niestety akurat w tym temacie bardzo goni mnie czas, czy nie znacie może jakiegoś forum, gdzie można zlecić napisanie takiego timera?
  • #7 20395995
    miszcz310
    Poziom 25  
    Posty: 717
    Pomógł: 46
    Ocena: 178
    Czy to musi być C? Może weź po prostu Arduino i zaprogramuj przez Arduino. Co do nauki to bez C może być ciężko. Z peryferiów to w zasadzie musisz umieć "tylko" obsługę portów i obsługę jednego timera. Jeżeli to nie musi być mega dokładne, to może nawet dałoby się "wygenerować" prawie gotowy kod z STM32Cube. Spróbuj może przez ten weekend sam coś ogarnąć i po weekendzie jak będzie bez nadziei, wtedy ogarniaj speca jakiegoś.
  • REKLAMA
  • #9 20396277
    Chivo
    Poziom 27  
    Posty: 1324
    Pomógł: 81
    Ocena: 130
    Na jutro mogę przygotować program w HAL który z opóźnieniem 100ms będzie wystawiał stan wysoki na kolejnych bitach portu A. Będziesz miał przykład dla siebie.
  • #10 20396799
    Konto nie istnieje
    Poziom 1  
  • #11 20396911
    excray
    Poziom 41  
    Posty: 5498
    Pomógł: 739
    Ocena: 655
    L4y0uts napisał:
    czy z wykorzystaniem wyżej wymienionego mikrokontrolera będę w stanie napisać program

    To już tylko Ty wiesz. My możemy Ci podpowiedzieć algorytm.
    L4y0uts napisał:
    czy nie znacie może jakiegoś forum, gdzie można zlecić napisanie takiego timera?

    Nawet tutaj. Napisz budżet, oczekiwania i czas realizacji. Na PW dostaniesz oferty
  • #12 20398241
    inot
    Poziom 38  
    Posty: 3505
    Pomógł: 434
    Ocena: 784
    Autor tematu nie napisał w jakim środowisku programistycznym ma zamiar pracować.
    Do wyboru:
    STM32 Cube IDE, zawiera Cube MX,
    Wtyczki GNU MCU dla Eclipse,
    Wtyczka VisualGDB dla programu Visual Studio (tylko Windows),
    Wtyczka stm32-for-vscode dla Visual Studio Code,
    Keil MDK płatny, dla profesjonalistów (tylko Windows).

    Inne oprogramowanie:

    Generator kodu STM32 Cube MX dla HAL został zintegrowany z Cube IDE
    Programator Cube STM32 do flashowania z adapterem ST-Link, portem szeregowym lub USB
    Narzędzie ST-Link do wyświetlania komunikatów śledzenia i flashowania z adapterem ST-Link (przestarzałe, tylko Windows)
    Demonstrator Flash Loader do flashowania przez szeregowy program ładujący (przestarzałe, tylko Windows)
    DfuSe do flashowania przez program ładujący USB (przestarzałe, tylko Windows)
    Narzędzie ST-Link do flashowania z adapterem ST-Link
    STM32 Flash do flashowania przez szeregowy program ładujący
  • #13 20399382
    Konto nie istnieje
    Poziom 1  

Podsumowanie tematu

✨ Użytkownik planuje stworzyć tester do pracowni z wykorzystaniem mikrokontrolera STM32F303RET6, który ma sterować 24 wyjściami w odstępach 80-100 ms. W odpowiedziach zasugerowano użycie timera do generowania przerwań, które będą zmieniać stan wyjść. Wskazano również na możliwość użycia układów typu shift register (74HC595, 74HC165) do rozszerzenia liczby wyjść. Użytkownik rozważa naukę programowania w języku C, ale pojawiły się sugestie dotyczące użycia Arduino jako prostszej alternatywy. Dodatkowo, omówiono różne środowiska programistyczne, takie jak STM32 Cube IDE oraz inne narzędzia do programowania i flashowania mikrokontrolerów STM32.
Wygenerowane przez model językowy.
REKLAMA