Stos nie jest ustawiany na r16. Rejestr r16 służy do zapisania w rejestrach wskaźnika stosu SPH i SPL (jeden odpowiada starszemu bajtowi, drugi młodszemu) odpowiednich wartości. RAMEND to zmienna zadeklarowana w plikach *.inc dla każdego procka. Oznacza ona ostatni adres w pamięci RAM. HIGH(RAMEND) i LOW(RAMEND) służą do 'wyciągnięcia' z tej wartości...
Dzięki, pomogło :) btw. w pliku m32def.inc znalazłem .equ RAMEND = 0x085f , to oznacza początek stosu, wielkość itp, i jak ustawiać (zmieniać rozmiar stosu)
Pierwszy fragment kodu przypisuje do stacktop (szyt stosu) wartość RAMEND - 100, czyli 100 bajtów przed końcem obszaru pamięci danych (RAMEND zalezy od ilosci pamieci RAM w mikrokontrolerze - oznacza adres ostatniej komórki RAM. Natomiast dyrektywa .org RAMEND - 99 powoduje że "buffer" zaczyna się 99 bajtów przed końcem tego obszaru. Natomiast obszar...
Ma powiązanie z resztą przycisków. Musisz poprawic wartości przy cpi albo dodać "com r18" zaraz przed "andi r18,0x63". No domyśliłem się że takie założenie było, czyli skoro zwierasz do masy to skok do podprogramu musisz wykonac wtedy jeśli na pinie jest 0. Skoro piny podciagnąłeś do plusa za pomocą pull-up'a wewnętrznego to oznacza że jak przycisk...
Dr_DEAD -> skoro wyłączam globalne przerwania (CLI) to nieważne jakie flagi są zgłaszane ponieważ przerwania w sekcji BootLoader nie są odblokowywane. Itp w tym przypadku oznacza ustawienie rejestrów i bitów używanych w BootLoaderze. atom1477 --> piszę w assemblerze początkowe linijki sekcji bootloadera: .org SECONDBOOTSTART Boot_loader: ldi_wsk...
Witam, napisałem obsługę zewnętrznego przerwania, które się wykonuje bezproblemowo, jednak po obsłużeniu przerwania program nie wraca od razu w miejsce z którego przerwanie zostało wywołane. Oto kod: [syntax=asm].INCLUDE "m16def.inc" .DEF acc = r16 // akumulator .EQU SYS_FREQ = 1 .CSEG .MACRO delay1sek // delay 1 sekunda na 1MHz ldi r17, 0x09 9 delay3:ldi...
Witam . Napisałem ( prawie) sobie na ww procesor program w asm i bascomie który ma robić za zamek otwierany kartą . W bascomie wszystko działa w 100 % według założenia jednak w asm mam taki problem że układ sam zmienia swoje taktowanie (ponad 2x) przez co wszystkie funkcje czasowe nie pracują jak powinny . Nie było by w tym nic niezwykłego ( ustawiony...
Witam, Mam problem otóż nie mam napisałem program który mierzy długość impulsu ale to co pokazuje to jakieś magiczne liczby. #include "avr.inc" #include <m8515def.inc> .cseg .org 0x00 Rjmp Reset .org 0x01 RJmp INTER .org 0x07 Rjmp Licz .cseg .org 0x11 ; D E F I N I C J E P O R T Ó W .defAcc =R19 .defS =R20 .defM =R21 LIcz: Ldi Acc,...
wyczyściłem trochę kod, żeby nikogo nie mylił i załączam zrzuty ekranu debuggera (w momencie wejścia w miejscu "usartt"). Wg mnie jest niby ok. .include "m8def.inc" .def temp= r16 .EQU SYSCLK = 1000000; częstotliwość pracy ; CKSEL(3..0) = 0001 (domyślnie dla wewn. oscyl.) ; uwaga: ptaszek w ponyprog oznacza 0 ; 0010 - 2MHz,...
Witam, mam kilka pytań dotyczących asemblera pod avr i nie tylko. Dlaczego nie mogę się odwoływać do rejestrów poniżej 15 np r1 przez instrukcję ldi? Czy ustawienie pinu jako wejście z pull-up'em oznacza że jego stan początkowy równy jest 1? Ze wszystkich pinów mogę korzystać normalnie jeśli w odpowiednich rejestrach nie ustawie bitów odpowiedzialnych...
Nie wiem czy sie przyda ale mam opis bootloadera ale na ATmega8 oto on napisany w bascomie: 'Program Bootloadera (monitora) dla ATmega8 umożliwiający ładowanie 'programu do pamięci Flash przez interfejs RS232 z prędkością 19200 'bodów 'Bity fuse należy ustawić, by na Bootloader było przeznaczonych 128 'bajtów 'Początek adresu programu Bootloadera:...
A czego miałem szukać w nocie katalogowej? Ewentualnych odpowiedzi na ewentualne pytania dotyczące kodu... U mnie CALL oznacza rcall. OK, ale i tak bez ustawienia wskaźnika stosu się nie obędzie. Oto poprawna i sprawdzona wersja na timerze : #define F_CPU1000000 .nolist #include <m8515def.inc> ; Prohibits use of non-implemented instructions (ATmega8515)...
Witam. Mam problem z ATtiny26 (taktowanie wewnętrznym RC 1MHz). Mimo szkieletu programu opartego o Pętlę_Główną, uC wykonuje w pętli dosłownie CAŁY program (początkowe ustawienia, itd). Stos zainicjowany poprawnie, mimo tego uC jakby ignoruje początkowy skok (RJMP Ustawienia) i wykonuje wszystko "na dzień dobry". Program nie zawiera żadnych udziwnień...
Jakby co, to tu masz obsługę LCD na ATmega16, tryb 4 linii danych ;) .include "m16def.inc" .equ RS = PB4 .equ E = PB3 .equ DB4 = PB2 .equ DB5 = PB1 .equ DB6 = PB0 .equ DB7 = PA0 ldi R16,high(RAMEND) out SPH,R16 ldi R16,low(RAMEND) out SPL,R16 ldi R16,0x1F out DDRB,R16 ldi R16,0x01 out DDRA,R16 call DlugaPauza call DlugaPauza...
No i wszystko niby działa (znaczy mogę dowolnie programować itd) ale apetyt rośnie w miare jedzenia. Dokleiłem sobie procedurkę bootloadera bo chciałbym mieć możliwość programowania Atmegi w układzie. No i tu się schody zaczynaja. Bo po pierwsze to nic przez uarta nie mogę się skomunikować, po drugie nie działa bootloader.(co pewnie wynika z problemu...
Wkleje plik includowany z obsługa LCD, który stosuje oraz czesc programu głownego: LCS.asm: ;=======================================... ; Obsluga LCD zgodnego z HD44780 dla 8-bitowej szyny danych v1.0 ; Nie obsluguje BUSY flag ani odczytu adresu z LCD ;!!! Znak lub komenda do wyslania do LCD przekazywane sa przez...
No nie to żebym od razu się domagał:) po prostu myślałem, że się ktoś zainteresuje i jak nie będzie widział tutaj potrzebnych informacji to powie mi jakich (a nie od razu zmiesza z błotem:) bo ja nie wiem co jest potrzebne żeby zdiagnozować ten błąd. Po kolei. Do tego nie robisz wcięć, przez co program jest nieczytelny. Szukałem jak wygląda na tym forum...
Witam wszystkich. Jestem początkującym programistą mikrokontrolerów. W miarę postępu edukacyjnego z AVR staram się wyznaczać sobie coraz to trudniejsze zadania. W końcu wymyśliłem sobie coś, z czym nie potrafię sobie poradzić. Korzystam z makiety mod_avr_2 (pdf dostępny w zamieszczonym linku) .include"m16def.inc" .cseg .org 0 .def acc=r16...
Kiedyś zrobiłem coś takiego dla s1200, 2313 itp. Jak chcesz to sobie przerób. Program odmierza czas, a po jego upłynięciu zaczyna migać żarówką (np wyłącza ją na 1s, potem zapala na 10s i tak 3 razy), a na koniec gasi żarówkę. Program nie jest jakoś super napisany, ale z tego co pamiętam działał. Do asemblacji radziłbym użyć oryginalnego assemblera...
Witam, najpierw program: .include "m88def.inc" ; procek ustawiam na prace z wewnętrznego oscylatora 8MHz ; tryb sleep ustawiam jako POWER DOWN ; PD3 (INT1) jest przyciskiem (wejscie) ; PB1 (OC1A) to wyjscie sterujace reglem ; PB5 to wyjscie sterujące MOSFETami zalaczajacymi zasilanie regla ; PD5 (OC0B) to wyjscie sterujace LEDem ; ADC6 - pomiar pradu...
oznacza tyrystor oznacza wykrzyknik oznacza kółku
peugeot bipper silnik czujniki wabco renault megane instrukcja obsługi
zmywarka simens zmywarka simens
Czerwony trójkąt ostrzegawczy w Toyocie - przyczyny i działania Piła spalinowa Faworyt RG 5300 18A - ocieranie koła magnesowego o nawojowe