Tak, jest o USART w trybie SPI, ale nie ma o generowaniu obrazu TV - to będzie w książce o XMEGA :) USART - Universal Synchronous and Asynchronous Receiver - może pracować w dwóch trybach. UART - Universal Asynchronous Receiver and Transmitter - może pracować tylko w trybie asynchronicznym - nie ma sygnału SCK, przy okazji nie może też emulować interfejsu...
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...
Po pierwsze enkoder możesz obsługiwać sprzętowo na XMEGA - w tym celu konfigurujesz event system na QDEC, a dowolny timer będzie ci zliczał impulsy i pracował jako enkoder. Co do transmisji USART - można paczki odbierać przez DMA, co jest wygodne, można to zrobić w oparciu o przerwania. W tym celu odblokowujesz przerwanie RXComplete sygnalizujące gotowy...
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...
Przeczytaj to: http://mikrokontrolery.blogspot.com/2011... Masz tu pokazane jak zrobić połączenie PC-USB-XMEGA przy pomocy wirtualnego RS232. To załatwia ci połowę sprawy. A teraz to: http://mikrokontrolery.blogspot.com/2011... gdzie masz pokazane...
W przykładach do w/w książki masz wszystko co potrzeba do obsługi SD. W XMEGA E5 też najwygodniej użyć USART w trybie SPI. Z kolei do komunikacji z PC wykorzystany jest w przykładach USB, ale w trybie emulacji wirtualnego portu szeregowego - stąd tez wystarczy wyrzucić całą obsługę USB, a w kodzie funkcje odwołujące sie do USB zamienić na funkcje odwołujące...
Rozwiązanie to działa świetnie przy maksymalnie 2 komendach, W kodzie jest błąd. A to że czasem działa wynika najprawdopodobniej z optymalizacji. Zobacz co się stanie jak skompilujesz z opcjami -O0 Można tak: [syntax=c] // wskazniki z umieszczeniem w pamieci FLASH ;) const char * const cmds[] PROGMEM = {cmd_ledon, cmd_ledoff }; ///... //w funkcji TranslateCommand()...
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...
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),...
(at)BlueDraco Co do zasady zupełnie się z tobą zgadzam. Tylko odpowiadam na pytanie autora, że jeśli bardzo chce to można. (at)ASMnauka_ W dokumentacji masz opisane źródła (triggery) dla DMA. Jednym z nich jest zdarzenie odebrania bajta. A DMA do odbioru konfigurujesz tak jak do nadawania, z tym, że adres źródła to rejestr odbiornika danych USART,...
Fakt, masz rację. Ale i tu jest rozwiązanie - ten układ ma tryb szeregowy z dwoma wyjściami DOUT - wtedy się wyrobi czasowo. Na jednej masz kanały 0-3, na drugiej 5-7. Poskładać to prosto - potrzebujesz master SPI realizowany np. przy pomocy USART i slave SPI. Łączysz SCK z mastera z SCK konwertera i wejściem SCK slave SPI z XMEGA. W ten sposób jeśli...
Właśnie, żeby było śmieszniej w tym procku na PORTE nie ma SPI, ale jest USART, więc sobie można z niego brakujące SPI zrobić.
Skoro to WS2812, to czemu nie SPI lub co najmniej USART? Przykład dla Xmega: baza: http://mikrokontrolery.blogspot.com/2011... USART: http://mikrokontrolery.blogspot.com/2011... USART+DMA: http://mikrokontrolery.blogspot.com/2011...
Na procesorach bez wsparcia sprzętowego dla USB jego uruchomienie jest bardzo trudne i nieefektywne, a osiągane transfery są żałosne. USB jak każdy złożony protokół składa się z kilku warstw - interfejs sprzętowy zapewnia realizację warstwy elektrycznej i łącza, wraz z podstawowymi elementami wymiany danych - odbiór i nadawanie pakietów, enumeracja...
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ć...
DMA Support DMA support on the SPI module is available only in slave mode. The SPI slave can trigger a DMA transfer as one byte has been shifted into the DATA register. It is possible, however, to use the XMEGA USART in SPI mode and then have DMA support in master mode. For details, refer to “USART in Master SPI Mode” on page 243. Czyli...
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.
Żeby nie było, że konspiracja, to dodam że plik definicji jest ogólnodostepny na ForumMCS, ale dla zainteresowanych ożywieniem Xmegi takiej jak w "Leonowych" modułach..proszę bardzo :D
...ś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?
Witam Choć temat nawiązuje do UARTu, to chodzi bardziej o to jak zacząć pracować z Xmegą w praktyce. Spodziewałem się, że przeprowadzka z Atmegi na Xmegę to będzie małe piwo. Chciałem zrobić prosty program typu echo, stwierdziłem – dla początkującego pewnie łatwizna – znajdę parę przykładów, przeanalizuję, spojrzę do dokumentacji, napiszę...
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 :)
Funkcja generuje prawidłowe wartości. Tomasz nie opublikowałby nieprawidłowego kodu :) Błąd jest na poziomie sprzętowym w USART, ponieważ Twoje testy pokazały dość dobrze, że CPU jest taktowany na 2MHz. Szukając tematów nt. nieprawidłowego działania USART w Xmega nie znalazłem ani jednego przypadku wolniejszego transferu. Możesz napisać do Atmel'a z...
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...
Tutaj masz kalkulator BSEL i BSCALE dla ATXMEGA: https://www.dolman-wim.nl/xmega/tools/ba... JarekC
Oczywiście wszystkie przerwania maja wpływ na programowy UART. Nie wiem co Ci tam przeszkadza. Już chociażby buforowany UART jest na przerwaniach. Kiedy więc ESP jeszcze coś tam dosyła to już może bruździć. Jeśli Ci na tych dosyłanych potem danych nie zależy to możesz, zamiast globalnego Disable Interrupts, wyłączać poszczególne przerwania aż dojdziesz...
W czym napisany jest program? Ale lepsze pytanie nie w czym ale jak? Pomijając proste programy, piszę używając maszyny stanow.... ....Ciekawe jest natomiast sterowanie LED-ami. Użyłem USART w trybie 7-bit, tyle, że należy pamiętać, że to AtMega z max zegarem 20MHz a nie Xmega gdzie ustawienie USART na 2,4Mb/s nie jest problemem...... .......jak więc...
Na ATMega644 oczywiście nie da się tego zrobić, chociażby z tego powodu, że bufor odbiornika jest jendobajtowy i odebrane znaki by się po prostu zgubiły. Natomiast z AVR da się coś takiego osiągnąć na XMEGA E5, gdy sprzęgniesz USART z EDMA w trybie wyszukiwania wzorców. Wtedy jest możliwość zgłoszenia przerwania po napotkaniu wzorca, który podałeś,...
A jak z ustawioną szybkością USART? W przykłądzie szybkość drugiego portu USART ustawiana jest na szybkość wybraną w terminalu podczas łączenia urządzeń przez CDC. Poza tym w przykładzie znaki są odsyłane, jeśli podłączone urządzenie je odsyła. Jeśli moduł BT ma wyłączone echo to znaków w terminalu nie zobaczysz, pomimo, że wszystko działa. Najprościej...
Obstawiam kłopot z wykonaniem funkcji uart_printf. Na czas jej wykonania masz blokowane wszystkie przerwania. Sprawdź flagę stanu USART - pewnie masz błąd buffer overrun. Jeśli potrzebujesz szybkości dużo wyższych niż 9600bps, to pomyśl też o XMEGA, w której odbiór danych z USART możesz zrealizować przez DMA, dzięki temu i kilka Mbps nie jest problemem.
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...
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ć... na XMEGA robię USART z wired-AND...
Lepsza opcja to timery programowe https://github.com/adamdunkels/uip/blob/...
Dokładniej to nie AVRy, tylko ATMega ma jednopoziomowy sytem przerwań, XMEGA (która też należy do AVR) ma 3-poziomowy system przerwań. ATMegi mają też sztywnie przydzielone priorytety przerwań (o ile jest w ogóle sens mówić tu o priorytetach), XMEGA mają kilka schematów priorytetowania. Tak jak piszą koledzy powyżej można zrobić obsługe nieblokującą...
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....
Tak wiem ze uzyskam z tego preskalera tylko 8 MHz ale mniejszego chyba sie nieda lub ja raczej jeszcze nie umiem ustawic. A wyswietlacz to ILI9341 jesli ma to jakies znaczenie Znaczenie ma to o tyle, że przy zapisie kontroler ten dopuszcza max. zegar SPI równy 10 MHz, a przy odczycie już tylko 6,6 MHz. Więc z SPI wygląda to nieciekawie - albo masz...
Tak. Włączyć możesz nawet wszystkie - bo każde urządzenie będzie miało własny USART. W ten sposób spokojnie do 8 możesz włączyć (bo tyle USARTów ma max. XMEGA). Oczywiście zakładam, że transfery nie są jakieś kosmiczne i np. na 8 kanałach nie polecie po 1 Mbps/kanał :) Na stronie mikrokontrolery blog masz mój artykuł na temat XMEGA i łączenia jej z...
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: https://obrazki.elektroda.pl/1436445200_... Próbowłem używać USART w trybie SPI ale nic nie dawało użycie " PORTC_REMAP=PORT_SPI_bm;" (aby zamienić...
(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): http://www.elektroda.pl/rtvforum/viewtop...
Ostatnio używałem go do transmisji po USART z prędkością 115200. Xmega może go kalibrować sama drugim wbudowanym oscylatorem 36kHz Trzeba włączyć obydwa te oscylatory i włączyć autokalibrację. Bez autokalibracji transmisja się krzaczy i masz chińskie znaki w terminalu. Z autokalibracją wszystko działa pięknie więc chyba jest wystarczająco dokładny ;)
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...
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...
Jeśli odległość pomiędzy układami jest niewielka (np w jednej obudowie), to I2C będzie bardzo łatwo wykorzystać do tego zadania, jeśli ciut większa to UART (USART) i konwertery napięć.
W ATMega nie ma takiej opcji - włączenie USART powoduje przejęcie kontroli nad pinem IO i ustawienia rejestrów portu dotyczące tego pinu nie mają znaczenia. Poza tym dla TxD nie miałoby to sensu, skoro jest to wyjście push-pull. Takie numery można zrobić na AVR XMEGA, gdzie wyjście z USART przechodzi przez bufor pinu, w efekcie konfiguracja pinu wpływa...
Prędkość nie musi być bardzo duża. chodzi mi o zrobienie takiej komunikacji jak pilot z telewizorem, projekt będzie oświetleniem sufitu, a pilotem będe sterował diodami. Dokładnie taki przykład znajdziesz w mojej nowej książce :) Jak pisałem, dioda nadawcza IR, na ktorą podajesz zmodulowany sygnał, standard obojętny, może być to wprost sygnał z USART,...
Moźesz użyć jako wejścia i prawdopodobnie jako wyjście też. Z pewnością można tak skonfigurować USART w trybie SPI, co jest wygodniejsze, ze względu na buforowanie.
Dziękuję, cieszę sie, że książka się przydaje. BTW, jeśli używasz XMEGA128A3U to niepotrzebnie używasz FT232 - w dalszej części książki (albo w przykładach do kolejnej) masz bibliotekę realizującą wirtualny USART po USB, dzięki czemu możesz swoją XMEGA połączyć z PC bezpośrednio. Tu też coś na ten temat napisałem: http://mikrokontrolery.blogspot.com/2011...
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...
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...
Tak to jest jak najpierw się coś robi a potem myśli :) Jeśli korzystasz z gotowych modułów w Bascomie, które nie przewidują możliwości podpięcia dwóch odbiorników IR to masz problem. Zostaje napisanie własnych. W C to mógłbym coś doradzić... W każdym razie zaprzyjaźnij się z timerem i modułem ICP. Gdybyś zamiast ATMegi wybrał XMEGA to na każdym porcie...
Zadziałało w ten sposób: zassałem z podanej przez Ciebie strony wsady .hex (dla wersji z AVRDUDE - dla tej drugiej nie chciało działać), zaprogramowałem nim Atmegę90. Atmel Studio 6,2 zobaczył programator AVR ISP MKII ale wciąż nie chciał zobaczyć Xmegi po PDI. Otworzyłem poprzednią wersję AS i w niej udało się wyczyścić zawartość Xmega po PDI. Teraz...
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...
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]http://mikrokontrolery.blogspot... programik i wszystko...
Skoro masz w ukłądzie kwarc 32768 Hz to tykorzystaj go do kalibracji programowej generatora RC, lub prościej do wyliczenia rzeczywistej wartości częstotliwości RC, na podstawie której określasz baudrate USART. A skoro to ma być energooszczędny zegarek to weź XMEGA np. E5, która raz, że może działać z USART bez kwarcu, dwa, ma stabilny generator 1kHz...
Jeśli ta transmisja RS ma być pomiędzy dwoma prockami, które są taktowane kwarcem o tej samej częstotliwości, lub wielokrotnością to problemu w ogóle nie ma, bo błąd po obu stronach będzie taki sam i się zniesie. Jeśli chodzi o transmisję do PC to po prostu policz błąd dla wybranej szybkości i sprawdź czy mieści się w tolerancji. BTW, wspomniana XMEGA...
W trybie SPI baudrate dla UART nie zawiera części odpowiedzialnej za generator frakcyjny - ze wzoru z manuala - BSEL=Fper/(2*Fbaud)-1. BTW, DRE to data register empty - budor masz tu 2 bajtowy + dana w nadajniku. Stąd też ten bit zmieni stan dopiero gdy wyślesz 3 bajty. Dlatego dla SPI trzeba być uważnym, aby nierozsynchronizować nadajnika z odbiornikiem....
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...
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
Baud rate na wyświetlaczu jest ustawione na 9600 bps, w procesorze ustawia sie rejestry BSEL i BSCALE, BSEL mam na 12, BSCALE na 0, co przy taktowaniu procesora 2MHz daje właśnie 9600 bps. Odbieram na procesorze dane z dotyku i format się zgadza z notą, więc odpada możliwość błędnego ustawienia BAUD RATE. Dodano po 4 Tym kodem odbieram dane : [syntax=cpp]...
Oczywiście klasyczne AVR nie, od dawna z AVR używam wyłącznie XMEGA, innych się po prostu nie opłaca. Nic, kiedyś się za ten projekt wezmę.
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...
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ć...
(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ą)...
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. No to zero problemu aby w programie oddzielić nadawanie od odbioru. W przypadku UASRT już to masz, w przypadku operacji na PIO trzeba tylko w programie oddzielić nadawanie od odbioru....
Tak, SPI ustawione jest na tryb 3: USARTE1.CTRLC=USART_CMODE_MSPI_gc | 2; ; //Tryb SPI tryb 3 (analogicznie jak w kodzie obsługi wyświetlacza ST7565R który też wykorzystuje tryb 3, a jego obsługę opisał kolega TMF w swojej bardzo dobrej książce) Problem leżał w tej linii: PORTE.OUTSET=PIN5_bm | PIN7_bm | PIN4_bm; Jest ona zbędna, natomiast nie do końca...
Ajć, bo ja to skopiowałem z posta wyżej. W komputerze u siebie już mam poprawione na jeden bajt. Zmieniłem trzy printfy na Twojego jednego i wynik jest taki: http://obrazki.elektroda.pl/9563186100_1... Aktualny while: [syntax=c]while(1) { TWI_MasterWriteRead(&twiMaster, SLAVE_ADDRESS, &sendBuffer[BufPos], 1, 3); while (twiMaster.status...
Oczywiście, że można na LCD, jeśli masz na pokłądzie to nawet prościej. Jeśli chodzi o obsługę SPI lub USART/SPI to masz w przykładach do mojej książki o XMEGA - przykłądy są za darmo, zawsze warto pobrać i przejrzeć.
Wyodrębniłem na potrzeby forum tylko ten kawałek kodu który odczytuje dane kalibracyjne z czujnika. Jeśli jest na forum X-megowiec bardziej zaawansowany to może coś podpowie, czemu SPI na Xmedze128 działa a na xmedze32E5 nie. Domyślam się ze chodzi tylko i część kodu z konfiguracją SPI w main() [syntax=c] #include <avr/io.h> #include <util/delay.h>...
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ż...
Poprawiłem kod zgodnie z linkiem, który poleciłeś: [syntax=c] FILE uart_output = FDEV_SETUP_STREAM(uart_putchar, NULL, _FDEV_SETUP_WRITE); FILE uart_input = FDEV_SETUP_STREAM(NULL, uart_getchar, _FDEV_SETUP_READ); stdout = &uart_output; stdin = &uart_input; // kod // void uart_putchar(char c, FILE *stream) { if (c == '\n') { uart_putchar('\r', stream);...
-te dławiki na AVCC nie są potrzebne - nie korzystasz z ADC (nawet jeśli korzystasz to wymagane są one przy superdokładnych pomiarach), - przez rezystor 1 MOm łączysz do masy osłonę gniazda USB, masy USB i układu łączysz bezpośrednio, - na USB nie ma 3,3V, jest 5V, które ci upali procka. Jeśli zasilasz układ z USB potrzebny jest LDO na 3,3V, - do realizacji...
XMega256A3 M25P128 Schemat http://obrazki.elektroda.pl/9943428700_1... kod [syntax=c] void M25P128_SPI_INIT(void) { // konfiguracja SPI dla M25P128 PORTD.OUTSET=M25P128_SPI_MOSI | M25P128_SPI_CS | M25P128_SPI_SCK; // MOSI,CS i SCK w stanie wysokim PORTD.DIRSET=M25P128_SPI_MOSI | M25P128_SPI_CS | M25P128_SPI_SCK; // MOSI,CS i SCK jako...
Witam. Mam problem z kodem programu. Do pinu F5 XMegi128A3U mam podpięty przycisk wywołujący przerwanie INT0. O tak: http://obrazki.elektroda.pl/6613783300_1... Kod włączający i konfigurujący przerwanie: http://obrazki.elektroda.pl/8557297900_1... PORT_ISC_LEVEL_gc używam ze względu na to, że domyślnym stanem przycisku...
Witam. Mam problem z jednoczesnym używaniem portów. Do komunikacji z komputerem chce użyć emulacji portu szeregowego, na USB. Bazując na artykule ze strony [url=http://mikrokontrolery.blogspot.com... uruchomiłem komunikację z komputerem. Wszystko jest ok. Połączenie...
tylko 15 znaków dokładnie 14, null dodaję na końcu tablicy (miały być operacje na stringach, ale może się ogarnę bez tego) to LCD od nokii 3310 na pcd8544 chciałem "na szybko" zrobić konsolę do usart, bo nie mam drugiego usart do wyświetlania tego co biega po pierwszym, a przesiadanie się na xmega nie ma sensu...
Witam dziękuję za odpowiedzi. Oczywiście przypisanie wartości stopy do int'a było moim bezmyślnym babolem. Przelecę nią przez "dłuższy" typ do metrów w int'cie i zrobię zaraz testy. - Soft odbiera poprawnie, ale do testów na szybko używam terminala. - Aż takiej dokładności konwersji jednostek nie potrzebuję. Wystarczy przybliżenie *0.3 ;) - No magia....
Czy ten zapis jednoznacznie świadczy o fakcie pisania w ASM ? Usartc0_data = zmienna Gdyby to było w asemblerze, to zapisałbyś to jakoś tak: [syntax=asm] LDS R24,ZMIENNA STS USARTC0_DATA,R24 lub z użyciem rejstrów indeksujących: LDIZL,LOW(USARTC0_base) LDI ZH,HIGH(USARTC0_base) LDI XL,LOW(ZMIENNA) LDI XH,HIGH(ZMIENNA) LD R24,X STD Z+0,R24[/syntax]...
Zmienne globalne zajmują...... Pewnie ram dla led jest rezerwowany w chwili uruchomienia biblioteki przez memalloc. Gdybyś sam pisał obsługę led to użyłbyś tablicy o określonym rozmiarze dzięki czemu wiedziałbyś ile ram zajmuje program. Poszukaj jak wyświetlić ilość wolnej pamięci ram w czasie działania programu. Jakiś freemem jest. Trochę oszuka ale...
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,...
Ustawianie zegara http://obrazki.elektroda.pl/9237508000_1...
można wziąć większy procek, np. ze stajni AVR XMEGA. Raz, że masz procek o 1/3 szybszy, to jeszcze możesz zrobić synchroniczny USART z wykorzystaniem DMA, co praktycznie zapewni brak obciążenia obu procków. Pamięć dwuportowa to raczej ciekawostka :) Jak już xmega, to chyba można jeszcze lepiej. Połączyć PORT<->PORT i w "Masterze" uruchomić Timer...
Sprawdziłem ceny scalaków i trzeba przyznać iż Xmega jest dość droga aczkolwiek nie wszystkie. Obstawiam ten konkretny model : ATXMEGA128A1U-AU SMD w cenie około 15zł USB Full Speed Device wbudowany. uC z rodziny XMega, 128k Flash, 8K SRAM, 78I/O, 8*USART, 12bit ADC, DAC, 4 komparatory analogowe, SPI, TWI, moduł crypto AES/DES, RTC, BOD, TQFP100, Ucc...
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...
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...
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...
to raczej jakaś nisza rynkowa, np. sterowniki dzwonów w katedrach w Belgii. 👍 Faktycznie, ciekawe, czy da sie tym PIC-em sterować WS2812 przez USART lub SPI. W AVR nie ma z tym problemu (piszę o Mega), w Xmega, dzięki DMA, zero problemu.
Cześć :) Postawiłem sobie za zadanie opanować i dobrze zrozumieć bibliotekę uart od Atmela. W poprzednim poście zastanawiałem się nad przerwaniem TXC, a teraz próbuję wykonać coś w rodzaju echa - mianowicie znaki, które wyślę z terminala do procka chcę wysłać na terminal w takiej samej kolejności + liczba informująca o ilości odebranych znaków. Popełniłem...
Przechodzę na Xmegę 32MHz z powodu pamięci i wydajność będzie porównywalna. :) Fakt, porównywalna. Np. liczbę 1 można porównać z liczbą 5. 32 MHz * 0.3 DMIPS/MHz też można porównać z 40 MHz * 1 DMIPS/MHz (F0x) ...albo z 84 MHz * 1.2 DMIPS/MHz (F401) Miałem nic nie pisać ale trochę manipulujesz faktami. Szybkość jest ważna, ale tylko jeśli jej potrzebujemy....
Wybrać cokolwiek współczesnego, a nie drogi, mało wydajny i kłopotliwy w programowaniu zabytek. Patrz tutaj: http://www.elektroda.pl/rtvforum/viewtop... Mam wrażenie, że porównujesz 8- i 32-bitowce mając świeżą wiedzę o 32-bitowcach i informacje tak sprzed 10 lat o 8-bitowcach. Z argumentów, które podałeś w tamtym wątku na dzień dzisiejszy...
Zgodzę się, że w wolnym systemie przerwania wielopoziomowe mają jakiś sens. Zmieniałeś w jakiejś architekturze priorytety przerwań ? Przydało Ci się to w jakimś realnym a nie akademickim przypadku ? W ARM ustawiam priorytety z lenistwa (nie chce mi się liczyć) ale pewnie wystarczyłby jeden. W 8051 i Z-80 to często konieczność (szybka transmisja USART),...
Dzięki za pomoc :) atxmegi wolalbym uniknąć bo z tego co widziałem nie ma żadnych w obudowach dip a narazie wszystko robie na płytce stykowej To co, że nie ma żadnej w DIP? Kupisz, albo zrobisz sobie sam moduł do stykówki: http://mikrokontrolery.blogspot.com/2011... lub gotowe: http://mikrokontrolery.blogspot.com/2011...
Jednak nasuwa mi się dosyć smutna refleksja po kilku szkoleniach z mikrokontrolerów - 90% programistów embedded nie potrafi wykonać prostych rzeczy. Ktoś na szkoleniu ma wykonać step-by-step proste operacje, np. sterowanie PWM diodą i nie jest w stanie tego zrobić. Pytanie więc, na ile te nowe bajery mają czysto teoretyczne zastosowanie? Raz byłem...
Możliwości debuggera limitują możliwości debugowanego mikrokontrolera, więc niezależnie, czy stosujesz Atmel-ICE, czy JTAGICEIII to możliwości są takie same. Kabeli w przypadku Atmel-ICE są o tyle istotne, że stosuje on złącza 50mils, które nie są popularne i dostępne w sklepie za rogiem. Także nie zawsze sobie można samemu zacisnąć potrzebne kabelki,...
Tak, Atmel już się tym chwalił. Jak dla mnie to nic ciekawego,bo: - poprawa stabilności oscylatora RC dla transmisji USART, - poprawa dokładności napięcia referencyjnego, - unikalny ID układu, to wszystko już mam w AVR XMEGA od lat. Ja bym się bardziej cieszył z połączenia AVR np. z CPLD, kiedyś mieli taką hybrydę o nazwie FPSlic, ale chyba sprawa umarła....
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ć.
Hmmm... no dobra w takim wypadku chyba nie ma różnicy czy jest to SPI czy USART w trybie SPI? W sensie skarmiania danymi nie ma.` Jeżeli chcesz odciążyć program od wysyłania lub odbierania, to musisz zastosować sprzęt, który oferuje DMA. Tak jak pisałem ARM-y, XMEGA o ile pamiętam to tylko w slave mode lub usart w spi mode w trybie master (ale xmeg...
1. Zamiast pisać: #define DI_INIT()PORTC_DIR |= 0x20/* Initialize port for MMC DI as output */ #define DI_H() PORTC_OUT |= 0x20/* Set MMC DI "high" */ #define DI_L() PORTC_OUT &= 0xDF/* Set MMC DI "low" */ możesz zapisać: #define DI_INIT()PORTC_DIRSET = 0x20/* Initialize port for MMC DI as output */...
Atmega jest podłączona bezpośrednio do GPS-a. Na razie zwiększyłem zegar do 2 MHz-ów. Nie do końca jestem przekonany do tego kodu... Może to jego wina, że wyświetla takie głupoty? Ja tam nie wiem dlaczego wewnętrzny osc. RC miałby uniemożliwiać poprawne działanie UARTA. Jeśli procesor ma pracować w temperaturach zbliżonych do temperatury popularnie...
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,...
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...
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...
usart xmega interrupt usart xmega xmega częstotliwości
grzałka defrostu licznik energii pomiar rzuca bębnem
blokada operator pralka głośno wiruje
Płyta główna Foxconn RS740M03-8EKRS2H - specyfikacja i zastosowanie Przetwornica 24V/230V piszczy - przyczyny i rozwiązania