Redakcja: Dondu
Nasz blog poświęcony jest głównie mikrokontrolerom rodziny AVR, a rodzina, jak to rodzina lubi się powiększać. Także rodzina AVR wzbogaca się o nowe mikrokontrolery, a także o nowe serie. Z pewnością wielu fanów Atmela i AVR słyszało o XMEGA - najnowszym członku rodziny AVR.
O tej rodzine krąży wiele plotek typu, że są to skomplikowane mikrokontrolery, trudne do wykorzystania, nie ma ich czym programować i są drogie. Jak to z plotkami bywa, niewiele w nich prawdy. Ale nic tak bardzo nie rozwiewa plotek, jak rzetelne informacje. W krótkim cyklu artykułów postaram się wam przybliżyć nieco tę rodzinę.
Dlaczego? Dlatego, że naprawdę warto je poznać dostając znacznie więcej niż w ATtiny czy ATmega, przy jednoczesnym zachowaniu i wykorzystaniu całej Twojej wiedzy z tych rodzin.
Szczegóły znajdziesz w pierwszym artykule :-)
XMEGA
czyli ATmega na sterydach :-)
Wstęp do XMega:
- Dlaczego XMEGA?
- Moduły
- Moduły DIY by manekinen
- Podłączamy przez USB
- Pierwszy program
- Bootloader - ponowne ładowanie programu
- Na pohybel FT232, czyli jak prosto zrobić emulację portu szeregowego RS-232 na XMEGA?
- XMEGA i "inteligentne" diody RGB WS2812B cz. I
- XMEGA + UART i "inteligentne" diody RGB WS2812B cz. II NEW
- XMEGA + DMA + UART i "inteligentne" diody RGB WS2812B cz. III NEW
- ... jeżeli masz konkretny problem mogę go opisać (napisz poniżej komentarz).
Środowisko programistyczne (IDE)
- Dlaczego należy wybrać oryginalne Atmel Studio?
- Oficjalna strona Atmel Studio
- Program FLIP - programowanie XMEGA bez programatora z wykorzystaniem USB, RS-232 lub CAN
- Co trzeba wiedzieć, by zacząć?
- Pierwszy program.
- Nowe metody konfiguracji rejestrów.
- Porty i piny.
- Wyświetlacz LCD (HD44780)
- Przerwania
- Sygnały zegarowe
- Generator RC
- Generator kwarcowy
- ... następnych kilkanaście w opracowaniu.
Niezbędne PDF-y:
- AVR1000: Getting Started Writing C-code for XMEGA (kopia 2013r.)
- AVR1001: Getting Started With the XMEGA Event System (kopia 2013r.)
- AVR1003: Using the XMEGA™ Clock System (kopia 2013r.)
- AVR1005: Getting started with XMEGA (kopia 2013r.)
- AVR1305: XMEGA Interrupts (kopia 2013r.)
- AVR1306: Using the XMEGA Timer/Counter (kopia 2013r.)
- AVR1307: Using the XMEGA USART (kopia 2013r.)
- AVR1308: Using the XMEGA TWI (kopia 2013r.)
- AVR1309: Using the XMEGA SPI (kopia 2013r.)
- AVR1916: USB DFU Boot Loader for XMEGA
- XMEGA-A Manual
- XMEGA-AU Manual
- XMEGA-B Manual
- XMEGA-C Manual
- XMEGA-D Manual
Linki zewnętrzne
Dzięki za super wprowadzenie w rodzinę xmega. Szczególnie projekt modułów DIY jest świetny, ponieważ xmegi mozna kupić już za 15-20zł i tanio wykonać płytkę prototypową. Z niecierpliwością czekam (zapewnie nie tylko ja) na ciąg dalszy!
OdpowiedzUsuńPozdrawiam
Książki jeszcze całej nie przeczytałem, ale brakuje mi chyba jednej rzeczy - wykorzystania ADC. Czy dałoby się krótko opisać sposób korzystania z ADC na Xmegach?
OdpowiedzUsuńTak, temat ADC poruszymy w kursie XMEGA, dokładniej jest to opisane w drugim tomie książki o XMEGA razem z innymi analogowymi ukłądami peryferyjnymi tego procesora.
UsuńTak, o ADC też będzie, będzie i tu. Także bez obaw, kolejne artykuły o XMEGA się pojawią.
OdpowiedzUsuńA ja dodam, że dzisiaj będzie opublikowany Tomka artykuł o rozumieniu datasheet i tam jest co nieco w zakresie ADC.
UsuńNa podstawie książki próbuję napisać program. Chcę ustawić wew. generator 32MHz jako taktowanie dla CP{U, jednak mam pewien problem. Dlaczego Atmel Studio podkreśla mi linię: while (!(OSC.STATUS & OSC_RC32MRDY_bm);
OdpowiedzUsuńi wyskakuje mi error: expected identifier ? Jak temu zaradziź?
Źle skopiowałem, zapomniałem o jednym nawiasie. Dotyczy to takiej linijki: while (!(OSC.STATUS & OSC_RC32MRDY_bm));
UsuńZ pewnością problem dotyczy tej linii? Bo ona jest absolutnie poprawna, problem może dotyczyć jakiejś linii wcześniejszej. Ewentualnie nie dołączyłeś av/io.h. Tego typu problemy wygodniej jest rozwiązywać na Elektrodzie - załóż odpowiedni temat.
UsuńCzy udało by się napisać artykuł o sterowaniu wyświetlaczem ze sterownikiem SSD1963?
OdpowiedzUsuńGłównie chodziło by mi o wykorzystanie DMA do przesłania danych i systemu zdarzeń do generowania sygnałów sterujących magistralą 8080. Dopiero zacząłem przygodę z mikrokontrolerami i od razu wpakowałem się w xmegi. Co z tego wyjdzie to się dopiero okaże.
Pozdrawiam
Tak, artykuły o TFT z pewnością się pojawią. Kiedy? To zależy od zapotrzebowania, jeśli więcej osób będzie chciało to można to w miarę szybko zrobić. Sterowanie tym układem jest niezwykle proste. Możesz wziąć albo XMEGA z serii A1, która ma interfejs pamięci zewnętrznej zgodny z 8080 i połączyć SED bezpośrednio - wtedy jego rejestry widzisz w wybranej przez ciebie przestrzeni adresowej pamięci (dzięki konfiguratorowi sygnału wyboru CS), albo bierzesz mniejszą XMEGA i generujesz stroby RW/WR za pomocą kanałów systemu zdarzeń wyprowadzonych na IO.
UsuńJa się piszę na taki kursik - od tygodnia walczę ze sprzętowym SPI w XMEGA, nie mogę nawet znaleźć informacji w internecie (nigdy nie robiłem żadnego SPI w niczym)
UsuńSPI na XMega będzie opisane za jakiś czas.
UsuńAle w czym masz problem z tym SPI? To najprostszy ukłąd, nawet nie ma o czym pisać :) Raptem rejestr kontrolny i rejestr danych :) Wrzuć problem na elektrodę i daj tu link - zapewne się go rozwiąże w parę minut bez czekania na artykuł :)
UsuńWitam,
OdpowiedzUsuńwiadomo już co z przetwornikiem ADC?
Potrzebuję zmierzyć bardzo małe napięcie ( w zakresie 0-15mV różnicowe) i dlatego kombinuję z dodatkowymi wzmacniaczami aby podłączyć je pod atmegę, a może po prostu wystarczyć zmienić serce układu? Po zmierzeniu muszę wysłać wynik na wyświetlacz i po rs232 a zależy mi na dokładności pomiaru (nie na tempie, pomiar co 0,1s mnie zadawala bo układ i tak ma swoją bezwładność). Proszę o opinię.
Pozdrawiam
Witaj.
UsuńPrzetwornik ADC omówi Dominik w swojej części kursu XMega. Zobacz jakie masz dostępne wewnętrzne źródła napięcia odniesienia i wybierz najmniejsze możliwe, ale większe od największego jakie może mieć napięcie mierzone.
A z jaką dokładnością i rozdzielczością chcesz mierzyć to napięcie? XMEGA ma możliwość amplifikacji napięcia przy pomocy programowalnego wzmacniacza o wzmocnieniu 1/2-64 razy. Z drugiej strony jeśli masz 12-bitowy ADC, do tego nie zależy ci jak piszesz na szybkości to można się pokusić o oversampling nawet do 16 bitów, co umożliwi bezpośrednio pomiar napięcia (wbudowany wzmacniacz wprowadza pewne błędy, jak każdy zresztą wzmacniacz).
UsuńNajlepiej załóż temat na elektrodzie i wklej tu link - tak łatwiej się dyskutuje.
Cześć,
OdpowiedzUsuńczy byłaby możliwość stworzenia tutorialu, jak wykorzystać moduł ethernetowy ENC28j60?
Np. z prezentacją zmiennych mikroprocesora i jak odbierać jakieś dane z innego serwera, np. jakąś zmienną, by później zapisać ja w rejestrze mikrokontrolera?
Chodzi także o przerobienie gotowych bibliotek pod XMEGĘ np. ze znanych bibliotek z tuxgraphics.
Jeśli masz porządną bibliotekę obsługi ENC to jej przerobienie na XMEGA wymaga tylko zmiany dwóch funkcji: inicjalizacji SPI i wysyłania/odbierania bajtów po SPI. Raptem jakieś 5 linii kodu.
UsuńWitam, z racji tego, że Xmegi są wyposażone w sprzętowy RTC, może i do tego mógłby powstać jakiś tutorial? Uwzględniający np wybudzenie procka ze stanu uśpienia raz na jakiś czas.
OdpowiedzUsuńJa też byłbym zainteresowany opisem wykorzystania wbudowanego w XMEGI RTC :)
UsuńZnalazłem dział w książce Tomasza "Avr praktyczne projekty " - którą kupuję jest opisane to zagadnienie. :) , co nie zmienia faktu, że taki tutorial mógł by się ludziom bawiącym xmegą przydać. pozdro
OdpowiedzUsuńWitam,
OdpowiedzUsuńMa ktoś może jakieś źródło jeśli chodzi o pamięci AT45DB642D-CNV?
Witam.
UsuńCNV, a nie CNU?
Z tego co widzę CNU są w Farnell.
Tak. CNU. W Farnell nie są niestety już dostępne bo nie są produkowane. Trzeba skorzystać z nowych pamięci typu E, co wiąże się ze zmianami w kodzie.
UsuńNiestety nie jestem w stanie pomóc.
UsuńJest już dalsza część poradnika, ale na stronie Leona
OdpowiedzUsuńWitam,
OdpowiedzUsuńnie wiem, czy jeszcze ktoś tu zagląda, ale zapytam:
Czy jest możliwość wykorzystania ft232 jako programatora z interfejsem PDI, tak aby móc go wykorzystać do wgrania bootloader’a dla wybranego mikrokontrolera serii ATxmega?
Uprzejmie dziękuję za jakiekolwiek informacje.
Pozdrawiam.
Oczywiście jest taka możliwość. Tyle, że sam musisz sobie napisać odpowiedni soft, bo standardowo AVRDude tego chyba nie obsługuje.
UsuńMam pytani: Jak wyłączyć kasowanie EEPROMU przy programowaniu Xmegi? Domyślam się,że trzeba wpisać jakaś linie kodu, jeśli dla kogoś nie byłoby to problem, to proszę o podpowiedź. :)
OdpowiedzUsuńTak jak w każdym AVR - trzeba skasować bit EESAVE w fusebitach. Można to zrobić programatorem lub programowo poprzez zmianę rejestru FUSEBYTE5, pola EESAVE.
UsuńWitam, robię sterownik bldc na xmega i chciałbym użyć 3 PWM, wybrałem timer1 i z niego 3 pierwsze kanały. Niestety mam problem z wyłączaniem poszczególnych PWM'mów. Czy jest możliwość wyłączania poszczególnych kanałów ? Czy muszę użyć timer0 timer1 i timer2? Chciałbym dodać, że planuje dodać dead time'y. Pozdrawiam
OdpowiedzUsuńUżyj w tym celu timera z AWeX.
Usuń
OdpowiedzUsuńCzy jest szansa na atykuł o 1-wire na UART w XMEGA ?
OdpowiedzUsuńKonkretnie chodzi mi o obsługę Ds18b20.. może ktoś ma po prostu jakiś przykład (w książkach o xmega tego nie widziałem)..
Ktoś tu jeszcze zagląda czy szkoda zachodu z takimi prośbami jak przykład obsługi DS18b20 przez USART na xmega ?
OdpowiedzUsuńCzasami ktoś tu jeszcze zajrzy...
OdpowiedzUsuńPróbowałeś sam szukać w necie?
Np.: http://www.avrfreaks.net/comment/940981#comment-940981
Oczywiście że próbowałem.. Link który zapodałeś też nie rozwiązuje sprawy.. Zresztą same posty w tym temacie avrfreaks o tym mówią.
UsuńA pytałem tutaj ponieważ z pół roku temu na elektrodzie TMF napisał że ma gotowy artykuł o 1-wire/UART w XMEGA i tylko czeka na opublikowanie na tym blogu.. i cisza jak widzę...
Jest jeszcze sens zabierać się za Xmegi ? będą to dalej produkować? czy lepiej przeskoczyć na pic ?
OdpowiedzUsuńNajlepiej zabrać się za ARMy (STM32, LPC, KINETIS)
UsuńOcztwiście, że jest sens. Ciągle to produkują, to, że Microchip przejął Atmela nic nie zmieniło.
Usuń