Witam, bawię się jako początkujący procesorami ARM i Xmega. I mam kilka przemyśleń, nie wiem czy słusznych. Zależy mi na bardzo szybkiej reakcji na przerwanie zewnętrzne INT. I tu jest moja wątpliwość, otóż co z tego, że taktowanie wynosi 72MHz, jeżeli w każdym przerwaniu zewnętrznym muszę...
I jest rezultat mej nauki Asemblera. LPM , zamiast ELPM . Owszem, w XMedze ELPM działa w SRAM, ale nie ma go chyba w ATmegach.
Mogę potwierdzić, że asembler z gcc te rozkazy akceptuje. Nie testowałem czy asembler z AS sobie z nimi radzi, ale powinien. W każdym razie symulator z AS nie ma najmniejszych problemów po natrafieniu na nie - prawidłowo je deasembluje i symuluje. Być może wybrałeś niewłaściwy procesor - np. XMEGA128A1...
Jeśli mogę coś doradzić, to na początek nie staraj się porównywać asm do C, porównując krótkie fragmenty kodu możesz poczuć się sfrustrowany. Zacznij pisać w C, a optymalizacje zostaw na później, wtedy kiedy będą naprawdę potrzebne. Jak rozwiązać problem przy pomocy makr możesz podglądnąć w Atmel Studio...
Hurra, hurra, Napisałem w osobnym proj. tylko main.c: i poszło , poprzednie próby robiłem w 8-mio plikowym projekcie , i nie chciało , ale teraz już dam sobie radę - gdzieś coś się "pokiełbasiło" ps. AVR bez typu 24 bit ? dla mnie nie do zaakceptowania , i tak bym nie darował :D ,...
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: LDI ZL,LOW(USARTC0_bas... ZH,HIGH(USARTC0_base) LDI...
Ale Atmel Studio nie wymusza na tobie korzystania z C++. Możesz symulować kod w asemblerze, C i C++ oraz wszystkim co jest w stanie wygenerować plik elf zawierający informację dla debugera. Powodzenia na przyszłość :)
Przez DMA nie da się, bo te rejestry musiałyby leżeć w kolejnych komórkach pamięci. Z drugiej strony to dlaczego tak dziwacznie podłączyłeś ten kontroler? Nie lepiej było wykorzystać normalną szerokość szyny danych - 8-bit i całość podłączyć pod interfejs pamięci zewnętrznej? W takim układzie cały dostęp...
robiw , dziękuję za odpowiedź. Jednak nie to miałem na myśli. Konkretnie potrzebuję odpowiednika SBI i CBI w asemblerze. Przy czym CBI zeruje bit w rejestrze, natomiast SBI ustawia bit w rejestrze. Przykład [syntax=avrasm]SBI PORTD, 0 CBI PORTE, 1[/syntax] Ja potrzebuję sprawdzić bit w bajcie.
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...
Obsłuży przy 16 MHz i programowaniu w asemblerze lub wstawkach i NAKED. Czyli - jak się dobrze nagmnastykujemy, to może uda nam się uzyskać to samo, co na każdym Cortexie mamy bez asemblera, bez problemów i taniej, z dużym zapasem mocy obliczeniowej. Ponadto ATmega jeśli obsłuży te 260 k przerwań...
A jaka to róznica jak masz go skompilowanego w pliku obiektowym. Linkujesz tylko ze swoim asemblerem. Dodano po 31 PS - oczywiście najpierw musisz skompilować plik w C Jeszcze dwie rzeczy: 1. Czy font jest z lewa na prawo, prawo na lewo, góra - dół czy dół - góra to jest niewielka zmiana...
Kolega TMF już pisał, jak mogą być przydatne wstawki ASM w C. Wstawki!!. Naprawdę daruj sobie pisanie w ASM. Pisz w C i myśl o programie a nie o rejestrach. Niestety nie mam pojęcia jak się za to zabrać. Skup wysiłki nas takimi sprawami. Tak więc bez liczenia taktów mój przykład jest...
Dzielenie przez 8 to nic innego jak przesunięcie o 8 bitów w prawo, czyli w przypadku 8-bitowych procesorów wywalenie najmłodszego bajta wyniku. Dzielenie prze 8 to nie przesunięcie o 8 bitów w prawo, tylko o 3 bity. Do autora: dzielnie wlaczysz, tracisz czas, a na końcu koledzy podsyłają ci...
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...
To jest zwykła matematyka jak potrafisz uprościć wielomian uprościsz zapis w asemblerze tylko co tu upraszczać jak tam są operacje zajmujące pojedyncze cykle zegara ?
W C to będzie 15 linijej kodu prymitywnego i 25 optymalnego. Ciekawe ile zajmie Ci napisanie takiej prościzny w asm. Każdy ma prawo się katować na sposób przez siebie wybrany :) Przyznaje ci racje i to podwójnie, :) 1. Warto uczyć się C i innych języków, myśląc o programowaniu w szerszym kontekście. 2....
Oczywiście masz rację, dla EGA czy VGA w takim podstawowym trybie AVR odpada. Chociaż też nie do końca - można wykorzystać SPI lub UART, wtedy za jednym wpisem generujesz 8 pixeli i dot clock rzędu 16 MHz, a nawet 25 (dla XMEGA) jest realny. Oczywiście będzie to sztuka dla sztuki i obraz mono lub z paroma...
Jeśli chodzi o programowanie samej kości to posiadam programator willem programować mogę nim między innymi: AVR 90S4433 i z tego co zauważyłem ma on takie same wejścia/wyjścia jak atmega8, czy w związku z tym będę mógł zaprogramować nim atmega8? Nie wiem, jedno i drugie to staroć. Chcesz zostać...
Z tą różnicą w zegarach to raczej 8 MHz vs. 48 MHz (ATmega8 vs. CM0) albo 32 MHz vs. 168 MHz (XMEGA vs. CM4), czyli 5:1 lub 6:1 na zegarze i 4:1 na CPI - razem 20:1 - tak precyzyjnie. Może coś przeoczyłem, ale skąd wziąłeś to M8? No i nawet M8 to zegar 16 MHz. Cieszę się też, że porównujesz XMEGA...
XMEGA kosztuje ponad 40zł, a podobny ARM mogę kupić za 10zł, to już robi mi to różnicę. Tym bardziej, że wiele miłych bajerów, które są w XMEGA są w Atmelowskich ARMach. Myślę że to proces ubijania Xmegi. Wg mnie to była ślepa odnoga - w miare rozsądne peryferia na przestarzałym rdzeniu. Trochę jak...
Jest taka sprawa. Stworzyłem sobie pętlę For Krok Next w Asemblerze [syntax=armasm]For_plus: AD... R24 ,4 CP R24,R26 CPC R25,R27 BRNE For_plus[/syntax] Można w niej zarówno dodawać, jak i odejmować. W przypadku odejmowania należy ADIW zastąpić SBIW Jednak ma ona kilka wad. Po pierwsze maksymalną...
Witam Napisałem taki oto podprogram do odczytu bitu w bajcie. [syntax=vbnet] LDI R17,&B01010101 MOV R1, R17 RCALL Sprawdz_bit Sprawdz_bit: ldi R16, &B10000000 mov R0, R16 Sprawdz_bit_x: mov R2, R1 and R2, R0 breq Flaga_Z_1 brne Flaga_Z_0 Flaga_z_0: 'Jeśli bit...
a nie mam zamiaru uczyć się peryferii, asemblera tylko dlatego, Assemblera na ARM? Na AVR piszesz w ASM? tylko dlatego, że będę miał 32 bity do dyspozycji, Więcej ram, SPI, I2C, RAM, FLASH, DMA często w niższej cenie niż AVR. Mógłbym zasypać przykładami, gdzie AVR, nawet Xmega, nie ma szansy...
(at)tmf Trochę offtopic, ale czuję się wywołany do odpowiedzi w poście #9. Czy można zrobić na AVR32 kartę dźwiękową w systemie 7.1 podłączaną przez USB, która może również odtwarzać i nagrywać dźwięk na kartę pamięci? Ta karta ma również regulację głośności każdego z kanałów, korekcję opóźnienia...
Zarys. AVRy to sympatyczne uC (mikrokontrolery) firmy znanej chyba wszystkim z produkcji legendarnej "51" z pamięcią Flash - . Rodzina ta należy do procesorów RISC - choć lista rozkazów jest dość rozległa Smile. Większość rozkazów wykonują w JEDNYM takcie - w przeciwieństwie do np. 12 taktowych MCS-51....
...uważam używanie AVR-ów w nowych konstrukcjach za nieporozumienie. Droższe, wolniejsze, uboższe, przestarzałe. Microchip gwarantuje ogólnie dostępność produktu przez 10 lat od wprowadzenia. Atmel wprowadził Xmegi (128A1) na początku 2008 roku. Od 2013 roku te układy mają status NRND. Nowsze, 128A1U...
Czyli z tego co wywnioskowałem, ogarnąć 8051 we wszystkich aspektach, żeby jakoś zaznajomić się dokładnie ze wszystkimi funkcjami, a następnie zająć się jakimś AVR atmega itp? Nauka '51 obecnie do niczego ci się nie przyda, to bardzo stara architektura, pokazująca tylko jak wiele w ciągu ostatnich...
Trochę nie na temat, ale nie uważasz, że nowe Megi to pudrowanie trupa? Chodzi o stosunek ceny do możliwości. Nie dziwię się, że Mega nie ma DMA, bo i niby po co? Gdzie stworzyć bufory dla DMA, np w przypadku LCD? Jak sensownie wykorzystać RTOS? Na te zadania potrzeba RAM. Jedyny sensowy Mega to 1284...
Co około 10uS będziesz otrzymywał bajt danych z którym musisz coś zrobić, w dodatku nie jest to jedyna rzecz, jaką musisz robić. Trzeba z tych danych coś policzyć, jakoś przerobić. Jeszcze musisz obsługiwać swoją pamięć i inne rzeczy. Jak Ci się wydaje, czy jakikolwiek 8bit avr czy pic da radę ? Nie...
Trochę już odbiegliśmy od głównego wątku, ale nikt nie narzeka, więc ok. Na szybko: Dokument Atmela, który podałeś nie dotyczy gcc, to stary dokument. tak tak, wiedziałem o tym, że był pisany pod kątem IAR. W każdym razie sporo zasad jest tam uniwersalnych. Chociażby kwestia optymalizacji globalnych...
Mając procesor 32-bitowy nie będziesz musiał myśleć o bankach i ich przełączaniu, a operacje na adresach będą wykonywane w jednej instrukcji, a nie w 3..8 jak w Xmega. nie rozumiem tego katowania się 8-bitowcami w aplikacjach, w których przestrzeń adresowa musi przekraczać 64 KiB. Weź dowolnego Cortexa...
Myślę, że najodpowiedniejszym wyborem na początek będzie jakiś mikrokontroler z rodziny AVR z tego względu, że nie są to bardzo skomplikowane układy i pozwolą ci poznać podstawy .Do tego polecam dobrą książkę i tutaj mogę zaproponować: "AVR i ARM7. Programowanie mikrokontrolerów dla każdego" autorstwa...
Poprostu chce się krok po kroku nauczyć programowania mikrokontrolerów.W internecie znalazłem przykładowe filmiki czy artykuły o migających diodach. No nie jest to za ambitne, chodzi mi o to czy jak już trochę się nauczę czy będzie to można dalej wykorzystywać. Właśnie dlatego zaczyna się od migania...
Tak, może być kolorowy - tylko sobie to policz. Nawet dla podanych przeze mnie szacunkowo 160*200 pikseli i zaledwie 256 kolorach potrzebujesz 32 kB pamięci RAM. Masz tyle w Arduino? Raczej nie. Gotowego kodu raczej też nie uświadczysz. W Internecie można znaleźć takie kody, ale jak pisałem jest to albo...
Później musiałem spędzić kilkanaście wieczorów i nocy na ujarzmieniu asemblera avr (do tej pory programowałem tylko 8051) i samego mikrokontrolera czyli timerów przetwornika ac, układów pwm oraz po tym wszystkim na pisanie programu. Rozumiem że cały program powstał w Asemblerze. Jeżeli tak to...
Dwa, ok, można odczytując rejestr rozszerzyć go do 32-bitów, a co jeśli dane są już w rejestrze? Trzeba wykonać dodatkową instrukcję, bo MUL działa tylko na typie 32-bitowym. Poza tym te zagadnienia mnie miernie interesują, bo używam C, a do asemblera zaglądam rzadko, jako że nie jestem paranoikiem...
W takim razie tylko rodzina 8051 np. AT89S8252. programowany przez SPI tak jak AVRy. 8KB flash, 256B IRAM, w miarę rozbudowany jak na standardową 51 można podłączyć zewnętrzny RAM z którego da się uruchamiać programy. Jest jeszcze AT89S8253, który zamiast 8KB flash ma ich 12KB, reszta ta sama. Natomiast...
mirekk36 , obecnie szykują się poważne zmiany w BASCOMie. Powoli dodawane są układy XMEGA, tworzone jest nowe IDE (Wreszcie mają być projekty!). Chodzą też słuchy o BASCOM-ARM, choć osobiście sobie tego jakoś nie wyobrażam. Ja o tych "słuchach" szłyszę już od wielu miesięcy ;) .... i nadal nic....
Asembler, dlatego warto umieszczac strony na granicy rownych adresow, np. 0x8000-0xFFFF, wtedy nadmiar i niedomiar latwo stwierdzic, oczywiscie i tak trzebaby wykonywac porownanie, ale tylko jedno i w dodatku proste (jedna instrukcja), co wydluzy transfer o ok. 25% lub mniej. Mozesz zastosowac XMega,...
W xmega nie przełacza się zegarów za pomocą fusebit. Przełącza się źródło sygnału w programie. Przykład jest umieszczony na stronie Atmela pliki AVR1003.pdf i AVR1003.zip [url=]Link Przykład jest w C ale to nie problem w asemblerze ustawić odpowiednio te same rejestry (w tej samej kolejności). Nie...
Czekam już od dawna na jakiś krok w stronę Xmega i nowych peryferii usb ,can, dma,ebi,itd . Problem w tym że autorzy omijają te tematy szerokim kręgiem a jak już piszą to sprowadza się to do trzynastu i pół linijki informacji jak to jest w przypadku książki szanownego kolegi tmf . Mogę zrozumieć że w...
Interfejs równoległy to tylko konieczność skorzystania ze scalonego drivera, np. czegoś z serii xxx245. SPI z konwersją na tranzystorach i tak ci na 20 MHz nie pójdzie, zresztą ATMega taktowana z 20 MHz ma max SPI 10 MHz. I tak to karkołomne zadanie na tranzystorach. Swoją droga transfer danych to nie...
Pomyślałem że coś niedobrego dzieje się z pamięcią RAM może wada lub mała ilość ... Mam nadzieję że kolega TMF nie będzie bazował jedynie na języku C cały czas brakuje mi jakiejś ściągi z asemblerem do tych AVR-ków (Xmega)
Od końca - wiem, bo napisałem obsługę TV na XMEGA :) Dałoby się zrobić RGB, jedynym problemem jest pamięć - taki obraz zajmuje jej naprawdę dużo (robiłem 320x200/256 kolorów, 64000 bajtów). Wymaga to więc dodania modułu pamięci, a to już się robi powoli skomplikowane elektrycznie - chociaż akurat dodanie...
Na etapie optymalizacji kompilator zamienia instrukcje RMW na atomowe SBI/CBI, w porcie gcc dla AVR jest specjalna sekcja optymalizacji tego dotycząca. Co do rejestrów umożliwiających realizację operacji logicznych na sprzęcie to tak właśnie jest w przypadku GPIOR, problem raczej tkwi w samym języku...
Jeśli kolega ma zamiar pisać poważne programy a z objętości kodu można wywnioskować że hello world już kolega przeskoczył najwyższa pora by przesiąść się do bardziej profesjonalnego środowiska . Wydanie prawie 500PLN na Bascoma to strata pieniędzy . Za taką sumę może kolega zakupić np DRAGONA I XPLAINA...
Typ bool masz też zdefiniowany w stdbool.h. Zdefiniowanie zmiennej jako bool czy _Bool nie spowoduje, że dostęp do niej będzie w jednej instrukcji. AVR nie ma po prostu takich instrukcji. Chyba, że to nowy rdzeń XMEGA, ale nawet wtedy odpowiednie operacje trzeba by zrealizować jako makra/funkcje w asemblerze.
Brakuje w tym zestawieniu możliwości wyboru kilku opcji oraz możliwości "Inne". Bo w moim wypadku wygląda to tak: AVR - od tego startowałem i do mniejszych projektów zdecydowanie fajne procki. Aczkolwiek pewne rozwiązania mocno mnie w nich denerwują (progmem np. albo brak remapowania pinów). Z...
Książki o których piszesz nie były pierwszymi o AVR. Pierwsza pojawiła się co najmniej 7 lat wcześniej. Jak popatrzysz na rozwój portu gcc dla avr to zauważysz, że wcześniej nie było większego sensu pisać o c dla AVR, stąd dużo wcześniejsze książki poruszają inną tematykę (asembler, BASCOM). Co do kursów...
No tak chciałem właśnie przeglądnąć te dane katalogowe :) Tak podejrzewałem ale na pierwszy rzut oka oceniłem dosłownie na rzut oka :) no cóż w szkole wszystkiego nie naucza a na pewno nie nowości. Gdzieś ten model widziałem jednak on już 250 zł kosztuje to już sporo załóżmy że szukamy czegoś do...
Xmega niby jest super, ale jeżeli chcesz puścić dane przez port SPI (max. 8MHz, więc teoretycznie 200pxl), to nie masz bufora i pojawia się kwestia stabilizacji obrazu. Bufor ma tylko USART w trybie SPI, ale on pracuje z prędkością do 4MHz (100pxl/linię). Możesz użyć DMA do transferu danych na port,...
Mam już napisany w dużej mierze program w asemblerze pod mikrokontroler Atmega16. Xmega to inna architektura i robienie wszystkiego od nowa. Przetwornik A/C 10-bit to dość mało. Wykorzystując wewnętrzny komparator i wzmacniacz odejmujący dodałem jeden bit, ale to i tak za mało. Dobry jest MCP3302,...
A to ma być coś na AVR? Jeśli tak, to kup sobie moduł Xplained XMEGA-A1 - masz tam 2x12-bitowy ADC + 2x2-kanałowy 12-bitowy DAC + 8 MB SDRAM. Jeśli niekoniecznie AVR to warto się zastanowić co znaczy "obróbka sygnałów analogowych" - może jakiś moduł rozwojowy z VS1063? Masz tam pełny procesor DSP + niezbędne...
Zamiast książek zapoznaj się z 9. rozdziałem specyfikacji USB. Jeżeli to USB 2.0, to pobrać możesz tutaj: Możesz też poszukać opisów dla klasy CDC i wtedy będziesz mógł świadomie kształtować zachowanie urządzenia. Reszta to tylko otoczka. Przyznaję, że ktoś w ST trochę to wszystko skomplikował próbując...
Oczywiście że nie ma napisane w nocie otwarcie. Ale jak sobie wyobrażasz przekazywanie na wyjście poszczególnych bitów jak nie szeregowy rejestr przesuwny? Mam w opracowaniu matrycę diod i śmiga. Poszukaj mojego wątku na temat xmegi i WS2812B. Co do poradnika, owszem fajny do wytłumaczenia na początek...
W kilku kolejnych odcinkach kursu będzie opisane jak podłączyć DMA i zrobimy prostu generator DDS. Panie inżynierze, nie każdy choćby na oczy widział wydział elektroniki. W tym DMA mi sprawiło trudność chyba to że w adresie docelowym też jest inkrementacja, a ja zmieniałem na Fixed, bo DAC ma przecież...
BASCOM i wydajność - to się nazywa oksymoron. Żeby wyciągać jakieś sensowne wnioski trzeba by użyć sensownego kompilatora, który generuje sensowny kod. Bo tak to tylko testujesz jakość Bascoma, a wszyscy wiemy, że jako zabawka jest ok, ale bądźmy poważni :) Teoretycznie na M128 taktowanej 16 MHz, SPI...
Tak jak pisze (at)atom1477 pokaż layout płytki, dla kwarcu 16 MHz kondensatory powinny być rzędu 8-12 pF, ale dokładnie możesz je policzyć jeśli poznasz pojemności kwarcu z noty. Jest jeszcze jeden problem - BASCOM. Zobasz na wygenerowany asembler, jak wygląda procedura przełączania zegara. Być może...
Tak jak pisałem, ciągle nie jest to problemem dla współczesnych mikrokontrolerów. Sam pomiar realizowany jest sprzętowo, przez układ licznika wbudowany w mikrokontroler. Nawet proste AVR8 spełniają te założenia, taktowanie do 20 MHz, a więc teoretyczna rozdzielczość pomiaru to 50 ns, z tej samej serii...
Piotr tu ma rację nie ma spi mode w 128 chyba że zrobimy przesiadkę na 1281 . obsługa spi przy dużej szybkości niestety pożera sporo mocy obliczeniowej tak przy przerwaniach jak i przy czekaniu w bezczynnej pętli bo tam to już nie robi się zupełnie nic równie dobrze możesz w takim przypadku zrobić...
Coś te flagi przecież ustawiło... Najpierw włączasz obsługę tych przerwań, potem włączasz podciąganie pinu to flaga już ustawiona...a kasowana jest przez AVR sprzętowo kiedy obsługiwane jest przerwanie. Bascom nie musi obsługiwać żadnego kasowania flagi przerwania bo robi to sam procesor tyle, że w...
Który z AVRmega ma dwa I2C? A programowo kolega nie umie zrobić? Działa i to dobrze. Ardymenty sie kończą czy kolega chce zabłysnac wiedza na temat I2C? "Ardymenty" się nie kończą ale myślałem, że kolega trochę o tym poczyta i coś z tego, co wyczyta, rzuci mu się w oczy w odniesieniu do kontekstu...
Prawda jest także taka, iż ARM jest obecnie popularny, a większość osób na nim pracuje i coraz ciężej będzie znaleźć kogoś kto zrobić coś konkretnego na AVR Popularny jest wśród profesjonalistów którzy potrzebują szybko i tanio napisać, ale jest też kupa amatorów i wśród nich ja którzy wolą avr-a,...
a czy pamięć może się rozrosnąć magicznie? Masz to narysowane w DS Poniekąd może. W klasycznych AVR bootloader jest wykrojony z FLASH dla programu, ale w XMEGA jest to dodatkowy obszar FLASH, poza FLASH dla programu. Załóżmy, że piszę w języku C w Atmel Studio, chcę napisać program bootloadera...