Kurs XMEGA: pierwszy program (02)


Starożytny zwyczaj nakazuje zacząć naukę programowania mikrokontrolerów od mrugającej diody! Tak więc i my, jako nasz pierwszy program na ATxmega zrobimy mrugającą diodę.
Pliki do pobrania:

Pierwszy projekt


Uruchamiamy Atmel Studio 6 (jeśli jeszcze go nie masz, to zapraszam na stronę Atmel Studio 6 download). Po uruchomieniu programu, powinniśmy zobaczyć taki ekran:



Klikamy New Projekt. Otwiera się okno, w którym musimy nazwać nasz nowy projekt oraz podać, w jakim katalogu ma być zapisany. Wpisz tu, co uznasz za stosowne :) oprócz tego wybieramy GCC C Executable Projekt.



W kolejny kroku wybieramy procesor, jaki nasz interesuje. W module X3-DIL64 znajduje się ATxmega128A3U. W tym oknie możemy także ściągnąć aktualną dokumentację.



Po kliknięciu OK zostanie utworzony projekt i pojawi się szablon, zawierający szkielet prostego programu. Skasuj go i skopiuj poniższy kod w jego miejsce.


#include <avr/io.h>
#include <util/delay.h>

int main(void) {
    
    PORTE.DIR = 0;                  // caly port E jako wejście
    PORTF.DIR = 0b11111111;         // caly port F jako wyjście
    
    uint8_t licznik = 0;            // zmienna sterująca mrugającymi diodami
    
    while(1) {
        licznik++;
        PORTF.OUT = licznik;
        if(PORTE.IN & (1<<5)) {     // jeśli przycisk FLIP zwolniony
            _delay_ms(100);
        } else {                    // jeśli przycisk FLIP wciśnięty
            _delay_ms(50);
        }
    }
}
 
Aby skompilować program, wystarczy wcisnąć klawisz F7. W konsoli w dolnej części okna, powinniśmy zobaczyć Build Succeeded. Aby sprawdzić ile pamięci zajmuje nasz program, trzeba przesunąć tekst trochę do góry lub rozciągnąć okno konsoli.



Programowanie przez FLIP


Procesor w module X3-DIL64 ma wbudowany bootloader, dzięki któremu możesz szybko wystartować z procesorami XMEGA bez potrzeby posiadania programatora PDI. Wystarczy zwykły kabel MiniUSB, taki jak do telefonu czy innych urządzeń. Ściągnij Atmel Flip ze strony producenta i zainstaluj.

Po podłączeniu płytki do komputera, nic nie powinno się dziać, bo uruchomił się ostatnio wgrany program. Aby uruchomić bootloader, należy wykonać taką sekwencję:
  • Wciśnij jednocześnie RESET i FLIP
  • Puść RESET, cały czas trzymając FLIP
  • Komputer powinien wykryć nowe urządzenie USB
  • Puść FLIP
  • Procesor jest gotowy do otrzymania nowego programu

Jeśli system zapyta się o sterowniki, wybierz automatyczne wyszukiwanie w katalogu C:/Program Files/Atmel. W Menedżerze urządzeń płytka powinna się przedstawiać jako ATxmega128A3U.



Uruchamiamy program Atmel FLIP. Następnie klikamy ikonkę pierwszą z lewej i wybieramy procesor ATxmega128A3U. Dalej, wybieramy Select Communication Medium i oczywiście wybieramy USB i Open. Wszystkie opcje programu powinny się uaktywnić.



Klikamy ikonkę Load Hex File z czerwoną strzałką skierowaną w stronę książki. Musimy teraz wskazać plik do wgrania do procesora. Znajduje się on w katalogu projektu w /Debug/xmega-demo.hex. Ważne! Ścieżka, nazwy katalogów i plików nie powinny być nadmiernie skomplikowane i nie powinny zawierać polskich znaków. Następnie klikamy RUN. Niniejszym program został przesłany do procesora, co powinno zająć mniej niż sekundę. Ostatnia rzecz to kliknięcie przycisku Start Application, by wyłączyć bootloader, odłączyć USB (nie trzeba odpinać kabla), a program wystartuje samoczynnie.

Testujemy


Program testowy generuje różne sygnały o niewielkiej częstotliwości na porcie F. Potrzebujemy zatem diodę z rezystorem, bo zobaczyć te sygnały na własne oczy :) Można ją podłączać na różne sposoby do dowolnego pinu portu F. Po wciśnięciu przycisku FLIP, dioda powinna migać dwukrotnie szybciej.



Poniżej udostępniam cały testowy projekt oraz inne ważne rzeczy:

Pliki do pobrania:
Kurs XMEGA:Moduły prototypowe:

12 komentarze :

Anonimowy pisze...

Bardzo polecam tę płytkę testową - spodziewałem się amatorszczyzny, a dostałem profesjonalny produkt! Tak trzymać!

Anonimowy pisze...

Zamiast Build Succeeded dostaję komunikat warning F_CPU not defined for

Dominik Leon Bieczyński pisze...

możesz dopisać w pierwszej linijce #define F_CPU 2000000UL

Andrzej Macieja pisze...

U mnie wyskakuje błąd Error1 avr/io.h : No such file or directory . możesz mi podpowiedzieć w czym problem. Pozdrawiam.

Dominik Leon Bieczyński pisze...

Czy masz zainstalowane jakieś inne środowiska progframistyczne? Kiedyś AVR Stduio 4 gryzło się z C++ Builderem. Możliwe, że musisz jakieś zmienne środowiskowe ustawić.

ellox pisze...

Cześć,

Mieliście kiedyś problem po podłączeniu xmegi (X3-DIL64) pod USB objawiający się ciągłym podłączaniem i odłączaniem urządznia (+ komunikat o nierozpoznanym urządzeniu). Działający program to powyższe mruganie diodkami, procesor w trybie "run". FLIP działa bez problemu.
Pozdrawiam

Dominik Leon Bieczyński pisze...

Najprawdopodobniej w programie sterujesz pinami D6 i D7, które odpowiedzialne są za komunikację przez USB.

Anonimowy pisze...

Czy na ostatnim rysunku prawa dioda nie powinna być czasem podłączona z prawej strony do GND? Bo teraz jest podłączona do dwóch wyjść...

Dominik Leon Bieczyński pisze...

Tak ma być

Arkadiusz Rogacki pisze...

Hej,
Miał ktoś może problem z instalacją sterownika USB z Flip? W menedżerze urządzeń niestety mam "Nieznane urządzenie", a po aktualizacji sterowników ze ścieżki podanej wyżej niestety wyskakuje monit "Występujący w tym pliku INF sekcja instalacji usługi jest nieprawidłowa."
Byłbym wdzięczny za podanie konkretnej ścieżki drivera w folderze "atmel" - mimo że środowisko flip reinstalowałem, to może faktycznie coś jest nie tak z plikiem instalacyjnym.
Z góry dzięki za pomoc :)

Dominik Leon Bieczyński pisze...

Spróbuj zainstalować ręcznie z tego katalogu C:\Program Files (x86)\Atmel\Flip 3.4.7\usb

Arkadiusz Rogacki pisze...

Dokładnie o tą ścieżkę mi chodziło- dziękować, pomogła ręczna instalacja :)

Prześlij komentarz

Skomentuj!

Sklep Leon Instruments