brne Flaga_Z_0 Zdaje się, że ta instrukcja jest zbędna. [syntax=avrasm]LDIR17, &B01010101 MOVR1, R17 RCALLSprawdz_bit ;------------------------------------- Sprawdz_bit: ldiR16, &B10000000 Sprawdz_bit_x: movR2, R1 andR2, R16 breqFlaga_Z_1 ;Jeśli bit w bajcie = 1 to zrób coś rjmppomin1 Flaga_z_1: ;Jeśli bit w bajcie = 0 to zrób coś Pomin1: lsrR16 brne...
No dobra Piotruś arm jakiej firny ? Tomek Xmega i C ja AVR i asembler , ktoś coś wypicuje na picu? No to jeszcze ST i Frescale i będziemy mieli całkiem fajny przekrój mikrokontrolerów z rynku . Zapraszam koledzy takiego tematu nie było porównamy jak się koledzy zmobilizują kilka podejść na różnych platformach do tego samego zagadnienia . Kto coś skrobnie...
Napisać i przetestować algorytm w C, potem (jeśli musisz) przenieść na asembler i sprawdzić, o ile byłeś gorszy od kompilatora.
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 - wyjdzie prościej, taniej i ze 20 razy szybciej...
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 co CM4 :) A na poważnie, jeśli porównujesz na podstawie...
Zarys. AVRy to sympatyczne uC (mikrokontrolery) firmy znanej chyba wszystkim z produkcji legendarnej "51" z pamięcią Flash - http://www.atmel.com . 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. Dodatkowo posiadają mechanizm...
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 zamiast 128A1U. Tylko ten drugi ma dla nich wsparcie.
Proponuje Atmel Studio symulator i analizowac co kody robią. A możesz mi napisać dlaczego się męczysz w asm. Jest to zadanie w szkole? Bo nie rozumiem po co się tak pałować. A i tak jak widać efekt jest średni. Asembler tak naprawdę dobrze znać, żeby czasami napisać jakąś krótka funkcję do C (aczkolwiek już mi się to od dawna nie zdarzyło).
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 przerwaniu (jednym w wyjątków potwierdzających regułę...
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 i nie doszukuję się błędów w kompilatorze. Prawdę...
Nie znam języków wysokiego poziomu - więc program jest w asemblerze, ale jeszcze raz powtarzam - nie przypisuję go sobie, ja go jedynie dostosowałem do moich potrzeb. Nie jestem programistą ale wydaje mi się że w zastosowaniach gdzie priorytetem jest określony czas obiegu pętli (np w falowniku) asembler się najlepiej sprawdzi, bo mamy kontrolę nad...
Żeby nie było - optymalizacja też może wchodzić w grę. Nowoczesne kompilatory potrafią (czasami) rekurencję zamienić na pętlę, ale nie należy zbytnio na tym polegać bo to ruletka. Jak chcesz sprawdzić czy tak się stało dla drugiego przypadku to trzeba porównać asemblery
To spróbuj odwołac sie do portów powyżej 0x3F... Potem spróbuj odwołac sie do portów Xmegi lub nowych AVRX... Tam porty mają adresy dwubajtowe. I co z tego? Dawno już nie robiłem niczego na AVR , ale taki ARM ma adresy 4-bajtowe (32-BITOWE) i nie ma z tym żadnego problemu. W asemblerze robi się to dziecinnie łatwo . Zapewne chodzi ci o adres Bazowy...
Konwersję koloru z różnych formatów, np. 565 na 888, alfablending, blending przy antyaliasingu, operacje logiczne pomiędzy maską i obrazem. Nieprzypadkowo nawet na PC spore części sterownika grafiki są napisane w asemblerze.
Ale sprawdziłeś wygenerowany kod? Bo na 90% kompilator sam wygenerował to co tak pracowicie wstawiłeś w asemblerze - a jeśli nie to prosta zmiana opcji kompilacji, dodanie inline itd. spowoduje, że taki kod powstanie automatycznie. Ja niedawno pisząc w C podobną funkcję uzyskałem ok 14 Hz odświeżanie na Matrycy 320x240, w trybie równoległym 16 bitowym...
Czytając ten wątek czuję się młodszy o 25 lat. ;)
Albo zrobić na XMEGA, co nie wymaga kombinowania w asemblerze, można to napisać w czystym C. Masz 32 MHz bez przetaktowywania, czyli pewne działanie, + DMA, dzięki czemu procek praktycznie sprzętowo generuje obraz, więc może albo spać, albo robić inne pożyteczne rzeczy. Cały kod generacji obrazu to jakieś 20 linii.
Programowe generowanie sygnału video w jakimkolwiek standardzie jest zadaniem krytycznym czasowo, dlatego bez asemblera niewiele zwojujesz. Nawet w asemblerze trudno uzyskać więcej niż 100 punktów w linii. Zresztą zerknij na: Rejestrator przebiegów cyfrowych - przystawka do TV z EP Rejestrator przebiegów analogowych - przystawka do TV z EP Nie 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 funkcje arytmetyczne zaimplementowane w C. Jaki jest więc...
Takie 8 programowych timerów to jak znalazł do czajnika. A przy wzroście prędkości wynikającym ze zbawiennego użycia assemblera to nawet wodę szybciej zagotuje i możesz jeszcze sam kawę zaleje w czasie który mu pozostał. Fredek może napiszesz jak to zrobić w C uwagi na temat asemblera są raczej wizytówką tego jak "optymalnie" wygląda kod w C jak go...
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 klikając prawym przyciskiem myszy na GPIOR i patrząc...
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 czysty asembler, albo C ze wstawkami w asemblerze....
Podany kod działać nie może, bo jak zmiennej typu uint16_t chcesz przypisać coś więcej niż 0xffff? A ostrzeżenie kompilatora mówi tylko, że w sposób niejawny z wartości integer robisz wskaźnik. Wystarczy to zrobić w sposób jawny, czyli wykorzystać rzutowanie typów. A jeśli nadal będziesz miał problemy to pomaga rzut oka na plik lss, zawierający wygenerowany...
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 tu jest problem. Próbowałeś odpalić program w debuggerze...
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 XMEGA - 32 MHz, przy czym liczniki mogą być taktowane...
Owszem, software reset zeruje cały procesor, lecz ty go nie wykonujesz. Skok do bootloadera nie prowadzi do resetu. Bootloader znajduje się na końcu pamięci FLASH, stąd np. dla urządzenia ze 128 kB FLASH jego adres rozpoczyna się na 0x10000 i końcy na 0x10fff. Tak jak pisałem, jeśli to ma być skok, to zamiast jakiegoś hokus-pokus użyj instrukcji JMP...
Nie wiem czemu ale jakoś do mnie nie dociera że microchip "łyknie" atmela, po co atmel opracowywał by xmega by oddać to za końskie caco ;] ...
Wysłanie sygnału start lub stop sprowadza się do zapisu odpowiedniego bitu w rejestrze nie powinno być więc problemu z bezpośrednim dostępem do rejestru z poziomu c lub przy użyciu wstawki w asemblerze . Pomijaj tu z jakiego powodu masz taką potrzebę . Przy odrobinie wprawy można też włożyć rączki w bibliotekę i zrobić interesujące cię poprawki lub...
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)
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]...
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 z 1284p lub oryginalny JTAG ICE3 i ściągnąć w pełni...
Witam , Zaczynam z AS6, dotąd używałem 4.18 głownie z asemblerem Pytanie dotyczy możliwego błędu symulacji prostego kodu w AS6, do potrzeb zapytania sprowadzonego do wersji jak niżej : http://obrazki.elektroda.pl/4044092400_1... również wygenerowany kod obsługi jest poprawny http://obrazki.elektroda.pl/7240738500_1...
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 ?
Tak. Na początek wyrzucić RET po RJMP Piksel_rowna_sie_jeden. A następnie, analizując ten zestaw instrukcji napisać równoważny kod: [syntax=armasm]Piksel_rowna_sie_zero: RET [/syntax] Skoro kasujesz R16 instrukcją CLR R16, to po co ładujesz tam literał przez LDI R16,0? Bez sensu. Skoro w R16 jest zero, które wymusiłeś, to po co sprawdzać warunek czy...
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...
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 , prędzej wróciłbym do asemblera .
Chętnie bym ci pomógł, ale używasz stałych, zamiast symboli i trzebaby to teraz zdekodować czytając notę procesora, Ogólnie zapis do EEPRON w XMEGA odbywa się blokami - czyli po zmapowaniu EEPROM do SRAM, modyfikujesz odpowiednie komórki (co ważne, muszą one być w obrębie jednej storny EEPROM), a nastęnie dokonujesz zapisu strony. Symulator działa ok,...
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ść :)
Program nie może robić przerw - sterownik interpoluje ruch w wielu osiach i zakłócenie spowoduje zmianę krztałtu - np 2 silniki X i Y tną po okręgu i nagle jeden staje. Ta zasada dzialania to nie muj wymysł - tak działają inne takie układy, sa gotowe projekty ale oparte na starych kostkach np dodatkowe cpld lub wszystko nadgonione asemblerem. [url=https://en.cs-lab.eu/product/csmioi...
Kwestia ustawień kompilatora, u mnie: [syntax=c] TypBity0 *Bity1 = (TypBity0*)&GPIOR0; Bity1->bit0 = 1; 24c:00 9a sbi0x00, 0; 0 [/syntax] [syntax=c] #define Bity0 (*(volatile TypBity0*)&GPIOR0) Bity0.bit0 = 1; 24c:00 9a sbi0x00, 0; 0 [/syntax] czyli jak widać jest ok, na XMEGA256A3BU. Niemniej trzeba sobie zdawać sprawę z tego, że kompilator może ale...
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.
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ń UART czy SPI, to nie może obsłużyć żadnego innego przerwania,...
Zamiast książek zapoznaj się z 9. rozdziałem specyfikacji USB. Jeżeli to USB 2.0, to pobrać możesz tutaj: http://www.usb.org/developers/docs/usb20... 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...
W zasadzie książki o x-mega w języku polskim nie ma , sama dokumentacja producenta napisana jest bardziej pod użytek języka C chcąc sobie poradzić z niektórymi rzeczami trzeba uciekać się do różnych sztuczek . Bardzo chętnie przeczytał bym książkę o X-mega i peryferiach ,które ma na pokładzie . Szczytem radości była by książka traktująca o x-mega w...
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ę najpierw dać ifa sprawdzającego skąd ono pochodzi czyli np:...
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 koloramy jeśli się wykorzysta np. 3 kanały SPI.
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.
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 zrealizować zadania. atxmegi w zupełności mi wystarcza. AVRtiny/mega...
O ile pamiętam to tmf w jednej z książek pokazywał właśnie ADPCM na Xmedze :D A projekt... niezły bajer, ale taka ilość asemblera przyprawia o ból głowy. Ciekawe ile godzin na to zeszło autorowi. <obowiążkowa uwaga o wydajności 32-bitowców> A lepsze ARMy uciągną nawet Opusa zaimplementowanego w C. ;) </obowiążkowa uwaga o wydajności 32-bitowców>
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, bo ma 13-bit, ale interfejs to SPI. Piny SPI mam już...
xmega reset enkoder xmega xmega event
content filtering schemat instalacji elektrycznej autocad przecieka pralka
zawór napełniający philips 55pus7334
Toshiba 55UA3A63DG Vestel 17MB170 Board Swap: Image Offset, Sound OK, USB Recovery Needed Winbond W29N01GVSIAA NAND Flash Details for LG 715G8003-M01-B00-004K Mainboard Boot Issues