Pytanie:
Skąd wiadomo, czy 8-bitowy MCU jest wystarczający, czy 16-bitowy MCU jest potrzebny?
quantum231
2015-04-20 04:46:14 UTC
view on stackexchange narkive permalink

16-bitowe mikrokontrolery są potężniejsze niż 8-bitowe, a 32-bitowe są na zupełnie innym poziomie. Mając to na uwadze, chociaż możemy zdecydować, jakich urządzeń peryferyjnych potrzebujemy do aplikacji i spróbować znaleźć najtańszą (i łatwą w użyciu, tj. Łańcuch narzędzi) alternatywę, skąd wiadomo, czy do aplikacji powinien być używany 8-bitowy mikrokontroler albo 16-bitowy czy 32-bitowy?

Rozumiem różnice między nimi, więc postawię pytanie w inny sposób.

Powiedzmy, że mam aplikację w który będę miał wyświetlacz LCD służący do wyświetlania obrazu bitmapowego, 16-klawiszową klawiaturę, brzęczyk, czujnik temperatury i wilgotności oraz wejście myszy. Wysokiej klasy 8-bitowy mikrokontroler może z łatwością wykonywać wszystkie te czynności w czasie rzeczywistym. Teraz, jeśli przejdę na kolorowy wyświetlacz LCD, być może będę potrzebował 32-bitowego mikrokontrolera, który może wystarczająco szybko zaktualizować kolorowy wyświetlacz i ma więcej pamięci. Jednak mogę się dowiedzieć, że mój wysokiej klasy 8-bitowy mikrokontroler jest słaby dopiero po wypróbowaniu go w projekcie.

Więc zanim zaczniemy pracę nad projektem, skąd mamy wiedzieć, jaki rozmiar i ile potężnego mikrokontrolera jest potrzebne do projektu?

Rzeczywiście powinieneś dokonać oszacowania, tak jak już zrobiłeś.Zadania w czasie rzeczywistym / szybkie często wymagają MCU, przetwarzanie obrazu / zaawansowane wejście / wyjście (nie tak-tak-czasowe) działa lepiej z ARM. Zasadniczo możesz przyjrzeć się, jakie projekty ma Arduino w porównaniu z Raspberry Pi. Chociaż istnieją nawet 32-bitowe MCU, które mogą robić naprawdę niesamowite rzeczy.Sprawdź, co jest ważne dla Twojego projektu, weź coś rozsądnego, w razie potrzeby zawsze możesz zmniejszyć skalę.
Siedem odpowiedzi:
Nick Alexeev
2015-04-20 11:06:11 UTC
view on stackexchange narkive permalink

Zazwyczaj decyzja dotycząca mikrokontrolera jest równowagą między:

  1. Specjalnymi funkcjami (na przykład niskim zużyciem energii)
  2. Czasem rozwoju.
  3. Koszt towarów w produkcji.

Jeśli krótki czas rozwoju ma większy priorytet niż koszt towarów, wybierz bardziej muskularny kontroler. Optymalizację kosztów można przeprowadzić później jako osobny etap. Przedwczesna optymalizacja kosztów [sic] często psuje projekty.

Jeśli jesteś już na etapie optymalizacji kosztów, zaczynasz od działającego produktu. Wczesna niezoptymalizowana wersja działa jako prototyp dla zoptymalizowanej wersji. Wczesna wersja spełnia wymagania.

Podobne: Jak wybrać platformę MCU?

Nikt nie uwierzyłby, jak uniwersalny jest łańcuch (lub cykl, jeśli chcesz) ** projekt-implement-przegląd **.
MarkU
2015-04-20 07:15:56 UTC
view on stackexchange narkive permalink

zanim zaczniemy pracę nad projektem, skąd wiemy, jaki rozmiar i ile potężnego mikrokontrolera jest potrzebny do projektu?

Nie możesz wiedzieć. I to jest duży problem. Jeśli wybierzesz mikrokontroler, który jest za mały, możesz zabraknąć zasobów (pamięci / pinów / rejestrów / innych funkcji) i te zasoby mogą być trudne do dokładnego oszacowania, dopóki nie będzie za późno. Ale jeśli wybierzesz mikrokontroler, który jest zbyt duży, płacisz za zasoby, których nie używasz, a to zwiększa koszt systemu.

Czasami możesz zgadnąć, ile różnych zasobów aplikacja będzie potrzebować ... jeśli na przykład wykonywałeś obliczenia FFT, możesz obliczyć dokładną ilość pamięci, jakiej będą wymagać próbki. Ale trudniej jest wiarygodnie określić, ile miejsca w kodzie obiektowym będzie wymagało oprogramowanie, dopóki nie zostanie napisane.

Dobrym zabezpieczeniem przed wyczerpaniem pamięci kodu jest wybranie rodziny mikrokontrolerów, która jest skalowalne w kilku różnych punktach ceny / wydajności. To jest duży punkt sprzedaży ARM , Microchip PIC , Atmel AVR i innych skalowalnych mikro. Podczas opracowywania oprogramowania możesz przejść z większego systemu programistycznego do mniejszego systemu docelowego, utrzymując niski koszt końcowego produktu.

Skalowalność oznacza, że ​​wszystkie mikrokontrolery z tej rodziny mają (głównie) ten sam zestaw instrukcji i (w większości) te same rejestry. Więc oprogramowanie napisane dla jednego będzie działać na innym w tej samej rodzinie. (Kod Microchip PIC nie będzie działał na ARM, ale jeśli nauczysz się PIC14, łatwo będzie przejść do PIC12 lub do PIC16.)

Jeśli budujesz tylko jednorazowy prototyp zamiast pełnej linii produktów produkcyjnych, najlepszym rozwiązaniem jest pozostanie przy systemie rozwoju, który jest nieco większy niż myślisz, że potrzebujesz, ale ma miejsce na rozwój.

tcrosley
2015-04-20 07:22:46 UTC
view on stackexchange narkive permalink

Ważnym czynnikiem jest rozmiar najczęściej używanych zmiennych. Jeśli używasz głównie 8-bitowych zmiennych i potrzebujesz tylko dostępu do 8-bitowych portów, prawdopodobnie możesz sobie poradzić z 8-bitowym MCU.

Jednak jeśli masz dużo 16- zmienne bitowe, a nawet tylko kilka 32-bitowych długości, będziesz musiał przyjrzeć się 16-bitowemu (lub nawet 32-bitowemu) MCU, ponieważ dostęp do 16-bitowych zmiennych za pomocą 8-bitowego MCU zajmuje dużo czasu kodu.

A jeśli zamierzasz używać jakichkolwiek zmiennych zmiennoprzecinkowych, zdecydowanie sugeruję 16-bitowe lub 32-bitowe MCU.

Nawet jeśli nie masz czas na napisanie dużej części kodu, którego będziesz potrzebować, sugeruję napisanie jego części wcześniej i skompilowanie dla dowolnego mikrokontrolera, którego możesz używać. Większość producentów mikrokontrolerów ma darmowe wersje swoich kompilatorów, być może ograniczone przez rozmiar pliku wyjściowego lub przez ograniczenie ilości optymalizacji.

Jeanne Pindar
2015-04-20 06:56:23 UTC
view on stackexchange narkive permalink

Idealnie, zanim zaprojektujesz nową tablicę, wykonasz projekt weryfikujący koncepcję, korzystając z płytki rozwojowej (lub dowolnej dostępnej na rynku tablicy) lub tablicy pozostałej z jednego z poprzednich projektów.

sweber
2015-04-20 13:03:10 UTC
view on stackexchange narkive permalink

Zwykle 32-bitowe jednostki MPU są często szybsze ze względu na wyższą częstotliwość, ale także ze względu na ich możliwości lub pewne `` sztuczki '', które potrafią.

Jak powiedział @tcrosley, 32-bitowy MCU może dodać dwa 32-bitowe liczby całkowite za jednym razem, podczas gdy 8-bitowe MCU będzie musiało to zrobić bajt po bajcie. Liczby zmiennoprzecinkowe wymagają co najmniej 16 bitów, a ich matematyka jest bardziej złożona, co oznacza dużo pracy dla 8-bitowego MCU. 32-bitowy mikrokontroler może wykonywać obliczenia na sprzęcie, więc jeszcze raz za jednym razem. Jedną ze sztuczek może być dodanie czterech 8-bitowych zmiennych naraz. Załaduj cztery 8-bitowe wartości do rejestru i dodaj 8-bitowe wartości do każdej z nich.

Ale to nie wszystko.
Przyjrzyj się też dokładnie peryferiom sprzętowym, które niekoniecznie są większe potężny na 32-bitowych mikrokontrolerach!
Doświadczenie:

Na mojej uczelni zbudowaliśmy oscyloskop składający się z PIC18F2550 (8-bitowy, 10-bitowy ADC, USB), wzmacniacz operacyjny do realizacji kilku zakresów napięcia i kilka czapek rezystorów &. Miał to być bardzo prosty, bardzo tani oscyloskop dla szkół z częstotliwością próbkowania… Myślę, że było to około 50 kHz. Transfer został wykonany przez CDC w celu zapewnienia wysokiej kompatybilności.

Kiedy Microchip wymyślił mikroczipy PIC32, wyglądało to obiecująco. Cena była prawie taka sama, 120 mln instrukcji / s zamiast 12, szybkie USB zamiast pełnej prędkości. Ostatni punkt był interesujący, ponieważ przepustowość była czynnikiem ograniczającym PIC18, a testy porównawcze mikrochipów wykazały zadziwiająco wyższą przepustowość USB.

W końcu okazało się, że PIC18 wykonał wszystkie rzeczy związane ze sprzętem USB, podczas gdy PI32 wydaje się robić więcej w oprogramowaniu - gdy tylko PIC32 ma więcej pracy, przepustowość spada. Dlatego nie mogliśmy zrealizować szybszego oscyloskopu z PIC32.

(nie byłem w to zaangażowany - więc nie znam szczegółów)

AndaluZ
2015-04-20 13:13:54 UTC
view on stackexchange narkive permalink

Cóż, zanim naprawdę zaczniesz programować, musisz najpierw zbadać, czego potrzebujesz, aby zrealizować projekt. To część pracy.

Jeśli znasz już mikrokontrolery, zrób trochę badań, czy 8-bitowy uC jest wystarczający, czy nie. Zależy to od złożoności, czy zostanie rozszerzony, czy nie (np. Z monochromatycznego LCD do kolorowego LCD), czy będzie to długoterminowe, czy musi to być niskie zużycie energii, niskie zużycie pamięci i tak dalej ...

Musiałem sprawdzić, który ARM uC powinienem wybrać, a także który kompilator (na podstawie ceny i popularności). W mojej sytuacji ważne było sprawdzenie dostępności urządzeń peryferyjnych.

Więc proste tak lub nie jest niemożliwe. Witamy w świecie inżynierii :)

Michael Karas
2015-04-20 05:17:46 UTC
view on stackexchange narkive permalink

Jedno słowo daje odpowiedź - DOŚWIADCZENIE.

Do tego czasu próbujesz różnych rzeczy i uczysz się zdobywać doświadczenie.

Pamiętaj również, że są zadania, które możesz ustawić dla dowolnego MCU, które mogą spaść płasko na twarz, jeśli zastosowane zostanie niewłaściwe podejście do projektowania algorytmów. Dawno temu zakodowałem oprogramowanie układowe dla 8-bitowego MCU 4,9 MHz, które wykorzystywało sprytne algorytmy i było w stanie monitorować stan odłożenia / podniesienia słuchawki i wykryć stan dzwonienia, filtrując sygnał napięcia dzwonka ~ 20 Hz na wszystkich 28 liniach telefonicznych jednocześnie a następnie zgłosić ten stan do centralnej stacji kontrolnej, jednocześnie uruchamiając wyświetlacz LCD i obsługując dość złożony interfejs użytkownika z wyłączonymi wykrytymi tonami DTMF. Zabawne rzeczy.

Chciałbym móc robić takie rzeczy w mojej pracy


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...