Skocz do zawartości

Kilka nurtujących pytań dotyczących mikrokontrolerów


szejkop

Pomocna odpowiedź

1. Nie liczy rozkazów, tylko wskazuje na kolejny. Jeśli na przykład wykonasz skok do wcześniejszego rozkazu, to jego wartość się zmniejszy.

2. Do przechowywania adresów powrotu i innych danych potrzebnych przy wywoływaniu funkcji zazwyczaj służy nie stos (stack) a sterta (heap). Często robi się tak, że jedno z nich rośnie "w górę" od początku dostępnej pamięci, a drugie "w dół" od końca.

3. Chyba zależy od konkretnego mikrokontrolera, watchdoga i przerwania.

4. Zależy od protokołu.

5. Nie mam pojęcia. Żeby na to odpowiedzieć to trzeba by znać wszystkie możliwe standardy.

6. Tak, tak, nie.

7. Zależy od mikroprocesora.

8. Nie mam pojęcia co to są bipolarne zmiany sygnału wyjściowego.

9. Tak.

10. Zależy od mikrokontrolera.

11. SPI będzie szybsze, bo ramka nie musi zawierać adresu, dodatkowo masz komunikację w dwie strony jednocześnie.

12. To chyba też jest bardzo specyficzne dla konkretnego mikrokontrolera.

Link do komentarza
Share on other sites

2. Adresy powrotu składowane są na stosie lub w specjalnym rejestrze (LR w przypadku ARM). Sterta nie służy do tego

3. Można resetować, ale nie należy. Głównym zadaniem watchdoga jest reset procesora w razie zawieszenia programu. Jeśli licznik będzie zerowany z przerwań, program może nie działać, a watchdog nie zareaguje

7. Zależność jest liniowa

10. W przypadku rezonatora kwarcowego częstotliwość jest ustalona i nie można jej zmienić

Link do komentarza
Share on other sites

2. Adresy powrotu składowane są na stosie lub w specjalnym rejestrze (LR w przypadku ARM). Sterta nie służy do tego

Hmm, pomyliłem je ze sobą?

10. W przypadku rezonatora kwarcowego częstotliwość jest ustalona i nie można jej zmienić

Częstotliwość kwarcu jest ustalona, natomiast sam mikroprocesor może czasem chodzić z większą częstotliwością, niż kwarc, używając interpolacji, prawda?

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 chodzi o 10 to autor pytania zadał je nieco nieprecyzyjnie. W przypadku rezonatora kwarcowego, częstotliwość zegara jest praktycznie stała. Natomiast procesory wyposażone w pętlę PLL mogą do taktowania wykorzystać częstotliwość wyjściową pętli. Można oczywiście mieć wiele pętli oraz dzielniki dla różnych układów peryferyjnych. Ale sam sygnał wejściowy pozostanie ustalony sprzętowo.

Po użytych nazwach (Fuse Bity, timer w trybie CTC) domyślam się że w pytaniu chodzi o AVR - więc w tym przypadku częstotliwość pracy procesora jest taka jak rezonatora i nie można jej zmienić za pomocą Fuse-bitów.

[ Dodano: 06-02-2016, 17:35 ]

Zwiększanie częstotliwości to nie interpolacja - chociaż nazwa ładna.

Link do komentarza
Share on other sites

Zwiększanie częstotliwości to nie interpolacja - chociaż nazwa ładna.

Przepraszam, nie pamiętałem nazwy, tylko mniej więcej na czym to polega i taki opis mi przyszedł do głowy. Przynajmniej domyśliłeś się o co mi chodzi 🙂

Link do komentarza
Share on other sites

Niestety ten test jest do bardzo konkretnego wykładu, na którym nie byliśmy. Prawdopodobnie najlepszym rozwiązaniem w tej chwili (zakładając, że ty też na nim nie byłeś), jest pożyczenie notatek od kogoś, kto był.

Link do komentarza
Share on other sites

Tak czułem, tak czułem, że te pytania śmierdzą jakimś testem wymyślanym przez domorosłego naukowca z zacięciem pedagogicznym. Przed wszystkim napisz jaki był tytuł tego testu albo przynajmniej nazwa przedmiotu, bo niektóre pytania mają sens tylko w przypadku pewnych rodzin układów a inne mogę mieć wszystkie odpowiedzi prawdziwe lub odwrotnie - żadną.

Weźmy pierwsze z brzegu:

1. Zegar taktujący w transmisji szeregowej synchronicznej:

A. Musi mieć mieć normowaną częstotliwość

B. Może mieć dowolną częstotliwość

C. Jego częstotliwość musi być stała

Jeżeli transmisja jest synchroniczna, to zegar dostarczamy wraz z danymi i odbiornikowi wszystko jedno jaka jest jego częstotliwość. Więc niby B. No ale przecież po drodze mamy jakiś kanał przesyłowy (kabelek, ścieżka, skrętka) który ma swoje wymagania i który po prostu może nie przenosić pewnych sygnałów z powodu skończonego pasma więc już mamy ograniczenie z góry. Co więcej, jeśli sprzężenie jest zmiennoprądowe (np. przez pojemność lub transformator) to mamy też ograniczenie częstotliwości od dołu. Dalej, w konkretnej aplikacji może być tak, że np. zegar przechodzi przez jakieś filtry by pozbyć się zakłóceń. Wtedy jego częstotliwość nie może już być dowolna, a wręcz konkretnie jakaś lub z wąskiego przedziału. Poza tym sam sprzęt nadajnik/odbiornik może mieć ograniczenia w generacji/detekcji sygnału zegara. Nawet gdybyśmy ograniczyli się do AVR (na to wygląda z reszty pytań) to A - to zależy od założeń na system, B - nie może mieć zupełnie dowolnej, bo jesteśmy ograniczeni całkowitymi podzielnikami zegara, C - nie musi być stała, ale kto by zmieniał podzielniki w czasie pracy interfejsu i po co? Itd..

Następne jest w miarę oczywiste chyba, że pytający chciał być wyjątkowo podstępny lub nie rozumie o czym pisze:

2. Standart transmisji szeregowej asynchronicznej RS232:

A. Stosuje różnicową transmisję bitów

B. Potrzebuje symetrycznego zasilania nadajnika

C. Jest najszybszym standardem transmisji asynchronicznej

A odpada , B prawidłowe ale czy C?

Problem jest w słowie standard. Bo jest jasne, że w czasach gdy ustalano reguły RS232 nie były potrzebne (i dostępne) prędkości większe niż jakieś 9600 a pomysł tego łącza dotyczył komunikacji na niewielkie odległości (do kilkunastu metrów) urządzenia DTE (komputera) z DCE (modem telefoniczny lub ew. radiowy). W związku z tym nadajniki i odbiorniki systemu RS232 nie musiały być specjalnie szybkie i nie były. Nikt nie oczekiwał megabitów na sekundę przy amplitudach ±12V i niesymetrycznej linii przesyłowej. No a teraz bierzemy UART z dowolnego dzisiejszego procesora. Będzie pracował do wieluset kbit/s lub nawet wyżej. Łączymy takie dwa ze sobą i mamy łącze asynchroniczne na poziomach 1.8, 3.3 lub 5V. Czy to jest standard? A może gdy weźmiemy dzisiejsze, szybkie nadajniki spełniające normę napięciową dawnego RS232 pracujące powyżej 1Mbit/s (czyli nie spełniające normy choćby na szybkość zboczy) to czy nadal jest to standard RS232? A jeżeli nie, to jakie znamy jeszcze inne popularne standardy szeregowego łącza asynchronicznego? Itd..

Trzecie to już w ogóle kwiatek:

3. Źródłem sygnału zerowania po włączeniu zasilania jest:

A. Układ POR

B. Obwód zew. RC

C. Przycisk Reset

Ale gdzie?? Jestem w stanie zrobić układ korzystający z każdego z tych rozwiązań, razem, osobno lub w dowolnych kombinacjach. Która odpowiedź będzie wtedy jest poprawna?

Mam pisać co myślę o każdym pytaniu?

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.