Arduino Polska Forum

Pełna wersja: Programowanie w "czystym" C
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam wszystkich serdecznie!  Blush Z góry mówię, że nie jestem żadnym specjalistą w Arduino.
Spotkałem się z taką sytuacją na studiach, że profesor narzucił nam abyśmy programowali Arduino w "czystym C" (bez użycia jakichkolwiek bibliotek itp.). Pytanie w jaki sposób mogę się do tego zabrać? Dalej używając kompilatora Arduino? Macie jakieś wskazówki na temat jak mam zarządzać stanami na pinach?

Żeby zobrazować problem. Napisałem program, gdzie użyłem funkcji takich jak tone(), delay(), digitalWrite() i to według prowadzącego jest niezgodne z jego oczekiwaniami bo to nie jest "czyste" C i nie będę wiedział jak działa mikrokontroler. 

Będę niezmiernie wdzięczny za udzielenie wskazówek i poświęcenie choć chwili czasu.
Bierzesz płytkę Arduino (czyli tylko sprzęt), instalujesz Atmel Studio, tworzysz program w C, wgrywasz i masz. Atmel Studio ma symulator, więc możesz popatrzeć co się dzieje w kodzie vs co w pamięci uC. Jak wolisz to możesz użyć Eclipse z wtyczką AVR, ale tu nie ma symulatora. Jak masz widzieć co się dzieje w uC to pewnie powinieneś mieć jakiś debugger, najtaniej to kupić jakąś płytkę z uC atmega328PB (ATMEGA328PB-XMINI EVALUATION BOARD, MICROCONTROLLER ) lub Atmega 328P xplained AVR (328P dawno nie widziałem), płytki z tej serii mają wbudowany programator/debugger. Tani programator/debugger to również MPlab SNAP, można go znaleźć za kilkadziesiąt zł.
W Arduino IDE też można napisać program w czystym C, otwierasz nowy szkic, kasujesz wszystko, robisz funkcję main i pętlę while(1) i jedziesz z programem, dodajesz biblioteki tylko C. Nie ma kompilatora Arduino, w przypadku użycia płytki AVR używany jest kompilator do AVR, jak używasz ESP to inny, a do ARM kolejny. Arduino łączy różne platformy, piszesz program w HAL, czyli nie przejmując się na jakim ostatecznie sprzęcie będzie uruchomiony (choć nie zawsze to się ostatecznie uda, jak np. szastasz pamięcią jak po ESP, a wybierzesz Attiny, lub użyjesz WIFI z ESP, którego nie ma w ARM i AVR).
Zakładając, że chodzi o Arduino z AVR'em na pokładzie, to owszem Atmel Studio bije całą konkurencję na głowę.
Chociaż małe projekty zdarza mi się pisać nawet w CodeBlocks.
Pozostając przy AVR, to powinieneś ściągnąć sobie notę katalogową danego uC i tam masz wszystkie rejestry pięknie opisane. Często się zdarza, że oprogramowanie peryferiów jest łatwiejsze i szybsze pisząc bezpośredni do rejestrów niż korzystając z HAL Arduino.