.INCLUDE "m16def.inc" ldi R16, 0xFF out DDRA, R16 .EQU SYS_FREQ = 16 Petla: ldi R16, 0b11111111 out PORTA, R16 rjmp Delay 'to jest skok we wskazane miejsce a nie do procedury. powinno być rcall Delay ldi R16, 0b00000000 out PORTA, R16 tu też brakuje opużnienia rjmp Petla Delay: ldi R16, 1 ldi R16, 1 push R18 push R19 push R20 push R21 mov R20, R16 mov...
to stawiam flaszkę, że coś masz nie tak z timingami :) zrób, przynajmniej na razie, odmierzanie czasu w oparciu o timer. Nie jestem mistrzem assembera, twoja funkcja, mimo że wygląda dobrze, chyba nie działa dobrze. Ewentualnie fusy lub zła definicja w SYS_FREQ w porównaniu do rzeczywistości.
Witam! Od paru dni uczę się pisać programy w asemblerze na AVR (dokładnie AtMega16) i mam następujący problem na którego nie potrafię rozwiązać: próbuje stworzyć tablice danych w pamięci SRAM aby odwoływać się do nich instrukcją STS jednak wpisanie danych w następujący sposób nie działa: .dseg bus: .db 0xc2, 0xc6, 0xce, 0xcc natomiast "ręczne wklepywanie...
A to co masz w tej chwili tobie działa ? Mam na mysli te dwie linijki kodu ? W nocie katalogowej masz gotowce w zakresie inicjowania samego SPI jak i wysyłania i odbioru danych. Jest w c i asm. Mimo że odbierasz tylko dane musisz jednak coś wysłać choćby 0 bo wpisanie tam czegokolwiek jest warunkiem aby wyzwolić impulsy zegarowe SCK(pisząc TAM mam na...
Można bazować też na tutorialu na atmega8... Jest nieco więcej chyba tutoriali na ten uC... Oczywiście trzeba się zapoznać z dokumentacją do mega16 bo konfiguracja portów jest inna... Pozatym drastycznych różnic niema... Co do języka to bascom faktycznie jest nienajlepszy i chyba nawet nie warto się w niego pchać... W miarę dobrze znam C a asembler...
;... start: ;jmp delay rcall delay ;lub call delay ;... haslo2: ;jmp delay rcall delay ;lub call delay ;... ;---------------------- delay: ;... ;clr r31 ldi r31,255 ;... in r17,pina ; cp r17,r31 brne exit_delay ;... exit_delay: pop r23 ;... pop r16 ret ;---------------------- Niestety nie wszystko działa tak jak powinno Powyżej masz...
Witam.Szukam osoby która potrafi napisać obsługę RS na Atmega16 w asemblerze.
Gdybyś przeczytał to co Ci proponowałem to w w bardzo krótkim czasie mógłbyś napisać coś takiego i wiedziałbyś dlaczego warto jest zrobić wstawkę assemblerową. To co jest poniżej skopiuj i zapisz jako plik prj dla VMLAB gdybyś chciał pooglądać przebiegi bez lutowania. Częstotliwość można zmieniać przyciskami. ; ****************************************...
Czunik temperaury MAX6633 http://pdfserv.maxim-ic.com/en/ds/MAX663... Rejestr temperatury w czujniku jest 16bit... Pierwsze bajt odczytuje prawidlowo, natomiast drugi zawsze ma wartośc FF.
W przypadku Bascoma jest najgorsza sytuacja Nie do końca. CONFIG RC5 = PINx.y Koledze najwyraźniej sprzętu brakło, a na to nie poradzi nawet asembler.
Jeśli piszesz w WinAVR i otworzysz plik w asemblerze to zobaczysz, że każde nie używane przerwanie prowadzi do resetu. Nieużywane tzn. nie posiada funkcji obsługi przerwania. Przerwanie takie od np. przepełnienia timera może nastąpić jeśli zostanie odblokowane, ale jak mówisz w tym przypadku to nie to. Możesz po prostu wyłączyć watchdoga i upewnić się...
Tylko właśnie zależy mi na tym, żeby to było w asemblerze:(
Nie znam sie na baskomie, ale powiedz mi, skąd kontroler ma wiedzieć, ze PORTA jest wyjściowy a nie wyjsciowy tak jak zapewne tego pragniesz? pewnie trzeba dopisac set DDR A.2 na początku programu :) A swoją drogą skoro zaczynasz zabawe z programowaniem to i tak musisz poczytac o prockach AVR nieco... przy okazji może zainteresujesz sie asemblerem......
Witam, (at)Kamiljo21 W załączeniu. Jest to cały program działającego do tej pory zegarka, który pisałem kilkanaście lat temu w Atmel Studio 4 (też jest plik *.APS, który wystarczy otworzyć w AS4), co prawda na Attiny25, ale port na Atmega16 nie powinien zająć dużo czasu (może nawet obejdzie się, nie mam czasu sprawdzać pinoutu). Interesujące dla Ciebie...
ad.1 - poczytaj tutaj to ci się wszystko wyjaśni - i będziesz nie tylko wiedział o co chodzi ale jak kod pisać LINK ad.2 - pokaż chociaż fragmenty kodu, co to oznacza że obie funkcje korzystają z tych samych rejestrów ? o jakich rejestrach piszesz ? czyżby to była wstawka w asemblerze ?
Wyswietlacz nie potrzebuje zadnej skomplikowanej inicjalizacji. Po odczekaniu kilkudziesieciu milisekund po starcie uC i wyswietlacza wysylasz do obu polowek komende DisplayON i tyle. Jak wyglada ta komenda i co trzeba poustawiac i w jakiej kolejnosci jest w dokumentacji. Moj kod na Atmega16 z kwarcem 10MHz, asembler (wszystkie nazwy portu oraz stale...
Czy ten drugi zapis gdzies widziałes? Bo nie ma za bardzo sensu w przypadku rozkazu ldi. Ogólnie podana notacja mówi na które miejsce rejestru wsunąć 0 czy 1. Pozdr. N.
Pozwoliłem sobie uczytelnić kod dla pokazania jak można sobie ułatwić pisanie kodu - zmieniamy w jednym miejscu, a zmiany są uwzględniane w całym kodzie... Daje to bezbolesną możliwość dowolnego przepięcia linii sygnałowych pod inne wyprowadzenia µC przy minimalnych zmianach w kodzie (podobnie jak w językach wyższego poziomu). #include <m16def.inc>...
Twój podstawowy błąd jest taki, że procedury które podałeś są dla 2313 a on nie posiada sprzętowego I2C więc jest to rozwiązane programowo. ATmega16 ma sprzętowe I2C więc powinieneś z tego skorzystać. Kod będzie wtedy inny.
A nie mogą oba przerwania od liczników 0 i 2 działać niezależnie ? ldi R16, SYS_FREQ*1 out OCR2, R16 ldi R16, SYS_FREQ*2 out OCR0, R16 w rejestrze OCR0 mam wartość dwa razy większą niż w OCR2. Jeśli zakomentarzuje ustawienia jednego licznika i jego przerwania to drugi działa i na odwrot . Próbuje korzystać z dwóch liczników na raz i juz nie wychodzi...
witaj. buduje system kontroli dostepu, rejestracji czasu pracy oraz monitoringu jako jeden system. niestety pomóc moge tylko w asemblerze. jakby co to gg lub pw. oczywiście wszystko oparte na atmega162
Proponuje zacząć od ćwiczeń na jakimś gotowym zestwie np. coś takiego: http://sklep.avt.pl/p/pl/49612/plytka+dr... Lub szukaj pod nazwą "Zestaw uruchomieniowy". Jeśli czujesz się na siłach to możesz kupić w częściach i zlutować samodzielnie. Jak nie, to szukaj gotowego uruchomionego. Na początek sugerowałbym coś z procesorów...
No właśnie w którym, skoro mówisz że wszystko? Możesz jaśniej? Bo to Ty pisałeś że trzeba SEI w przerwaniu patrz cytat powyżej?
Zmienna 16-bitowa zajmuje 2 bajty o adresach zmienna i zmienna+1. Do r16 ładujesz zmienna, do r17 - zmienna+1 (albo odwrotnie, według fantazji). Tylko po co męczyć się z asemblerem, skoro C jest zupełnie przyzwoity na tym procesorze? W końcu to nie jakiś PIC, na którym kompilator ledwie zipie.
Jak podłączysz głośniczek z komputera tak jak pisze kolega asembler czyli 1W 8Ohm, to uwalisz port. Zawsze musi być przez opornik. Najlepiej około 100 omów
(at)t0maszu - zapomnij o takim sterowaniu serw. Kod na stronie nadaje się tylko do demonstracji, tego typu realizacja powoduje 100% zajęcie każdego MCU. Ponieważ nie może on robić nic innego, w realnym programowaniu ten kod się nie sprawdza. Jeśli cokolwiek wstawisz do pętli, albo odblokujesz przerwania to serwa zaczną radośnie tańczyć. Więc po prostu...
Pamięć jest zorganizowana w komórki 16-bitowe, objawia się to np tym że wskaźnik programu wskazuje na słowo (2 bajty) a nie na bajt. Wszystkie instrukcje muszą być więc wyrównane do granicy dwóch bajtów. Jakkolwiek z poziomu samego programu pamięć flash jest zorganizowana bajtami, więc spokojnie można w niej umieszczać tablice bajtów bez utraty pamięci....
U nas tylko się uczyliśmy asemblera na Atmega16 + na kółku trochę C.. 8051 - a co to jest?:P
Wygląda to tak,mam licznik od 0 do 255 na jednym z rejestrów. Wysyłam sobie to do PGA2311 i ustawiam głośność. Problem polega na tym że chciałbym wyświetlić wartość wzmocnienia na LCD. Obsługę LCD mam zrobioną. Mogę wysłać tekst lub pojedynczy znak. Wzór na wzmocnienie jest taki: Wz = 31,5-((255-n)/2). gdzie n to wartość licznika. Pierwszy problem jak...
peikman --> a po co ty w ogóle dokonujesz deasemblacji kodu binarnego skoro możesz sobie podejrzeć super dokładny kod i to wraz z etykietami i ładnymi opisami wprost z kompilatora!..... zajrzyj, że sobie do pliku o nazwie *.lss po zapuszczeniu kompilacji ;) .... i zobaczysz swój prawidłowy oraz pięknie opisany kod w asemblerze zamiast robić to od tyłka...
Wszystko dobrze napisales tylko zapomniales o tym ze funkcje call itp. odkladaja adres powrotu na stos, a u ciebie nie masz ustawionego tego stosu Musisz na samym poczatku, zaraz pod etykieta RESET wstawic instrukcje inicjalizujace stos: ldi temp, LOW(RAMEND) out SPL, temp ldi temp, HIGH(RAMEND) out SPH, temp Musisz zawsze o tym pamietac. A jesli chodzi...
Może to Ci coś pomoże http://www.elektroda.pl/rtvforum/topic19...
to ma byc projekt zasilajacy silniki o znamionowym 120V.. tym juz sie bawic nie bede, zas potrzebuje to ladowac.. asembler, masz moze jakies przyklady dzialania na triaku? nigdy sie tym jeszcze nie zajmowalem
Odpowiedz może być tylko jedna - ASEMBLER.
Wpisz sobie w wyszukiwarce na elektrodzie słowa 'AVR UART' (to jest właśnie układ w ATmega służący do transmisji szeregowej, np. RS232C). Znajdziesz bardzo dużo wyników, przykładowych programów, konfiguracji. Oczywiście musisz dołożyć do swojej ATmegi scalak MAX232 (też jest to w postach opisane). A do przetestowania działania samego połączenia wystarczy...
Pisałem tylko na rodzinę AVR (Tiny12, 90S2313, 90S8535, ATMega16) głównie w asemblerze, ale teraz mieszam asemblera z bascomem, bo w bascomie łatwiej robić pętle opóźniające i bascom "robi" obsługe lcd. Na tiny12 pisałem w AVRStudio, bo bascom nie daje sobie rady z Tiny12. Kiedyś też dłubałem troche na 2051, ale to w Bascomie, więc żaden wyczyn
On jest na Atmega16 w załaczeniu pierwsza cześć
W manualu od strony 129 dla Atmega16 wszystko pisze odnośnie SPI
Witam! Po kompilacji programu dostaję taki komunikat : Program will overwrite bootloader [52 to long]. Rozumiem że kod przekroczył wielkość pamięci flash i nachodzi na obszar zarezerwowany na bootloader. Za pomocą fusebitów można ustawić wielkość obszaru bootloader'a 128-1024B. Ale jak całkowicie wyłączyć rezerwację obszaru dla bootloader'a i swobodnie...
To rodzina '51. Staruszki. Możesz pisać w asemblerze albo w C. Do asemblera masz np. MCS51 a w C możesz pisać w Keilu. Możesz też zakupić uC ATMEGA162 która jest pinowo (prawie. reset jest na innym poziomie) kompatybilna.
Racja przepełni się, jeszcze lepiej. :D
Można się bawić w STMy i kombinowanie z grafiką, można kupić np. FT80x lub FT81x i mieć za parenaście złotych gotowy akcelerator graficzny, który realizuje wysokopoziomowe polecenia graficzne, w efekcie nawet 8-bitowy MCU będzie generował grafikę lepszą niż STM32Fxx... Oczywiście OpenGL jest poza zasięgiem nie tylko 8-bitowców, ale nawet wspomnianych...
Wiesz, mam książkę Baranowskiego 'ATmega w praktyce'. A to co było??? oczywiście mi pomylił się autor ale tytuł ten sam ;) więc ją masz Co do wydajności prądowej to chyba też dostałeś już odpowiedzi różne, albo drivery ULN albo zwykłe tranzystory żeby ją zwiększyć i po ptakach Żeby nie robić na jednej nodze jednej diody nawet przez te tranzystory to...
0. A moze coś powoduje reset układu (BOD, Watchdog, wiszący pin /RESET) ? 1. A w którym miejscu jest dokładnie problem ? 2. JTAG i watchdog wyłączone ? Pierdółki : 3. Od czego jest timer ? Po co bzdurne mielenie w miejscu i to przez 4 sekundy ? 4. Jeżeli RESET jest z dużych liter, to nie używajmy ReSeT ani Reset ... ;) Moze to nic w tej chwili nie daje,...
w morde niemoge ustawić tego timera w stan przechwytywania -przerwanie ma adres 0x00c? bo niewiem dokładnie (piepszona dokumentacja) -a to przerwanie jest generowane samoczynie po wykryciu zbocza kture uaktywnia przepisanie ??(qur... dokumentacja i hu.... słownik) -jakie bity ustawić w rejestrze tccr1a,tccr1b ,tryb normalny ,zegar systemowy bez skalera????...
Wracając do problemu. Ten kod co wkleiłem to jest desperacki kod mający na celu sprawdzić o co chodzi. Pierwotnie spotkałem się z tym problemem w tym przypadku: for (x=0;x<255,++x) { if (bit_is_clear(PIND,4)==0)... sbi(Pk_Wy,0); else cbi(Pk_Wy,0); if (bit_is_clear(PINB,7)==0)... sbi(Pk_Wy,1);...
A może inaczej... właśnie zrobiłem własne procki na podstawie ATMEL'owskiego przykładu na UART'cie i po użyciu tych stałych czasowych udało mi się nawiązać odpowiedź po resecie. Poniżej funkcja próby odbioru temperatury(tylko jeden slave), który zawsze daje 0x0101? Co to oznacza? Nie zmienia się ze zmianą temparatury... int16_t OW_Read_temperature(void)...
Program był pisany w środowisku Mikroluk v1.0 prerelease (czego nie podałem wcześniej). W tym programie nie ma możliwości zdefiniowania portów, ani rejestrów. W kiepskim srodowisku sie obracasz . Asembler, ktory nie zna elementarnych dyrektyw, jak EQU, ORG, #Include ... jest o kant (...) potluc! Asembler i debugger byc moze znajdziesz do sciagniecia...
Najlepiej zobacz jak obie wersje były zapisane w asemblerze, to może pokazać Ci co było nie tak.
niestety ATMega i 8051 to dwie różne rodziny. Inny asembler, inna architektura. Jak nie masz za bardzo pojęcia o tym procku, no to chyba najszybciej zaprogramujesz go w C lub Bascomie. Chociaż z tego co pamiętam ja swój pierwszy działający program na AVR napisałem tego samego dnia, w którym zacząłem czytać do niego dokumentację, czyli można go jakoś...
...Załamała mnie Twoja wypowiedź kolego korrus666... Widać programowanie w językach wysokiego poziomu strasznie Cię okaleczyło. Napisz trochę programów w asemblerze, a wyjdzie Ci to na dobre. Zrozumiesz działanie procesora (choć Atmega to już mikrokontroler) i będziesz pisał lepsze programy w swoim C, Javie, lub co gorsza Bascomie. OOO Matko! A mnie...
Ten procek możesz programować w dowolnym języku w tym także w C. Jeśli już znasz C od strony PC'ta to łatwiej będzie ci się nauczyć C dla procków bo będzie sporo różnic ;) .... zapoznaj się z pakietem AVR GCC. A środowisko programowania? hmmm ja akurat w ogóle nie znam linuxa ale pod Windows spokojnie mógłbyć do pisania programów zarówno w C jak i w...
Nie wiem co Ci "asembler" przeszkadza w usypianiu przy multipleksowych wyświetlaczach LED?! Przecież są sterowane przerwaniowo. Nie czytałem wszystkich postów, ale SLEEP powinno być wywoływane ciągle w pętli głównej jeżeli z niej nie korzystasz... Przerwanie wybudzi, wykona się, a po wyjściu z niego pętla główna znów go uśpi ... mniejszy pobór energii...
C jako taki nie był projektowany głównie dla mikrokontrolerów, więc operacje na bitach należy dokonywać używając przesunięć, iloczynu logicznego, sumy oraz ewentualnie if'ów. Przesunięcia mogą być kosztowne (brak barrel shift), chociaż dobrze napisane przeniesienie da się zoptymalizować do 3 instrukcji (skasowanie bitu, pominięcie jeśli bit źródłowy...
Witam Nie wiem czy to dobre podforum, ale temat chyba tu najbardziej pasuje. Czy ktoś mógłby mi napisać program w asemblerze na Atmege 16 który na porcie RS232 będzie oczekiwał na znak a później do odsyłał z powrotem. Wyśle mu litere a on odeśle ją. Kwarc 8 MHz, Baud 9600, brak kontroli parzystości. Ja to pisałem w bascomie, ale coś się wali i nie wiem...
Jak chcesz, to mam napisaną w asemblerze obsługę wyświetlacza KS108 na ATmega 8 ;)
Kolega robił coś takiego w pracy. Tylko on wykorzystał ATMEGA16, a program pisał w asemblerze. W układzie znajdowało się 10 diod podczerwonych, i tyle samo fototranzystorów. Każda dioda nadawała swój własny kod, i był on odbierany przez fototranzystor leżacy na przeciw diody nadającej. Całoś chodziła nieźle, i posłużyła jako bariera w prasie.
No cóż, Bascom umożliwia wstawki w asemblerze, co może skrócić obsługę przerwania...
Witam zainteresowanych, tak jak w temacie zlecę napisanie programu w Asemblerze na Atmega8 / Atmega16 Program na kilka linijek raczej, chodzi o odczytywanie zawartości pamięci ram z ww.mikrokontrolerów. Mikrokontroler podpięty juz mam pod programator usbasp. Potrzebuję pomocy bo w C, nie mogę tego zrobić a asembler a nie obczajam. Proszę o pisanie na:...
ja też uważam, że lepiej koledze autorowi, który jak widać zaczyna z AVR (przesiadka z '51) doradzić jak sobie radzić szczególnie w tak prostych przypadkach bez zagnieżdżania przerwań i budowy sztucznych priorytetów celem dopasowania myślenia do pisania softu pod '51. Oczywiście procki '51 dzięki priorytetom i ich technologii wewn są super też do specjalnych...
A ja na drugie kopytko jako ciekawostkę dodam, że ten asembler z AVRStudio ma preprocesor C, co przy umiejętnym wykorzystaniu daje podobne możliwości, jak pisanie w C... W swoich projektach przykładowo nie inkluduję <m162def.inc> tylko <ATmega162.h> wygenerowany narzędziem xmlconvert.exe też z AVRStudio.
>>> autor jeżeli nie musi to być ATmega16 to zobacz na ATtiny261...861 który ma piękny zestaw liczników do sterowania 3-fazowego z czasami martwymi, multiplexerem komparatora itp. potrzebnymi bajerami. Plus noty aplikacyjne w temacie. To co potrzebujesz to 100 wierszy w asemblerze. N.
Skoro C znasz to na pozostałe pytania odpowiedzi znajdziesz w DataSheet do ATMega16 (www.atmel.com/dyn/resources/prod_docume... Tam masz przykłady w C i asemblerze. Może ktoś udzieli Ci konkretniejszej odpowiedzi, ale moim zdaniem i tak będziesz musiał tam sięgnąć.
Wiem wiem że przydało by się przejść na C bo bascom jest dobry tylko do prostych rzeczy. Walczę z moim problemem bezskutecznie już za długo i nie mam już siły. Czyli kolega Atom1477 zrobił to za pomocą asemblera? Czy trzeba o tym informować kompilator?
Z asemblerem nie miałem nigdy do czynienia. Może mógł by mi ktoś napisać co mam wstawić za wstawkę asemblera? ale taką z opisem co za polecenie i co ono robi? Będę próbował przesiąść się na asemblera. Wyczytałem też że po przerwaniu procesor wraca do głównego programu i wykonuje przynajmniej jedno całe polecenie i może te komendy LCD też tam coś psują?
Winny jest Bascom. :( Program (migająca dioda LED) napisany w Asemblerze działa. Chyba niestety czeka mnie przesiadka z Bascoma na C lub Assembler. Najprawdopodobniej wybiorę ten pierwszy ,czyli C.
Sądząc z opisu jak to się zachowuje przy wyświetlaniu czegokolwiek to program jest chyba napisany tak, że czeka aż do LCD będzie można wpisać dane (czeka na gotowość przyjęcia nowych danych a to trwa po kilkanaście albo i kilkadziesiąt milisekund w najlepszym przypadku). W Bascomie pewnie te procedury operują czasami z zapasem i dlatego tak to sie wlecze....
Cześć, dziękuję wszystkim za odpowiedzi. Generalnie problem rozwiązany, aczkolwiek muszę jeszcze zobaczyć do kodu asemblera bo wydaje mi się, że poprzedni kompilator coś nachrzanił i dlatego był taki cyrk, a w sumie ciekawy jestem. Korzystałem wcześniej z kompilatora dołączonego do CodeBlocks, jednak po tym co działo się w opisywanym wątku zmieniłem...
Jak napiszesz dobrze program to wystarczy i na 30 kanałów PWM. Co do Bascoma to nie wiem czy sobie poradzi bo nie używałem i nie wiem jak ma napisane programowy PWM. W asemblerze spokojnie do zrealizowania.
Kolego asembler, rozwiń może ten wątek: "Ależ każda Atmega umżliwia pomiar napięcia zasilającego ją bez najmniejszego elementu a nawet rysowania ścieżki i oczywiście z minimalnym poborem mocy do 15uA w zależności od kodu.", bo ja znam możliwość pomiaru przy użyciu dzielnika napięcia na dwóch rezystorach, ale może coś przeoczyłem w notach tych procesorów,...
Nie bądź taki skąpy w tej ilości bajtów :) jak dobrze pokombinujesz np definiując flagę w jakimś rejestrze to jej skasowanie zajmnie jedną instrukcję asemblera a jeśli jest w pamięci to ze dwie.
TXC informuje że transmisja jest kompletna i nie ma nic do wysłania ale w protokole KWP-2000 jest kilka zasadzek i zależności czasowych. osobiście pisałem taką transmisję ale w asemblerze.
Mam problem z ATmega16 i AtmelStudio 6.1. Dzisiaj uruchamiałem ATmega16 po raz pierwszy na płytce stykowej. Komunikacja za pomocą ISP. Udało mi się wgrać prosty program napisany w asemblerze - miganie diodami podłączonymi do portu B (współdzielenie pinów z ISP). Po wgraniu tego programu nie mogę go usunąć ani zastąpić innym. Przy każdej próbie Atmel...
http://obrazki.elektroda.pl/7578649800_1... Witam, Chciałbym przedstawić odtwarzacz audio plików WAV. Został on zrealizowany w oparciu o mikrokontroler ATmega32, pomimo to, że wielkość wsadu to zaledwie ok 8-9kB. Tak jednak miałem procesor pod ręką. Program napisany jest w całości w języku C bez żadnych wstawek asemblerowych. Player obsługuje...
wracając do tej prezentacji, napisałem program na ATmega16 w Bascomie, C, Asemblerze który wyświetla na wyświetlaczu LCD "AKiSO" wyniki w ilości kodu jakie otrzymałem: ASM - 105B C - 550B Bascom - 491B ok 3% z całej pamięci Dziwi mnie fakt że w Bascomie program zajmuje mniej niż w C. Myślałem że będzie odwrotnie... Do kompilacji w C użyłem AVR Studio...
no ale czy trzeba znać cały język Asembler dla danego µP bo tyle co się orientuje to tak . Jednak okazało się że mi wystarczy pamięci w attiny2313 z 52% skróciłem do 42% no i jestem zadowolony z efektów . Jestem początkującym i mam pytanko ile razy można programować µP i czy bascom avr demo compile większy kod niż 2 kb mam zamiar kupić atmega8...
Jakie tu herezje wypisujecie panowie ;) PIC'e musiałyby mieć 80MHz żeby dogonić AVR'y !!! PIC'e mają "gorszy" asembler bo mało instrukcji !!! .... żeby zrealizować to co było robione na zwykłym ATtiny2313 to trzeba przejść zaraz na ARM'ma !!!!! no szok, szok szok - chyba za gorąco co???? Sam najczęściej używam AVRów, ale żeby takie bajki opowiadać o...
Czy Asm to kolejny język? (Pytanie poza tematem) ASM - to pierwszy i podstawowy język niskiego rzędu kolego, wszystkie inne języki jak C czy Bascom - to języki wyższego rzędu a ich kod źródłowy jest ostatecznie zawsze kompilowany do asemblera ;) odnośnie Bascoma i Rc5 - to coś przesadzasz chyba, że nieczego nie znalazłeś w necie. Na samej elektrodzie...
No tak... Programowac w asemblerze juz umiem, bo juz napisalem kilka dzialajacych programow :D tylko ze w innym programie... Musze sie przezucic na inny bo mam inny programator, dluga historia, mozna byloby pisac........ Ale przejdzmy do rzeczy: Mam program AVR STUDIO 4, wszystko jest ok, tylko ze mam procka Atmega16 i pytanie w zwiazku z tym, w folderze...
Chodzi mi o komunikacje PC z Atmega16 przez RS232 i chciałbym zeby to wygladalo mniej wiecej tak: START. 1. Zapytanie z PC 2.Odpowiedź z uP 3. Jak PC dostanie odpowiedź wysyła ramkę z zapytaniem. 4. uP odpowiada ,że ramkę dostał 5. uP wysyła zapytanie do PC 6. PC odpowiada, że jest 7. uP wysyła dane o które PC zapytał. 8. PC wysyła odpowiedż, że dane...
Witam, Przesiadłem się właśnie z procka ATmega 16 na Atmegę 162 z powodu nie wystarczającej liczby portów. Napisałem program który ma za zadanie włączyć TIMER1 w tryb licznika z sygnałem taktującym na porcie PB1(T1). [syntax=asm].include "m162def.inc" .cseg .org 0 rjmp reset reset: cli ldi R16, low(ramend) out SPL, R16 ldi R16, high(ramend) out SPH,...
Jak szybko moze sie wczytywac obrazek na caly ekran przy kwarcu 16MHz ? U mnie zajmuje to cos ok 7 sek i z tego co czytalem w tym temacie to chyba troche dlugo ;/ Program mam napisany w C a nie w asemblerze i byc mzoe to jest przyczyna?
Ok podmieniłem. Nie pokazuje żadnych błędów. Po sprawdzałem w innych plikach czy nie ma czegoś jeszcze do przeróbki i nic nie wykryłem. Jednak gdy miałem zamiar wgrywać do uC niestety nie mogłem znaleźć kwarcu 20Mhz :( Jako że aktualnie nie mam możliwości kupienia go muszę odłożyć ten projekt na tydzień. Chyba że by się dało przerobić timer na kwarc...
Witam Mam kilka pytań. 1. Czy w WinAVR jest możliwe wyłączenie dodawania przez kompilator prologu i epilogu do każdej wstawki asemblerowej. A jeśli tak to jak ? 2. Jak połączyć plik napisany w C z plikiem napisanym w asemblerze. avr-gcc -Wa,-adhlns=przerwania.lst,-gstabs -Wl,-Map=pierwszy.map,--cref -lm przerwania.S -o przerwania C:/WINAVR/BIN/../lib/gcc/avr/3.4.6/../.....
Witam. Potrzebuje zaprogramować mikrokontroler Atmega16 tak aby za pomocą wbudowanego w płytę potencjometru można było sterować jasnością diody LED (również znajduje sie na płycie). Potrzebuje tego do projektu na zajęcia i nie mam pojęcia jak się za to zabrać gdyż nigdy nie programowałem mikrokontrolerów ;). Mam płytę Propox EVBavr05 (instrukcja do...
Jest właśnie tak jak piszesz. Dlatego chciałbym prosić kogoś co zna assembler i napisze - poda jakąś procedurę i objaśni na jakiej zasadzie to działa. A co ważniejsze jak w bascomie odczytać zmienne z innej procedury w asemblerze. Może ma ktoś link do podobnego temetu, niekoniecznie dotyczącego mojego problemu.
Coś mi nie gra w dezasemblacji: +00000065: BFDE OUT 0x3E,R29 Out to I/O location +00000066: BE0F OUT 0x3F,R0 Out to I/O location +00000067: BFCD OUT 0x3D,R28 Out to I/O location Zauważ, że żaden z tych rejestrów nie odwołuje się do UBRRH/UCSRC. Para tych rejestrów jest na adresie 0x20 (0x40). Sprawdź czy kompilator używa odpowiednich bibliotek...
ATMega32+FM32xxx(serial RAM!!!-jeden lub kilka) powinien wystarczyć. Ja w takich okrojonych cenowo zestawach daję jeszcze AT45DBxx (serial DataFlash EEPROM), ale jak masz kartę pamięci, to zbędny luksus. Na takim zestawie można zaimplementować dokładnie wszystko z wyjątkiem silniejszych uwarunkowań czasowych. Jeśli się bardzo przyłożysz w asemblerze,...
No to żeś tak szczęśliwie trafił na JTAGA, który jest na porcie C... ;) Dorzuć na początku, po konfigach taką wstawkę w asemblerze, jeżeli nie widzisz potrzeby wyłączać JTAG-a fusebitami : $Asm push r16 in r16, MCUCSR sbr r16, 1<<JTD cli out MCUCSR, r16 out MCUCSR, r16 sei pop r16 $End Asm
Musisz tylko bardzo zwrócić uwagę na to aby MAKSYMALNIE jak tylko się da - napisać jak najkrótszy kod w obsłudze przerwań szczególnie tego Timera - bo w przeciwnym wypadku - może zacząć dochodzić do tak dziwnych sytuacji, że nie będziesz wiedział w ogóle o co chodzi. Wiesz? chodzi o to, żeby przerwania Timera pozostawiały jeszcze sporo czasu na działanie...
Oj tam nie przesadzaj z tymi zabezpieczeniami. Ktoś kto się na tym zna zrobi swój własny program (niekoniecznie gorszy), bo nie będzie mu się chciało przerabiać twojego... Dlatego właśnie jest to zabezpieczenie. Zapewniam Cię, że żaden pierwszy lepszy amator (łącznie z Tobą) go nie złamie - możesz spróbować, a komuś kto się zna na programowaniu jego...
Na 100% działają na mojej ATmega169p, optymalizacja -Os void eeprom_write(unsigned int uiAddress, unsigned char ucData) { /* Wait for completion of previous write */ while(EECR & (1<<EEWE)); /* Set up address and Data Registers */ EEAR = uiAddress; EEDR = ucData; /* Write logical one to EEMWE */ EECR |= (1<<EEMWE);...
RW do masy. chyba tak mozna ;) podobno nieraz potrzeba zainicjowania w asemblerze zeby dzialalo z bascomem? ale nie jestem w stanie raczej tego zrobic sam:(
A ja znowu nie wyobrazam sobie tego abym muial angazowac program głowny który przewaznie słuzy w innym celu jak tylko pomiar temp. W przerwaniu to wychodzi elegancko a ilosc czujników jak moze byc obsłuzona jest dowolna. W programie głownym umieszczam tylko procedure odczytu uzyskanych wartosci z przerwan i ewentualne sprawdzenie CRC co zajmuje ułamiki...
(at)asembler Wydaje mi się że można to zrealizować znacznie sprawniej. 750 czy 1000ms nie robi różnicy, ale w programie mam oczekiwanie na puszczenie przycisku po jego wciśnięciu. Co się stanie jeśli ktoś wciśnie przycisk i będzie go trzymał kilka sekund? Odczyt temperatury już chyba nie będzie poprawny. (at)dondu Czyli rozumiem, że w tym timerze zrobię...
Wstępnie to jest ten wyświetlacz: http://www.tme.eu/pl/details/lcd3.5-13lo... Z tego co widzę sterowanie takim wyświetlaczem nie jest takie proste bo napięcie na wyjściu procesora oscyluje wokół 0V i przyjmuje wartości dodatnie i ujemne. Poniżej wykres napięcia na wyjściu COM i sterującego...
Robisz to w przerwaniu zegara. W jednej procedurze przełączasz jedno wyjście (zegarowe) a na drugie wystawiasz bity. A jeśli nie musi być to dokładne 100Hz to można dać proste pętle opóźniające. Najlepiej pisać coś takiego w asemblerze chyba. Pozdrawiam
Rozmowa schodzi na znany już nam kierunek;) W każdym razie, śmiem zaryzykować stwierdzenie że jednak CORTEX M3 pobiłby AVR i program napisany w asemblerze;) Trzeba by sprawdzić;)
Jeśli mogę coś polecić ze swojej strony i pod kątem pisania w Asemblerze to Kilka pozycji z wydawnictwa [url=www.btc.pl]BTC Dwie pozycje autorstwa pana A.Pawluczuka "Sztuka programowania mikrokontrolerów AVR podstawy" i "Sztuka programowania mikrokontrolerów AVR praktyka" oraz dwie książki Rafała Baranowskiego. "Mikrokontrolery AVR atmega w praktyce"...
Oj kolego porywasz się z motyką na słońce... Przynajmniej z obecnym zasobem wiedzy... Pomijając transmisję projekt nie jest bardzo skoplikowany... ale jednak... 16 znaków na bufor to chyba trochę mało no ale niech będzie... O ile 1MHz dla kalkulatora to aż nadto to dla obsługi lcd, komunikacji i przemiatania klawiatury to już mało... Zależy też w czym...
asembler programowanie atmega16 asembler sortowanie diody asembler
upływność przewód video pełny ekran pomiar harmonicznych
słuchawki sportowe słuchawki sportowe
Jak sprawdzić działanie diody 1.5KE39CA? Obliczanie długości drutu dla cewki prostokątnej