Skocz do zawartości
cyryllo

Programowanie mikrokontrolerów Arduino IDE czy C?

Pomocna odpowiedź

Postanowiłem iść dalej z zabawą niż z RPi i Arduino i zakupiłem sobie kilka Attiny oraz programator. Kupiłem sobie tez książkę do AVR i C. Ale mam takie pytanie odnośnie programowania. Czy korzystając z bootloadera arduino i jego IDE kod jest dość optymalny czy lepiej programować w C poprzez np atmelstudio czy winavr w C. Zastanawia mnie która metoda daje większe możliwości. Zapewne do prostych projektów typu kontrola prędkości obrotów jednego wiatraka na podstawie temperatury nie da dużej różnicy wydajności, ale do bardziej złożonych projektów może mieć to już znaczenie. Czy ktoś bardziej doświadczony mógł by mi trochę wytłumaczyć.

Udostępnij ten post


Link to post
Share on other sites

Programowanie w Arduino w stosunku do C ma swoje ograniczenia. Przykładowo można zmieniać stan tylko jednego pinu na raz, a w C całego portu - 8 pinów. Warto jest nieco poznać C, żeby wiedzieć gdzie te ograniczenia są i w razie czego umieć je rozwiązać, ale... Jeśli nie planujesz projektów w których każda mikrosekunda czasu pracy mikroprocesora jest na wagę złota Arduino wystarczy. Radzę tylko zainstalować sobie Atmel Studio 6 z dodatkiem Visual Micro, który pozwala używać bibliotek Arduino właśnie w AS. Jest to dużo wygodniejsze niż toporne Arduino IDE.

Udostępnij ten post


Link to post
Share on other sites

Mam właśnie m.in Atmel Studio 6 którego będę chciał używać.

Czyli pisząc w samym C mogę używać wątków aby wykonywać operacje jednocześnie? czy jest jakaś biblioteka specjalna dla AVR aby można było w tym samym czasie wykonywać operacje?

Udostępnij ten post


Link to post
Share on other sites
Programowanie w Arduino w stosunku do C ma swoje ograniczenia. Przykładowo można zmieniać stan tylko jednego pinu na raz, a w C całego portu - 8 pinów.

O ile mi wiadomo AVR nie ma dostępu atomowego do bitów w rejestrach a więc każda operacja (bez względu na to jak to wygląda na poziomie listingu programu) zmiany jednego pinu portu wiąże się z wczytaniem całego rejestru, przeprowadzeniu maskowania/alternatywy na zmiennej pomocniczej i powtórnym wczytaniu całego bajtu.

Jeśli chodzi o wątki to AVR nie ma wsparcia sprzętowego tak jak to jest w mocniejszych procesorach. Można tutaj mówić tylko o pseudo wielowątkowości którą można uzyskać umiejętnie operując zasobami na poziomie programu.

Nigdy nie lubiłem tego typu udziwnień jak np. Arduino (nigdy też nie używałem) ponieważ skoro w notach katalogowych producent pokazuje przykłady w C, dostarcza środowisko programistyczne, to chyba najłatwiej iść drogą przez niego wytyczoną?

Udostępnij ten post


Link to post
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!

Gość
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...