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

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

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!

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

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.