Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] [Atmega328P][Arduino Uno]Programowanie przy użyciu nazw rejstrów i portów

29 Jan 2012 00:19 5981 18
  • Level 9  
    Witam,

    Niedawno kupiłem zestaw Arduino Uno z procesorem Atmega328P. Programowanie przy użyciu oprogramowania Arduino jest błyskawiczne i przebiega bez problemów. Jednak chciałbym programować Arduino w C tak jak się programuje np. zestaw uruchomieniowy ZL3AVR tzn. stosując nazwy rejestrów i portów
    Code: c
    Log in, to see the code
    , a nie stosując funkcje
    Code: c
    Log in, to see the code

    Czy jest taka możliwość, co byłoby potrzebne i na co zwrócić uwagę?
    Czytałem, że chyba potrzebny byłby programator? Są 3 opcje programatora:
    - AVR ISP USB
    - stk 500v2
    - USBasp
    Czy któryś z tych programatorów, będzie odpowiedni? Proszę o podpowiedź.
    Dodam, że Arduino posiada złącze ICSP.
    Posiadam laptopa, więc pod ewentualny programator przewiduje port USB.
    Dodam, że jestem początkujący w świecie mikrokontrolerów.

    Pozdrawiam i dziękuję
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Helpful post
    Level 42  
    Pewnie, że każdy procek AVR można programować w czystym C. Programator USBASP będzie moim zdaniem najlepszy - sam go używam od lat i to do wszystkich AVR'ków jakie mam i programuję. Przy okazji zapoznaj się z tym artykułem i nie tylko tym na moim blogu jeśli np masz Win7

    http://mirekk36.blogspot.com/2011/05/wszystko-o-usbasp.html

    Będziesz nim mógł programować i zestaw uruchomieniowy który masz i to arduino. Sama idea arduino jest nawet fajna, można też dużo czerpać z wielu gotowych przykładów w necie ale już sam edytor do pisania programów jest toporny jak nieoheblowany klocek ;)

    Do pisania programów w czystym C możesz skorzystać z AVR Studio ale lepiej od razu pomyśleć o Eclipse albo w najgorszym przypadku o CodeBlocks ;) rzuć też okiem tutaj:

    http://mirekk36.blogspot.com/2011/11/dlaczego-eclipse-zamiast-avr-studio.html
  • Helpful post
    Level 23  
    Nie potrzeba żadnego programatora wystarczy program ArduinoUplader. Wgrasz nim hex'a np. z AVR-Studio, do jego załadowania wykorzystywany jest bootloader Arduino.
  • Level 9  
    Witam,

    Dziękuję serdecznie za obie wypowiedzi. Bardzo dużo informacji można znaleźć na twoim blogu mirekk36. Czytając go pojawiła się pewna niejasność, bo właśnie na twoim blogu umieszczona jest informacja w blogu "Wszystko o USBasp", że programatorem USBasp można programować Atmege328:
    Quote:
    Ja np najczęściej korzystam z takich jak:
    Atmega88/168/328

    a na stronie o programatorze USBasp:
    Link
    w zakładce "Obsługiwane układy" nie ma wymienionego procesora Atmega328?
    Skąd może być ta rozbieżność i którą informację uważać za prawdziwą?

    Pozdrawiam
  • Level 42  
    Lukasz_wat wrote:

    Skąd może być ta rozbieżność i którą informację uważać za prawdziwą?


    Przykro mi ale ja nie odpowiadam za jakieś niesprawdzone informacje, a to co piszę opieram na tym co w 100% robię. Procesory ATmega328P to jedne z moich ulubionych i gdybym nie mógł ich programować to byłaby skucha ;) a jak pisałem używam tylko USBASP.

    Poza tym zassaj sobie program MkAvrCalculator i z jego zakładki "Ustawienia" zainstaluj AVRDUDE. Potem zajrzyj do pliku config. Zdziwisz się ;) bo ta moja wersja AVRDUDE obsługuje już na dzień dzisiejszy więcej procesorów niż standardowa AVRDUDE. Po części to dzięki koledze SunRiver, który dopisywał definicje innych procesorów niż w standardzie. A użytkownicy MkAvrCalculatora z powodzeniem z nich korzystają do dzisiaj. Zobaczysz tam więc np niespotykane ATmega48P albo ATmega88P ;)

    Jeśli chodzi o procki ATmega328 to ja w sprzedaży widziałem i działałem tylko na wersjach ATmega328P. Tych bez literki P na końcu nie widziałem.

    Dodano po 1 [minuty]:

    adamslodki wrote:
    Nie potrzeba żadnego programatora wystarczy program ArduinoUplader. Wgrasz nim hex'a np. z AVR-Studio, do jego załadowania wykorzystywany jest bootloader Arduino.


    Tak? a co będzie jak zmienię sobie taktowanie np na inny kwarc niż 16MHz ??? Będzie skucha.... Więc nie pisz, że nie potrzeba - owszem nie jest to koniecznością, jeśli na siłę chcemy się przywiązać do jednej wersji platformy. Ale gdy chcemy zrobić coś więcej to już inna sprawa i bez programatora sprzętowego ani rusz.
  • Level 23  
    Quote:
    Tak? a co będzie jak zmienię sobie taktowanie np na inny kwarc niż 16MHz ??? Będzie skucha.... Więc nie pisz, że nie potrzeba - owszem nie jest to koniecznością, jeśli na siłę chcemy się przywiązać do jednej wersji platformy. Ale gdy chcemy zrobić coś więcej to już inna sprawa i bez programatora sprzętowego ani rusz.


    zgadzam się, ale autor tematu chce programować arduino w czystym C, wiec jeśli korzysta z płytki arduino którą można programować bezpośrednio, to po co mu programator?
  • Moderator of Microcontroller designs
    Mirku, co masz do CB? Akurat w porównaniu do Eclipse to IMHO ma same zalety.
    Co do arduino - moim zdaniem największą zaletą tego środowiska jest C++, pisanie w C to IMHO krok wstecz. Ale oczywiście co kto lubi.
    Pomyślałbym też o np. AVR Dragon, jako programatorze. Kosztuje więcej, ale możliwości bez porównania większe.
  • Level 42  
    tmf wrote:
    Mirku, co masz do CB?


    Nie do CB nic nie mam - po prostu go akurat nie używam, ja osobiście bardziej wolę Eclipsa - ale to nie oznacza, że to jedynie słuszna droga. To tylko moje subiektywne zdanie. A wręcz pisałem wyżej że lepiej Eclipse lub CB niż AVRS5 ;)


    tmf wrote:
    Co do arduino - moim zdaniem największą zaletą tego środowiska jest C++, pisanie w C to IMHO krok wstecz. Ale oczywiście co kto lubi.

    Tu się w pełni zgadzam no może bez tego kroku wstecz bo jednak C dla tak małych procków to takie naturalne podejście. Sam edytor Arduino jest tylko wg mnie strasznie kiepski i koślawy - co nic nie umniejsza samemu Arduino jako takiemu. W końcu można się zaprzeć i w Eclipse nawet pisać i kompilować dla Arduino - nawet są jakieś poradniki w tym temacie. Ale jak to czytałem to już bym chyba wolał - prędzej przejść na czysty C++ z AVR GCC. Za to podziwiam ludzi, którzy w tym Arduino IDE piszą takie długaśne kody - ja bym nerwowo nie wytrzymał po prostu ;)
  • Moderator of Microcontroller designs
    Na temat Adruino IDE się nie wypowiadam, bo go nie zam :)
    Ale też nie skazuj na śmierć od razu AS5 - IMHO jest równie ociężały co Eclipse i to właściwie jest jego jedyna wada. Ale ma też zalety - w stosunku do AS4 właściwie tylko jedną - wsparcie dla ASF.
  • Level 42  
    tmf wrote:

    Ale też nie skazuj na śmierć od razu AS5 - IMHO jest równie ociężały co Eclipse i to właściwie jest jego jedyna wada. Ale ma też zalety - w stosunku do AS4 właściwie tylko jedną - wsparcie dla ASF.


    Nie skazuję, raczej czekam na nowszą wersję hmm może AS6 ? ;) ... I jestem świadom, że AS5 ma kilka poważnych zalet w stosunku do Eclipse ....... Nie mniej jednak w takiej wersji jak jest obecnie bardzo ale to bardzo mi nie odpowiada. A wszyscy początkujący po prostu sami na własne życzenie skazują się na kupę problemów wybierając AS5. Już lepiej żeby zostali przy AS4 .... chociaż nie tfuu już lepiej żeby wzięli w łapki jak nie Eclipse to przynajmniej CB właśnie.
  • Moderator of Microcontroller designs
    No to prawda. Ale zauważ, że większość problemów początkujących wynika z niechęci do nauki :) Jednak jak się bierze zaawansowane narzędzie jakim jest IDE to warto najpierw coś poczytać. A tu mamy gościa, który zazwyczaj nie zna IDE, i co gorsze nie zna też C, więc sam nieświadomy ładuje się w problemy. Ktoś nawet tylko lekko obeznany, zauważy, że np. program mu się kompiluje z O0 i będzie poszukiwał przyczyny. Początkujący uzna, że wszystko jest ok i wpakuje się w kłopoty psiocząc potem na IDE. Zresztą z tego co obserwuję, ludzie nawet warningów nie czytają i wchodzą z założenia, że jak jest hex to jest ok. No nic, koniec narzekania :)
  • Level 12  
    Arduino tworzy pliki hex które możesz wrzucić zwykłym programatorem,
    Niezależnie możesz też wrzucić swój plik hex
  • Helpful post
    Level 23  
    Mozesz programowac nawet w C/C++ bezposrednio z Arduino IDE, a klikajac upload wyslesz program do plytki.
    Nikt Cie nie ogranicza do stosowania ulatwien z Arduino, ktore maja jednak spory narzut w porownaniu do bezposrednich operacji na rejestrach.
  • Level 9  
    Dzięki za odpowiedź! Fajnie, że temat ciągle się rozwija i mam nadzieję, że pomoże wielu osobom;)

    Pozdro
  • Level 23  
    Sam uzywam arduino duemilanove/uno/mega wlasnie w ten sposob, glownie
    dla bootloadera i dzieki temu szybkiego programowania przez rs232.

    Docelowo jednak traktuje ta platforme bardziej jako rozwojowa bo plytki itp. projektuje w zaleznosci od aplikacji po sprawdzeniu oczywiscie wersji rozwojowej ;)

    Gdyby ktos chcial to mam kilka oryginalnych (9) plytek Mega jeszcze zapakowanych do sprzedania (propozycje na priv)
    Mam tez kilka EthernetShield-ow z gniazdem karty SD.
  • Level 32  
    Jest taka wersja eclipse gdzie wskazuje się tylko arduino exe i piszę się w eclipse normalnie pod arduino :) osobiście myśl że ten mały edytor jest ok nawet bez autouzupełnania ale jak kodu rozrasta się to nawet po uporządkowaniu trochę nieporęcznie poruszać się w kodzie :)
    Ja uzywam do programowania USBasp

    Jeśli by ktoś chciał zrobić sobie sam arduino to zapraszam na moją www tam można pobrać pliki całość w wersji przewlekanej.

    Arduino to świetna zabawa, chociaż wolę szybsze i tańsze procesory :)
  • Level 11  
    Pytanko do was, istnieje coś takiego jak symulator(wirtualny emulator czy coś takiego) arduino ? aby bez kupowania go móc się pobawić w programie na diodkach czy coś innego????
  • Level 9  
    Wziąłem się za zestaw ATB Atnel..
    Myślę, że jednak wiadomości powyżej są bardzo pomocne:)

    Pozdrawiam