Skocz do zawartości

STM32 Uzyskiwanie więcej EXTI


Kibzik

Pomocna odpowiedź

🙂 Witam! (jestem nowy - nie bijcie)

Mam pomysł na projekt w którym koniecznie potrzebuję wykorzystać mechanizm przerwania.

Sęk w tym, że potrzebuje sporo pinów skonfigurowanych jako EXTI (>>16).

Zdążyłem się zorientować, że mając np. 16 linii (PA0-PA15, PB0-PB15...) jesteśmy w stanie uzyskać jedynie 16 EXTI np. na: PA0,PA1,PB2... !Nie można np. PA0,PB0 (bo to jest na jednej linii i to jest połączone z multiplekserem i ogólnie nic z tego nie będzie :/ ).

Proszę was o poradę. Czy jest jakaś szansa by uzyskać taką ilość (>>16) zewnętrznych przerwań.

Pozdrawiam JKR. 🙂

Link do komentarza
Share on other sites

Kibzik, a jakiej konkretnie ilości przewidujesz i co to dokładnie ma być? Czy musisz rozpoznawać konkretne przerwania, czy może wystarczą grupy przerwań?

  • Lubię! 1
Link do komentarza
Share on other sites

Nawet do 100 EXTI....

Chodzi o obsługę klawiatury (takiej jak przy instrumentach).

Nie rozumiem za bardzo co to znaczy "grupa"?

Dzięki za odpowiedź.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Jak myślisz, dlaczego w żadnym procesorze nie znajdziesz tylu osobnych przerwań zewnętrznych? Bo to nie jest potrzebne. W tym szczególnym przypadku: żadna klawiatura tak nie działa. W żadnym systemie klawisze nie pracują na sprzętowych przerwaniach procesora. Ok, są tutoriale "Jak podłączyć przycisk do przerwania w Arduino" ale to dziecinada. Trzeba coś podłączyć żeby pokazać ideę, to wstawia się przycisk.. Że też każdy musi od nowa wyważać te drzwi. Spoko, to nie jest bicie, więc nie płacz. Po prostu wymyśliłeś sobie coś (tym razem bez sensu, ale przecież to nie musi być regułą) i poszedłeś za pierwszą myślą jaka przyszła Ci do głowy. No więc nie. Jeśli Twoja klawiatura jest matrycą(?) czysto mechanicznych zestyków, to nie potrzebuje ona przerwań - nawet jednego. A jeśli wymyśliłeś jakieś high-endowe rozwiązanie z pomiarem prędkości wciskania (velocity sensing) i/lub siły nacisku (after-touch sensing) jak to jest w zwyczaju w syntezatorach (robiłem takie 20 lat temu), to zrób jej osobny kontroler wysyłający komunikaty (niechby i w MIDI lub po UART) do głównego proca.

Popatrz na to w ten sposób: jak wiele rzeczy może wydarzyć się na klawiaturze i jak dużej mocy obliczeniowej potrzebuje jej obsługa? Możesz wcisnąć co najwyżej 10 klawiszy na raz i robić tak 10 razy na sekundę? Nie? No to masz górne ograniczenie: 200 zdarzeń/s (100 wciśnięć i 100 puszczeń). Nawet jeśli będziesz skanował klawiaturę 1000 razy na sekundę i zajmie to za każdym razem 50us (kosmos) to zużywasz tylko 50ms/s czyli 5% mocy procesora. I to robiąc skany całkowicie pasywnie, żadnych przerwań oprócz timera wyznaczającego podstawę czasu. Z taką klawiaturą (nawet >100 klawiszy) poradzi sobie najprostsza ATmega i jeszcze zostanie jej mnóstwo mocy na robienie innych rzeczy..

Opisz dokładniej swój projekt to zastanowimy się wspólnie jak to zoptymalizować, bo możesz mieć tam więcej podobnych ciekawostek.

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.