Witam. W przykładach do książki Tomasza Francuza jest obsługa USART w przerwaniach. Kod: [syntax=c] #define MAX_CMD_LEN 10 //Maksymalna długość polecenia w bajtach void USART_init() { PORTC_OUTSET=PIN3_bm; PORTC_DIRSET=PIN3_bm; //Pin TxD musi być wyjściem USARTC0.CTRLA=USART_RXCINTLVL_LO_gc | USART_TXCINTLVL_LO_gc; //Odblokuj przerwania odbiornika i...
Mikrokontrolery AVR firmy Atmel zdobyły bardzo dużą popularność na polskim rynku. Dotychczas producent oferował nam dwie rodziny: ATtiny oraz ATmega, które różniły się możliwościami i ceną, choć sposób ich programowania był identyczny. Wprowadzając najnowszą rodzinę, XMEGA, producent dokonał bardzo istotnych zmian, zarówno w budowie procesora, a także...
Cóż... ustawiłem wszystko co się da jako wyjście. Jest lepiej. Dalej da się go zawiesić, ale trzeba się trochę więcej "namacać", żeby Tego dokonać. Jutro popracuję z tym mikrokontrolerem, zobaczę jak w normalnym użytkowaniu przez kilka godzin będzie się spisywał. Póki co wrzucam to, co na razie napisałem. Dodam tylko, że jedyną funkcją tego mikrokontrolera...
Witam nie za często udzielam się na forum, więc proszę o wyrozumiałość w razie umieszczenie tematu w złym dziale bądź niepoprawnego stylu pisania. Przechodzę do rzeczy. Mam za zadanie napisać program na XMEGA256A3U obsługujący dwa USART'y dokładniej: wysyłanie z jednego USARTA (PC - USB - uC) na drugi (uc-Bluetooth) i odwrotnie. Bawię się strumieniami,...
Mam prośbę, upraszczam jak to tylko możliwe bibliotekę do komunikacji XMEGA->RS232 przez USART. Idea jest taka żeby tylko na samym początku programu zdefiniować o który usart chodzi i podać prędkość transmisji a reszta powinna się sama skonfigurować. W zasadzie już wszystko działa ale nie mogę sobie poradzić z automatyczną konfiguracją pinów tzn...
Wiatam Wiemy już, że można wysyłać dane przez USART przy pomocy DMA. Czy można poprosić USART-a, by przyjmował dane z zewnątrz ? Również przy pomocy DMA.
Cześć, potrzebuję wytłumaczenia (jak dla debila ;) jak to jest z tym usartem i jak to się ma w przypadku spi / i2c dla xmega. Weźmy na warsztat chociażby SPI. A więc aby "zrealizować SPI", to muszę określić slave, zegar taktujący względem którego będą wysyłane kolejne bity (czyli po cyklicznym pojawieniu się , załóżmy, zbocza narastającego zegara),...
Cześć, mam problem z komunikacją z modułem HC-05 za pomocą USART, operuję na uC xmega32A4U więc wspiera komunikację po USB z wykorzystaniem CDC. Komunikacja USB CDC działa, mogę wyświetlać różne wiadomości do serialu. Mam problem z komunikacją z modułem HC-05 - po odpaleniu terminala nie mogę wpisywać znaków (znaki nie pojawiają się pomimo ich wysyłania/...
W książce Tomasza Francuza "AVR Praktyczne projekty" znalazłem bardzo przyjemny sposób na użycie USART w XMEGA posługując się fprintf lub fscanf. Niestety po przejściu na DMA okazało się, że nie da się tak łatwo zastąpić fprintf przy użyciu funkcji wysyłającej dane do bufora i dalej przez DMA do komputera. Znalazłem inny przykład w sieci z wykorzystanie...
Witam, sprawa dotyczy podstawowej MINIMALNEJ konfiguracji i użycia usarta w X-mega. Wiem, że jest CDC i inne odchudzone jego wersje ale mi chodzi o przykład kompletnego i działającego kodu na którym można się będzie dalej uczyć, kod który choćby wysyła jeden znak na terminal z prędkością 9600. USB podpięte jak na schemacie. Jak to odpali to można dalej...
Witam. Piszę aplikację w języku C służącą do komunikacji mikrokontrolera AVR XMEGA32A4 poprzez interfejs UART/USART. Docelowo interfejs ten ma być połączony z modułem Bluetooth i służyć do komunikacji z telefonem. Aplikacja na telefonie sterowałaby mikrokontrolerem i urządzeniami peryferyjnymi podpiętymi pod niego poprzez wysyłanie odpowiednich komend....
Witam, mam problem z komunikacja z wyświetlaczem M7-A070A-RT, urządzenie nie reaguje na komendy. Kod mocno testowy, chodziło tylko o to żeby wydać pierwszą komendę. Próbowałem z biblioteką atmela i nie działa, więc spróbowałem z jakimś opisem w internecie - niestety skutek taki sam. [syntax=cpp] # define F_CPU 2000000UL #include <util/delay.h>...
Nie mam pojęcia czemu jest failed, płytka testowa oryginalna "Leona" ale ten rejestr chyba i tak nie ma znaczenia w tym przypadku. Po dodaniu stddef kompiluje się wszystko ale te kalibracje w ogóle nie wpływają na pomiar. Cały czas min. odczyt to 180. Jedyną rzeczą dziwną jest to że przez około 1s po połączeniu się przez RS-a wyświetla się kontrolka...
To znów nie takie czary jak masz FT8xx W sumie FT8xx też jest wbudowany już w Bascom, ale zależy kto w jaką półkę cenową celuje. Równie dobrze można kupić dotykowe moduły Nextion. Programujesz go sobie wcześniej i on ma wbudowaną pamięć lub czyta z karty a Ty mu tylko posyłasz USART`em komendy co ma wyświetlać. Wyświetlaniem się zajmuje juz akcelerator...
Witam, używam uC ATXMega 128A3U i potrzebuję skonfigurować interfejs USARTD1 w następującej konfiguracji: (kwarc wewnętrzny) 2MHz (prędkość) 19200 (parity) brak (ramka) 8 bitów (stop) 1 bit USARTA tego podłączam następnie do bluetooth BTM-222. Niestety komunikacja nie działa z putty nie dostaję żadnych znaków (wcześniej ten BTM-222 został podłączony...
Witam wszystkich, Próbuję uruchomić kartę mikro SD na płytce extrino od Leona, Mam książki Pana Tomasza Francuza i przerabiam przykład "Inicjalizacja" z katalogu KartySD. Książka "AVR Układy peryferyjne". Używam Atmel Studio 7. Uruchomiłem przykład na płytce DIL64 (także od Leona). Działa w trybie SPI. Ponieważ docelowo będę potrzebował SPI_USART sięgnąłem...
Szanowni Forumowicze, postawiłem sobie za zadanie opanowanie UARTa w prockach xmega, co nie powinno być zadaniem bardzo trudnym. Na początek zajrzałem na stronę producenta i znalazłem pdf z opisem UARTa i przykładowy kod dla wykorzystania sprzętowego na przerwaniach i software'owego. Zacząłem od przerwań. Utworzyłem projekt i skompilowałem program....
Witam, wymyśliłem sobie, że dane z czujnika PMSA003 będę odczytywał UARTem z udziałem DMA. Wygląda to zatem tak, że na poczatku: deklaruję tablicę o rozmiarze ramki z czujnika w trakcie debugowania okazuje się, iż dane w tablicy nie są właściwe . Ramka powinna zaczynać się od bajtów startu 0x44 i 0x4D, a wg debugera takie wartości pojawiają się też...
Wielki dzięki, to działa, dziwnie skonstruowana jest ta funkcja załatwiająca jednocześnie odczyt i zapis. To że działa wiem z tylko obserwacji przebiegów na analizatorze. Faktycznie od komórki 0x0C zaczynają się wartości AD AE AF B0 B1, ręcznie wbite przeze mnie na progamatorze. Ale przystopowało mnie na najprostszej sprawie. Napisałeś że dane są w...
Cześć :) Sprawdzam różne rzeczy podczas nauki uarta dla xmega128a3u. Korzystam z biblioteki Atmela, uart w trybie z przerwaniami, software'owy cykliczny bufor odbiorczy i nadawczy. Mam tablicę z danymi w formie znaków ASCII. Oglądam sobie wszystko przy pomocy realterma, do PC podłączone za pomocą przejściówki rs485-usb. Chciałem na początek obliczyć...
Przede wszystkim sprawdź CRC - po to ono jest. A przy okazji - jaki jest sens taktować MCU 32 MHz, jeśli 99% czasu spędza on w martwej pętli? Zrób komunikację 1-wire na USART jak należy, tym bardziej, że w XMEGA masz ich sporo i daj odpocząć biednemu prockowi :)
Jaki sens podkręcać Xmegę, jeżeli za te same pieniądze możesz mieć ARMa o znacznie wyższej wydajności? Taki prosty przykład: wydajność Xmega128A1 w CoreMark: 0,44/MHz, max. 14,1(at)32MHz (wariant optymistyczny) wydajność ST32F401VB w CoreMark: 2,16/MHz, min. 181(at)84MHz (wariant pesymistyczny) Zawsze będę wspominał niezbyt sensowny ADC w Xmega, usb...
Oprócz tego co kolega (at)jnk0le napisał, dodam, że wiele (prawie wszystkie) kontrolery LCD w trybie SPI nie działają z wyższymi częstotliwościami niż 10-15 MHz. Więc zastosowanie podziału przez 2 i w efekcie SPI 16 MHz może powodować problem. Stąd być może w powyższym kodzie jest podział przez 4 i taktowanie SPI 8 MHz. Poza tym, skoro wykorzystujesz...
Jest pewien postęp. Program ma za zadanie wysyłać literę B z prędkością 9600bps. BHB((ABHB( B( B( B( B( B( BBHB((ABHB( B BHB((ABHB( B( B( B( B( BBHB((ABHB( B( B ( B( B( B( BBHB((ABHB( B( B( B( B Tudzież tak: 01000010 01001000 01000010 00101000 00101000 01000001 01000010 01001000 01000010 00101000 00001001 01000010 01000010 01001000 01000010 00101000...
Dziękuję mi14chal Nawet nie wiedziałem, że mam taką lekturę na dysku :( Nie chcę zakładać nowego tematu, więc będę kontynuował tutaj. Więc do rzeczy. Napisałem przykład zapisu i odczytu do i z SRAM XMegi. Oto on SPI , USART itd. Czy można zarówno zapis, jak i odczyt ulepszyć ?
I bufor kołowy właśnie jest wykorzystywany w bibliotece Atmela :) (at)Piotrus_999 - uważasz, że powinienem napisać tutaj własne funkcje do obsługi uarta? Panie Tomku - rozumiem zamysł, poprawię kod :) Powiem może dokładniej co mam do zrobienia i dlaczego uparłem się na tę bibliotekę Atmela. Trochę mi nie wychodziło stąd wróciłem do początku żeby sobie...
Witam, mam mały problem którego nie potrafię rozwiązać, i potrzebuję porady. Potrzebuję zrobić układ który będzie przesyłał dźwięk za pomocą usart. I tak: Jeden mikrokontroler xmega będzie zbierał dżwięk z mikrofonu podpiętego do ADC i za pomącą DMA przesyłał zebrane przez ADC próbki dźwięku do UART. Drugi mikrokontroler xmega będzie odbierał te próbki...
Witam. Mam problem z zapisem do zewnętrznej pamięci EEPROM AT24C164. Działa mi zapis tylko w zakresie 0-1023 a powyżej 1023 nie działa poprawnie. Podłączyłem EEPROM do portu E. Mam 3 funkcje odpowiedzialne za obsługę TWI. Piny A1 i A2 są podłączone do VCC a A2 do GND więc urządzenie ma adres 0xF0 czyli 11110000 bity 2,3,4 od prawej (1111xxx0) to adres...
Ustawianie zegara
I narzekasz zupełnie niepotrzebnie. Jeśli nie masz to ściągnij przykłądy do mojej drugiej książki o XMEGA - układy peryferyjne. Tam masz przykład DMA + master SPI USART dla kart SD - jest dokładnie ten sam problem ze zmianą sygnału CS po zakończeniu ostatniej transmisji. I oczywiście jest jego rozwiązanie - przeanalizuj przykłady. Oczywiści da się uzyskać...
... ATmega nie obsłuży 260 tysięcy przerwań na sekundę potrzebnych do transmisji na przerwaniach ... 260k przerwań opróżniających bufor atmega bez problemu obsłuży - oczywiście nie może być to kod 'ala arduino. Przykładowo uart można zmieścić w 50 43 cyklach: Dla 16MHz przerwania zajmą ok. 80 70% ( 70 56 dla 20MHz) czasu procesora, zakładając że przez...
Szanowni Forumowicze, uruchomiłem sobie sprzętowego UARTa wykorzystując bibliotekę ze strony atmela. Wszystko działa, łączę się z terminalem na komputerze, wyświetla się to co powinno. Dodałem też funkcję do wysyłania całego łańcucha znaków wykorzystując wskaźnik, gdyż w atmelowskiej bibliotece znalazłem jedynie do wysyłania konkretnych pojedynczych...
Czujnik to HTU21D. Wysyłam do niego komendy, które są w Datasheet (w załączniku). Chcę odczytać temperaturę w trybie Hold Master. Oto kompletny kod main.c:
Zacznij zabawę z XMEGami, mają nawet do 8 USARTÓW Tylko te ceny.... oby tylko na razie, póki "nowość".
Tak, nie ma problemu aby uruchomić i korzystać z 4 jednocześnie. SPI może tylko odbierać dane ze wsparciem DMA, czyli to co układ odbierze automatycznie ląduje w zdefiniowanym buforze w SRAM. A jeżeli to za mało, to możesz wykorzystać 8 USARTów w trybie SPI, która mają dodatkową zaletę, że mogą również nadawać dane ładowane przez DMA. Niestety, tylko...
USART w trybie SPI też działa na 16MHz. f_BAUD = f_per/(2 x (BSEL + 1)) - Manual Xmega AU (ver.F) strona 282. Sam się o tym kiedyś przekonałem nieświadomie jak mi układ nie chciał odpowiadać, bo dostawał za szybki sygnał zegara.
Witam. Mam problem z kodem programu. Do pinu F5 XMegi128A3U mam podpięty przycisk wywołujący przerwanie INT0. O tak: Kod włączający i konfigurujący przerwanie: PORT_ISC_LEVEL_gc używam ze względu na to, że domyślnym stanem przycisku jest "wciśnięty" a domyślnym stanem uC uśpiony. Po zwolnieniu przycisku uC będzie się budził. A z tego co wiem budzenie...
Wracając do tematu - autora jednak zachęcam do wykorzystania USART/SPI. Wbrew temu co napisałeś timingi dzięki temu są lepsze. Zauważ, że softwarowe generowanie przebiegu wymaga zablokowania lub niekorzystania z przerwań. Teraz pomyśl jak pogodzisz niezakłócone sterowanie diodami np. z transmisją USART? Jeśli nie wykorzystasz do tego przerwań lub je...
Co do wysłania danych przez terminal z MCU to jest tam przykład zapisu danych z terminala na kartę SD. Ale najprościej po prostu odbierać dane z USART i je zapisywać do tablicy w SRAM. Tylko uwaga - dane nie mogą być wysyłane zbyt szybko, to znaczy program musi nadążać z ich odbiorem. W przypadku SRAM to raczej nie jest problemem. Wynika to z tego,...
No właśnie na terminal chcę puszczać cały zestaw zmiennych i monitorować porównując policzone na papierze. Jednak najpierw muszę odjść do ładu z kompem bo nawet połączone na echo UART<>USB cokolwiek wyślę dostaję null ;) Jak wspomniałem wcześniej obliczeniom i konwersjom typów na bank muszę się przyjrzeć. Tyle, że bzdurne wyniki jakie by one nie...
I jest rezultat mej nauki Asemblera. LPM , zamiast ELPM . Owszem, w XMedze ELPM działa w SRAM, ale nie ma go chyba w ATmegach.
Ok działa. Mój błąd. W programie po inicjalizacji USB, wywoływana była procedura zmiany zegara z 2MHz na 32MHz. Nie zdawałem sobie sprawy, że samo USB zamienia mi na 32, a następnie dzieli przez 2. Moja procedura zmiany, przestawiała ponownie na 32, ale dzielnik ustawiała na 1. Po zmianie dzielnika na 2 i przeliczeniu nastaw usartu, zaczęło działać...
W książce wykorzystywany jest USART SPI ze względu na jego dodatkowe buforowanie, co przyśpiesza wymianę danych w trybie master. W E5 możesz skorzystać z możliwości multipleksowania pinów TxD i RxD uzyskując dwa USARTy, tyle, że oczywiście transmisja nie może odbywać się na nich jednocześnie.
Witam serdecznie kolegów. Mam problem z odczytem danych z MAX31865. Tu jest nota katalogowe: Jest to przetwornik A/D dedykowany do pomiaru temperatury za pomocą czujników rezystencyjnych (Pt100, Pt1000) Zachowanie programu jest bardzo dziwne ponieważ odczytywane dane (zarówno LSB jak i MSB) są 2x mniejsze niż te które powinny być odczytane. Odczyt za...
Właściwie mamy już Święta i świąteczny konkurs w DIY. A w nim sporo konstrukcji opartych na programowalnych diodach WS2812B. Stąd też, aby ułatwić innym realizację świątecznych projektów oświetleniowych, postanowiłem podzielić się rozwiązaniem pozwalającym na w pełni sprzętowe sterowanie tego typu diodami. Jednocześnie, jako jeden z moderatorów działu...
Próbuję porozumieć się z układem ATM90E32, na płytce są dwa takie układy na jednej magistrali SPI + procesor ATXMEGA128A3U. Każdy z układów ma osobną linię !CS, tak wygląda ich połączenie: Próbowłem używać USART w trybie SPI ale nic nie dawało użycie " PORTC_REMAP=PORT_SPI_bm;" (aby zamienić SCK z MOSI) wiec wróciłem do pracy z klasycznym SPI, poniżej...
Hmm czy przy pierwszym to nie jestem pewien - ale na pewno resetuje się od stanu niskiego na reset a nie od wejścia w PDI. Z tego co wyczytałem, wynika że układ nie powinien się zresetować dopóki nie wpiszemy wartości 0x59 do rejestru "reset". Dałem 20us, i na końcu zwolniłem PDI_DATA (ten pin ma wewnętrzny pulldown). No i bez efektu. Pin RESET podczas...
Już to przerabiałem i to samo... oto mój kod: [syntax=cpp] #define NUM_BYTES 8 uint8_t TWI_Buffer[NUM_BYTES]; #define TWI_BAUDSETTING TWI_BAUD(F_CPU, 100000) ......... TWI_MasterInit(&twiMaster, &TWIC, TWI_MASTER_INTLVL_LO_gc, TWI_BAUDSETTING); TWI_Buffer[0] = 0; while(TRUE) { _delay_ms(500); TWI_MasterWrite(&twiMaster, 0xA2, &TWI_Buffer[0], 1); //while...
Niestety nie mają. Fabrycznie załadowany bootloader mają ATMega z USB, też się na to naciąłem. Ale nawet jeśli procek nie ma USB to można go programować przez USART korzystając z FLIPa. Niestety bootloader trzeba wgrać.
Masz rację tmf. Od pewnego czasu nie pracuję już z Xmega i zapomniałem, że jedynym rozsądnym SPI jest USART. A co do wystawiania SS, to nie jest do końca tak. Mam aplikację, w której Touch Panel nie pracuje w przerwaniach, tylko jest skanowany (X,Y,Z1,Z2) co 50ms i to leci z przerwania od licznika (SysTick). Z kolei karta pamięci zawierająca grafikę...
Może się mylę, ale w XMEGA włączenie TWI chyba nie włącza automatycznie slew rate limiter, trzeba to włączyć osobno w rejestrze konfiguracji pinu IO. slew rate włączane było automatycznie we wcześniejszych AVRach. Można też wybrać dla pinów TWI konfigurację wired-and with pull up. Być może nawet należy wybrać, bo w XMEGA konfioguracja pinu IO nie jest...
Pod ten drugi procek podpięte jest wyjście USART z XMEGA, dzięki czemu masz je widoczne w systemie jako wirtualny port szeregowy. W ten sposób możesz łatwo komunikować się z XMEGA za pomocą USART. Co do zmiany bitów portów IO - w XMEGA masz rejestry SET, CLR i TGL związane z portem, jeden ustawia bity, drugi kasuje, a trzeci zmienia na przeciwne. Dzięki...
Z drugiej strony jak sobie bierzesz nietypowe napięcie referencyjne (3300 mV), to potem masz problemy obliczeniowe. To akurat jest dla mnie bardzo typowe napięcie referencyjne. Nie spotkałem się jeszcze z małym prockiem z którego wystawałby pin Vref. I nawet większe (QFP64) też potrafią (w większości) tego nie mieć... To akurat charakterystyczne dla...
Widzę, że używasz kodów z moich książek o XMEGA. Przetestuj swój układ na jednym z kompletnych przykładów użycia 1-wire, które zamieściłem, najlepiej w układzie referencyjnym, który zamieściłem w książce. W XMEGA, ten dodatkowy tranzystor na USART w ogóle nie jest potrzebny - pin IO w USART możesz ustawić na tryb wired-AND, dzięki czemu nie wystawia...
nna wada to brak filtracji dla SPI - interfejsy UART w MCU często mają różne formy sprzętowej eliminacji zakłóceń, zwykle ukady (tak jest np. w XMEGA) Nie sądzę aby to był jakimkolwiek problemem. Wątpię aby taki DS2484 próbkował kilka razy. Co do preskalera to racja, USART posiada elastyczny podzielnik, SPI, najczęściej mało elastyczny preskaler. Ten...
(at)TmF Zatem, (tylko przy zapisie) jest bufor a jakoby go nie było... 1. Jaki wpływ na skuteczność zapisu do bufora ma flaga EEMAPEN ? 2. Czy też ów bufor należy widzieć jako typ w rodzaju DATA dla USART, inny dla odczytu, inny dla zapisu choć obydwa pod tym samym adresem ? ps. miłosierdziem to Waszmość nie grzeszysz, rujnując tak piękną teorię (moją)...
Jest na tyle dobrze, że można na wewnętrznym RC robić transmisję USART (to gwarantuje producent). Oczywiście kwarc jest ciągle kilka razy bardziej stabilny.
Karta SD pracuje w trybie MMC 4-bitowym, można spokojnie na takiej częstotliwości ją puszczać. Co daje 950000 (1'900'000/2) danych po 4bity do przesłania z karty do uC. Teoretycznie zapas kilkanaście instrukcji assemblera na wykonanie czegoś tam. Ramu starczy, żeby buforować jedną linię, 320*8=2560 bitów (albo 320*16 jak to woli). Jak dla mnie realne,...
Mogę odpowiedzieć tak - z tymi pytaniami w 100% trafiłeś w pierwszą część książki, którą właśnie wydaje Helion - "AVR. Praktyczne przykłady". Wkrótce pojawi się zajawka na stronie. Ale zapewne taka odpowiedź cię nie satysfakcjonuje, więc krótko: 1. Tak, DMA może transmitować blok danych z pamięci (ale nie FLASH) do portu, np. SPI z którym łączysz LCD....
Marek , dziękuję za wyczerpującą odpowiedz. Dondu , zajmuję się programowaniem amatorsko. Tadzik No chyba kolego zwariowałeś Nie dla wszystkich jest to tak oczywiste. Jednak reasumując temat. Zapis : zmienna jest "dostawcą" dla USARTA, natomiast w drugim rejestr R24. Temat zamykam, dziękuje bardzo.
Zmienną z zakresu 0..99999 dałem do uinta32_t i błędu o 3 już nie ma. Ale jeszcze walczę bo czasem się jeszcze o 1 różni. Dziwne bo nawet jak wynik mnożenia przez 0,3 jest całkowity to daje również wtedy o 1 mniej mimo, że powinien zabrać do uinta własnie tylko całkowitą wartość ze zmiennej. Może przygotowanie zmiennej coś kuleje. Podam może całość...
Bez pełnego kodu chyba nikt ci nie powie, gdzie jest błąd. BTW, w XMEGA można skonfigurować pin jako wyjście typu open drain, w efekcie nie trzeba wykorzystywać sztuczki z przełączaniem pinu na wejście, żeby uzyskać stan 1 na 1-wire. To upraszcza kod, a przy okazji można jeszcze łatwiej do komunikacji wykorzystać USART. IMHO przy liczbie dostępnych...
tmf - w Twojej książce Układy Peryferyjne na s.517 napisałeś, że jest pewien odcinek czasu na odczyt sektora z SD i tym się zasugerowałem, a ponieważ tymczasowo rozmontowałem VS'a więc nie mam jak sprawdzić transferu większej paczki danych niż wspomniane 32B. Projektuję układ z udziałem wspaniałej XMEGI serii E, gdzie jest tylko jeden SPI (pozostałe...
I teoretycznie można by sterować USARTem za pomocą DMA, tylko że Xmegi D nie mają DMA! Próbuję remapować piny, ale na zapis: PORTE_REMAP=... pisze, że jest niezdeklarowany. Szukałem różnych przykładów w Internecie,ale mi sypie błędem cały czas. Dodatkowo (dla hecy) próbowałem zrobić zwykły wpis szeregowy, ale też nie działa i na wyjściu DAC jest niezmiennie...
tmf dał byś radę wskazać gdzie jest zawarty przykład z ADC ? W przykładach, które pobrałem z helionu mam takie katalogi: ADV CDT DMA Event system FSM IR LED NVM OSC Porty IO Przerwania R02 R04 RTC Timery Usart Ale nie znalazłem nic o ADC
Sory, że tak długo nie było reakcji. Dzięki zapodpowiedź. W międzyczasie zgłębiałem temat USART w trybie MasterSPI. O ile czegoś nie pomieszałem to wystarczy nie włączyć RX czyli zamiast [syntax=c]USARTE0.CTRLB |= USART_RXEN_bm | USART_TXEN_bm;[/syntax] wystarczy [syntax=c]USARTE0.CTRLB |= USART_TXEN_bm;[/syntax] Pozostawia to pin związany z RX nie...
Użycie DMA ma sens jeśli robsz w miarę proste przesłanie z punktu A do punktu B, najlepiej jeśli ta operacja może odbywać się asynchronicznie w stosunku do reszty kodu i jeśli przesyłana ilość danych jest duża lub przesłąnie zależy od jakiegoś czynnika, np. pojawienia się danych na USART, SPI, czy innym wolnym ukł. peryferyjnym. W twoim przypadku DMA...
Witam, Próbuje poznać Xmegi, konkretnie chodzi o ATXMEGA32E5. Zapodałem sobie dziś temat pomiar napięcia 12 bitówy. Napisałem program, trochę przy użyciu dr Googla. Niby program działa, ale wyniki są mało satysfakcjonujące. otrzymuje w termianalu dla stabilnego napięcia ze żródła referencyjnego wskazania od 1614 - 1627. Chyba ten zakres jest zbyt duży....
Witam serdecznie Aktualnie wykorzystuję DMA w następujący sposób INTFLAGS Bit 3:0 , który sprawdza błąd transakcji dla kanału 0 do 3. Ale błąd transakcji, a błąd wysłanego bajta to dwie różne rzeczy. Jest też rejestr TEMPH i TEMPL . Czy przy pomocy w\w rejestrów można sprawdzić poprawność wysłanego każdego bajta ? Oczywiście jest to jedynie przykład...
I jeszcze jedno już udało mi się "popłynąć" na RS232 z prędk. 115200 w "C" - i musiałem zejść do 9600-, w asm nie do pomyślenia , i nie był to polling No i jakiego komentarza tutaj oczekujesz? Sprawdzałem moje implementacje driverów USARTa napisane w C++11 przy użyciu dwóch współpracujących klas polimorficznych i spokojnie działa do 4Mbit. Czyżbym...
Jeżeli VSS przypiąłeś do 3,3V, to pamięć raczej nie będzie działać. Widzisz jaki babol. poprawię i dam znać. Oczywiście miałeś rację z VSS poprawiłem. Impulsy SPI dużo lepsze(pełne, schodzą do zera) odpowiedź nie wyraźna kod: niebieski zegar żółty MISO chyba coś się zmienia Odczytuje 2 odczyt jest stabilny i nie pływa. [syntax=c]M25P128_CSEnable(true);...
(at)504651921 Dobrze, że próbujesz. Warto jednak poczytać co to jest to open drain, bo skoro masz MCU, który obsługuje takie bajery... Tu masz mój przykład z 1-wire na USART (znowu, skoro masz w XMEGA kilka USARtów, to grzechem jest to robić na pinie):
AVR nie bardzo nadają się do WS2812. Ostatecznie Mega1284 (16 ram), ale kolejny problem to obciążenie procka podczas wysyłania danych do LED. Teraz nie pamiętam ale mimo modyfikacji prologu i epilogu przerwania, w czasie transmisji do LED wykonuje sie kilka/kilkanaście rozkazów. Xmega czy Arm rozwiązują problem najlepiej używając DMA. Co do kolorów,...
Na pierwszy rzut oka wygląda poprawnie. Aczkolwiek są potencjalne problemy: - ustawiasz taktowanie zewnętrzne, odblokowując generator kwarcowy, ale jednocześnie blokujesz od rauz wewnętrzne RC 2 MHz. Przypuszczam, że nie jest to problemem i XMEGA nie pozwoli zablokować jedynego generatora, ale kto wie. Ja bym dla świętego spokoju zostawił ustawiony...
Załóżmy że chciałbym z DMA i musi być na PORTD i użyć USARTD0 (tam mam dostępne wolne PINy) to czy zgodnie z tą tabelką: Sygnał SCK do HX711 będzie jako XCK0 a DOUT będzie jako RXD0. Czyli odpowiednio PD1 i PD2. Zgadza się?
Potrzebuję zrealizować komunikację przez USART z możliwością obsługi przerwań. Chodzi o to, że w czasie odczytu danych z enkodera chcę móc wywołać przerwanie od danych przychodzących z komputera. Nie bardzo wiem jak się za to zabrać. Nie mogę używać strumieni do pobierania danych z USART bo mogły by zablokować cały program (getch lub scanf). Chciałem...
Ponieważ problem został rozwiązany dzięki poradom Kolegi niveasoft poza głównym wątkiem to opisze bo może komuś się przyda. W BASCOM 2.0.7.8 nie ma definicji dla uP Xmega128A3U jest tylko dla wersji Xmega128A3. Po dodaniu pliku "xm128a3udef.dat" i kompilacji dla tego dokładnie uP wszystko działa. Pozdrawiam i dziękuję za pomoc.
Witam, postanowiłem przenieść swój układ z atmegi na atXmegę. Do tej pory do komunikacji urządzeń po serialu używałem biblioteki SoftwareSerial (Arduino) bo układ miał tylko 1 fizyczny serial. Teraz w Xmedze mam ich 5 :) Wgrałem [url=ten] programik i wszystko śmiga, komunikacja przez putty z xmegą działa. Postanowiłem pójść krok dalej i na ekran puttiego...
Prawidłowe dane, odczytane zarówno bascomem jak i arduino to: -pierwszy bajt nieistotny -C1 = 50963 -C2 = 50412 -C3 = 30121 -C4 = 28181 -C5 = 32047 -C6 = 26849 -CRC - jeszcze nie używałem A poniższy kod odczytuje poprawnie tylko C3 do C6. C1,C2 jest skopane. Gdzie jest błąd ? Zapewne błędy wynikają z tego że w funkcji spi_send(char cmd) nie wiem jak...
Mam na F_CPU na 32000000, optymalizacja na -Os. przesyłam teraz dłuższy tekst i pierwszą literę przesyła bez problemu z kolejnymi ma problem. Aktualny kod: [syntax=c] #include <avr/io.h> #include <avr/pgmspace.h> #include "usart.h" #include <util/delay.h> bool OSC_wait_for_rdy(uint8_t clk) { uint8_t czas=255; while ((!(OSC.STATUS &...
Dostosowuję program przykładowy z książki "AVR Praktyczne projekty" dotyczący USART-DMA. Jest tam całkiem fajna funkcja która zamienia napis na numer indeksu tego napisu w tablicy. Nie mogę jednak zrozumieć w czym tkwi ograniczenie polegające na niemożności zwiększenia ilości wpisów w tabeli. Fragment oryginalnego kodu: [syntax=c]#define MAX_CMD_LEN...
Skoro to WS2812, to czemu nie SPI lub co najmniej USART? Przykład dla Xmega: baza: USART: USART+DMA: Zapewne do PIC także przykłady znajdziesz. Wprawdzie Twój mikrokontroler DMA nie ma, ale może warto pomyśleć o innym PIC-u.
Istotnie, chyba źle zrozumiałem twoją wypowiedź. W XMEGA można remapować niektóre rejestry IO dotyczące portów, ale to jest mapowanie rejestr->port. Nie ma możliwości remapowania peryferii na poszczególne piny. Tak więc XMEGA ma 8 USARTów, ale po 2 na każdy port IO i to jest sztywne przypisanie. Pewnym wyjątkiem jest układ generowania wzorców, który...
Przesyłasz dane przez I2C stosując protokół z L3? DOM dotyczy trybu L3, z którego na tej płytce nie możesz korzystać. Adres urządzenia na I2C to 0x30 do zapisu i 0x31 do odczytu. To wszystko jest w dokumentacji. Weź też pod uwagę, że Atmega32 nie nadaje się do takiej aplikacji. Dane musisz przesyłać bardzo stabilnie, a ten układ tego nie potrafi, nie...
W czym napisany jest program? C, pisałem w AvrStudio 4.18, kompilator AVR-GCC. Ale lepsze pytanie nie w czym ale jak? Pomijając proste programy, piszę używając maszyny stanów. Dzięki temu mam coś w rodzaju multitaskingu podobnego jak w Windows, tyle, ze się nie wiesza. W tym programie są dwa _delay. Jeden 50us po wysłaniu danych do WS2812 aby zagwarantować...
Szukaj informacji o mapowaniu pinów w XMega. Twoja wersja (A3) obsługuje mapowanie pinów portu SPI, co może ułatwić Ci zaprojektowanie PCB. Na blogu niestety nie ma artykułu na ten temat. Remapowanie wyjść IO Niektóre mikrokontrolery XMEGA (serii A3, C, E) posiadają związany z portem IO specjalny rejestr REMAP. Rejestr ten umożliwia zmianę przyporządkowania...
Proponuję opierać się na ASF jako pomocy w zapoznaniu się ze procesorami xmega. Z całego ASF do UART'a wykorzystuję tylko funkcję do wyliczenia parametrów generatora fraktalnego a reszta to moje własne funkcję. Przykładowo dla UART'a używam takich funkcji (usart_set_baudrate pochodzi z ASF) : [syntax=c]void usart_init(PORT_t *port, USART_t *usart, uint32_t...
Ale z komentarzy widzę, że wykorzystany jest sprzętowy UART więc porównywanie tego jest lekko bez sensu. Dlaczego bez sensu? Praktycznie każdy AVR ma USART. Tu akurat jest kilka ledów i nie ma innych peryferii, więc można robić w dowolny sposób, co innego jak się steruje 500led i w tym czasie odbiera dane DMX. Wysłanie danych dla 500 led to 15ms (1/800e3*24bity*500led)....
W urządzeniu było mało USART, został użyty układ SC16IS760IPW. Teraz musze dodać kolejny SC16IS762IPW czyli dwa USART. Procek z USARTEM komunikuje się po SPI. Komunikacja to wysłanie adresu rejestru i zapis/odczyt danej. Teraz wszystko odbywa sie w pętli głównej, muszę jednak odbiór przenieść na przerwania. Jak sie łatwo domyśleć, nie może byc tak,...
Robiłem w swoim urządzeniu dla czujnika temp DS18B20. Pewnie master programowy? Jak tak to dlaczego w programie nie rozdzieliłeś pinu nadawania od odbioru? Pinów w procku brakowało? Procek to xmega. Master może być programowy, lub sprzętowy - USART. Aktualnie soft jest w trakcie pisania i master jest programowy, a docelowo będzie sprzętowy na usarcie.
Aby to zrobić zgodnie ze sztuką obsłuż LED na przerwaniach od USART. Trochę zabawy z tym jest, bo przerwania 300 tysięcy razy na sekundę dla AVR to duże obciążenie (wstawki ASM wskazane). Na 16MHz nie pójdzie, więc kwarc min 18MHz. Prosta sztuczka pozwoli zmniejszyć częstotliwość przerwań dwukrotnie. Aby uniknąć dodatkowych "efektów" wszystkie inne...
Mikrokontrolery AVR cieszą się niezmienną popularnością, ze względu na swoją prostotę, a jednocześnie spore możliwości. Co ciekawe, mimo, że od lat wszyscy wieszczą rychłą śmierć mikrokontrolerów 8-bitowych, mają się one ciągle dobrze, a kolejne, nowe rodziny są wprowadzane na rynek. Jakiś czas temu Microchip wprowadził na rynek nową rodzinę mikrokontrolerów...
Przede wszystkim porzuć tą buibliotekę, przynajmniej w wersji klasycznej. I teraz od końca - odbiornik USART nasłuchuje cały czas i to nie angażuje procesora. Ba, np. w takiej XMEGA E5 procesor można nawet uśpić, a USART pracuje i jak zajdzie potrzeba to go wybudzi. To na czym powinieneś skupić swją uwagę to przerwania. A konkretnie przerwanie odbiornika...
AVR Dragon poprawnie współpracuje z XMEGA128A1 w trybie JTAG, w PDI chyba ma problem na Xplained. Mam takie pytanie pomocnicze, jaki masz dokładnie moduł? Bo jest Xplained z XMEGA128A1, z tym, że on pomocniczo ma jakiś procesor AVR32 z serii UC3, który robi jako bridge USART<->USB i z programowaniem przez JTAG nie ma nic wspólnego - za to może...
W ATMega do realizacjiu UART nie należy stosować wewnętrznego generatora RC, zbyt mało stabilny. Jeśli musisz na wewnętrznych to skorzystać z USART, czyli połącz jeszcze procki sygnałem XCK i włącz synchroniczną transmisję USART. W PRzypadku M128 pamiętaj też o wyłączeniu fusebitu kompatybilności z M103. BTW, po co stosować M128, jeśli pod każdym względem...
...ściąnij darmowe przykłądy do moich książek o XMEGA i tam masz implementację OW na USART na XMEGA. Przeczytałem trzy twoje książki o mikrokontrolerach i protokół OW (także przez USART) opisany był w pierwszej z nich (o ATMEGA). W pozostałych dwóch (o XMEGA) nic takiego nie widziałem. Coś mi umknęło, czy też uzupełniłeś to w jakimś nowszym wydaniu?...
Próbuję odczytać dane kalibracyjne z czujnika ciśnienia MS5611. Na procku xmega128a3u SPI działa a na xmega32e5 nie. Podłączenia zostawiam na tych samych portach i pinach. Częstotliwość zegara też taka sama - 2MHz. Na E5 próbowałem ustawiać większe dzielniki prędkości transmisji ale nic to nie daje. Czy procki Xmegi z serii E5 mają jaką inną, nietypową...
A po co FTDI232? Mogłeś wziąć A4U, która ma USB. Jak już dałeś FTDI to trzeba było go wykorzystać jako programator PDI. Niezbyt fortunnie podłączyłeś także złącze SD - wykorzystując interfejs SPI, zamiast USART. W XMEGA jako SPI Master należy wykorzystywać USART ze względu na buforowania i współpracę z DMA. To dramatycznie przyśpiesza wymianę danych...
Wąskim gardłem będzie raczej interfejs ATMega/PC. Jeśli to będzie USART to teoretycznie masz 960kbps do dyspozycji, tyle, że to zabije ATMegę. Samplowanie nie jest problemem bo 1Msps osiągniesz. Z drugiej strony - to znowu zależy jakich parametrów oczekujesz, bo być może ATMega jest wystarczająca - a chyba jest bo Atmel ma noty, gdzie coś takiego jest...
Cieszę się, że ci to działało, ale wystarczy zaglądnąć do noty procesora i zrobić parę prosty obliczeń, żeby przekonać się, że ci USART taktowany wewnętrznym generatorem w ATMega działał wyłącznie przez przypadek. Tak na szybko ja znalazłem dwa przykłady obliczeń: Stabilność oscylatora RC rzędu 1% wydaje się aż za nadto dobra w komunikacji z komputerem...