Hey prawidłowo program w asm dla t2313 powinien się zaczynac od adresy 0x0013, adresy od 1 do 0x0012 zarezerwowane są dla wektorów przerwań. W adresie 0x0013 powinna być deklaracja stosu, zgodnie z notą: RESET: ldi r16, low(RAMEND); Main program start out SPL,r16; Set Stack Pointer to top of RAM Czyli program powinien wyglądać tak, że pod adresem 0x0000...
Ustaw rozmiar stosu na przerwań - domyślnie w przykładzie jest 0, bo nie ma tam przerwań. 4\/3!!
Poniższy zapis: ISR (INT0_vect) { } Oznacza, że deklarujesz funkcję/kod obsługi przerwania INT0 trybie blokującym (ISR_BLOCK). Oznacza to, że jeśli w trakcie wykonywania funkcji obsługującej przerwanie INT0 pojawi się inne przerwanie, np INT1 to nie zostanie ono obsłużone. Rozwiązaniem może być deklaracja ISR z atrybutem ISR_NOBLOCK....
A gdzie deklaracja stosu :> Teraz ludzie zaczna wklejac programy ktore zapalaja co drugi pin na co drugim porcie, co drugi pin na co rzecim porcie itp ;)
ATtiny13 nie ma wewnętrznego zegara 4MHz a zewnętrznego na schemacie nie widać. Błędna deklaracja procesora. Przy domyślnych ustawieniach stosu zabraknie pamięci.
I jeszcze jedno: szybsze jest alokowanie pamięci na stercie, a następnie zwalnianie jej czy może przechowywanie dużych tablic na stosie? Oczywiście cały czas mówię tutaj o zarezerwowaniu pamięci tylko i wyłącznie na czas działania funkcji. Dodano po 5 Właśnie z tymi statycznymi tablicami i zmiennymi też mi się za bardzo nie widziało. Ale teraz mam dylemat...
Witam, Kiedy zadeklaruje ATmega8/16/32 to program działa fizycznie nawet na mega64. Kiedy mam wybrany Atmega64 to domyślna deklaracja zakłada 64kb ramu. Nie wiem dlaczego, chyba powinno być tylko 4kB. Ponieważ wartość jest za duża, procek restartuje się już przy pierwszym powrocie ze skoku po pobraniu adresu na nieistniejący stosu, czyli adresu 0x000....
Wydaje mi sie ze to calkowicie wyczerpuje problem. #include <stack> int main() { stack<int> Stos; //deklaracja stosu liczb calkowitych S.push(8); // odlozenie na stos liczby 8 S.push(7); // i 7 S.push(4); // i 4 assert(S.size() == 3); //dlugosc stosu wynosi 3 inty assert(S.top()...
Dane wpisane do tego skryptu zakładają, że nie korzystasz z ŻADNYCH wyjątków. Musisz sobie je ustawić w zależności od swoich potrzeb. __irq_stack_size = 0; Czyli po wejściu w przerwania mam dostępne 0 pamięci ram na zminne? W skrócie: Funkcji ustawiającej stosy przekazane jest 0 dla trybu XXX, a więc (w zależności od kolejności) dany stos będzie pokrywał...
Teraz już sprawy idą w lepszym kierunku. Problematyczny jest jeszcze sposób deklaracji zmiennych w programie. Proponuję pobrać z internetu dowolny assembler na 8051 (np. ASEM-51), wtedy wszystkie błędy składniowe można na bieżąco sprawdzać. Struktura programu (dowolnego) może wyglądać np. tak: - deklaracja zmiennych i stałych, - instrukcja skoku do...
Przerobiłem tak, żeby wysyłał testowo tylko jedną wartość ( losową ) co 8 sekund Dodano po 18 Dołożyłem Clear Serialin0 Com1_str = "" czyli [syntax=vbnet] $regfile = "m328pdef.dat" $crystal = 8000000 $hwstack = 100 ' rozmiar stosu sprzętowego $swstack = 100 ' rozmiar stosu programowego $framesize = 128 $baud = 19200 '************ Uart 0 Config Serialin0...
Jako ciekawostę wrzucę Ci prosty sterowniczek do RS-a na PC mojego autorstwa. Możesz go lekko przerobić i używać na PC do wysyłania określonych sekwencji ;) ;---------------------------------------... ;Sekcja dyrektyw kompilatora ;.model tiny = program i dane musza sie zmiecic w obrebie ; 1 segmentu pamieci (64 kB) ;.stack 100h...
Po wyłączeniu przerwań (w zasadzie tego jednego - bo tylko jedno było aktywne program nie wiesza się. I znowu wracam do kwestii rozbiegówki bo chyba tylko tam może cos być nie tak. Ciekawe założenie (; Jeśli wziąłeś przykład dla LPC2103 i zmieniłeś w nim tylko rozmiar stosu dla przerwań i używasz tego na LPC2148 to nic tam nie może być źle, bo niby...
Przygotowałem specjalnie do testu [syntax=vbnet] $regfile = "m1284pdef.dat" $crystal = 8000000 $hwstack = 128 ' rozmiar stosu sprzętowego $swstack = 128 ' rozmiar stosu programowego $framesize = 128 $baud = 9600 '************ Config Timer0 = Timer , Prescale = 1024 ' 1 sekunda = 50 On Timer0 Czas0 Timer0 = 98 Enable Timer0 Enable Interrupts '*********************...
Witam Mam problem z multipleksowaniem wyświetlaczy LED. Mam gotową płytkę bazową http://obrazki.elektroda.pl/3311050900_1... oraz płytkę wyświetlaczy http://obrazki.elektroda.pl/5528051300_1... najpierw próbowałem ustalić, które segmenty mają się zapalać, aby poprawnie wyświetlać cyfrę. No i zaczyna się problem, bo chociaż...
Witam Zakupiłem w Seguro moduł DCF77 na układzie MAS6180B. Wykorzystałem klasyczny kod Bascom ( mam wersje Bascom 1.11.95 ) Config Dcf77 ? Czy sygnał trzeba podawać przez dodatkowy tranzystor ? Np. przez taki układ http://obrazki.elektroda.pl/8336138700_1...
Widzę że dosyć cich. dorzucam jeszcze skrypt linkera i startup. nawet mam brakepointa w void Reset_Handler(void) i w niego nie wchodzi. ale na brakepointa w Default_Handler reaguje. Zanaczam że jak wgram program na mikrokontlorer to działa bez zarzutu... [syntax=c]/* Procedura startowa dla STM32 connectivity line devices */ /* NastÄ™pujÄ…ce...
Witam Wykorzystałem do odbioru kod podany przez Kolegę Mirka [syntax=basic4gl] $regfile = "m168def.dat" $crystal = 10000000 'taktowanie procesora $hwstack = 32 ' rozmiar stosu sprzętowego $swstack = 10 ' rozmiar stosu $framesize = 40 ' rozmiar ramki $baud = 9600 ' predkość transmisji Config Debounce = 30 '********************* konfiguracja UART Config...
Witam Mam zegarek/budzik z wyświetlaczem LED ( dwukolorowy ). Zegarek generalnie działa. Ale mam problem z sterowaniem jasnością. Wiadomo, że robi się to tak, że jasność zależy od częstotliwości odświeżania. Tutaj o jasności wyświetlania ma decydować zmienna jasnosc. . jasnosc : [syntax=vbnet] '************ Timer0 1000 = 1 sekunda, 10000 = 10 sekund,...
Jeżeli podłączasz na dwóch przewodach DSa to rezystor zmniejsz do 3,3k. Nie chcę mi się pisać więc podaję kod (bascom/asm) '***************************************... !read_temp_1w: Read_temp_1w: 'odczyt rejestrow z ds1820 'Stop Timer0 jnb {fl_pomiar},read_temp_1w_end clr {fl_pomiar} 1wreset...
Witam Mam płytkę według schematu poniżej: http://obrazki.elektroda.pl/9010020400_1... dodałem tylko "ręcznie" podłączenie CLKOUT PCF8563 z INT1 i przełączyłem przycisk na inny port. Do tego podłączona jest płytka testowa z MAX7219 i wyświetlaczami 0,36 cala. Całość działa poprawnie z kodem jak poniżej: [syntax=basic4gl] $regfile = "m32def.dat"...
Witam czy mógłby ktoś sprawdzić poprawność kodu Assembler '51? Czy składnia jest ok? WDTCN DATA 0FFH ; WATCHDOG TIMER CONTROL AMX0CF DATA 0BAH ; ADC 0 MUX CONFIGURATION AMX0SL DATA 0BBH ; ADC 0 MUX CHANNEL SELECTION ADC0CN DATA 0E8H ; ADC 0 CONTROL ADC0H DATA 0BFH ; ADC 0 DATA - HIGH BYTE REF0CN DATA 0D1H ; VOLTAGE REFERENCE 0 CONTROL ADC0CF DATA 0BCH...
upss naraz wałkuję dwa tematy o SD, stąd nieporozumienie. u mnie taki kod działa na kwarcu 8 MHz $regfile = "m32def.dat" $crystal = 8000000 $baud = 9600 ' predkość transmisji $hwstack = 128 ' rozmiar stosu sprzętowego $swstack = 128 ' rozmiar stosu $framesize = 128 ' rozmiar ramki '********************* Deklaracja podprogramów Declare Sub...
Witam Zachęcony sukcesami z płytką EVB 4.3 zaprojektowałem i zamówiłem swoją - na początek z AtMega8 w DIP. Do tego pamięć 24C32 oraz układ do RS485. Wszystkie układy mają kondensatory 100 nF ( stabilizator 7805 również + jeden elektrolit ). Całość ze złączem pod wyświetlacz 2*24 ( właściwe 4*12 ) Reset przez rezystor 10 K do +5V AtMega8L ( na 8 MHz...
Witam W oparciu o kod znaleziony na forum Elektroda mam programik wyświetlający adresy układów w magistrali I2C ( TWI ). Kod jest taki: $regfile = "m8def.dat" 'definicja procesora $crystal = 4000000 'taktowanie procesora $hwstack = 32 ' rozmiar stosu sprzętowego $swstack = 10 ' rozmiar stosu $framesize = 40 ' rozmiar ramki Config Debounce...
Witam Mam Atmega32A + PCF8563 + PCF8574 + RFM12 + DS18B20 +DHT11. Port danych LCD to Port.A, ControlPort to Port.C. I2C standardowo na Portc.0 Portc.1. Niestety jest problem z obsługą I2C, tzn. zegar PCF8563 nie działa w ogóle ( na LCD puste pole ) , a klawiatura na PCF8574 - tylko jeden klawisz i to nie ten, który jest przypisany w kodzie ( działa...
Witam, Jestem posiadaczem zestawu ZL3AVR dołączonym do książki Mikrokontrolery AVR w praktyce. Książka posiada gotowe przykłady, lecz działa mi poprawnie pierwszy program z diodami. Program trzeci, czyli przerwania + klawiatura już nie działa; Gdzie jest błąd? W podręczniku, czy gdzie? Ten program miał na diodach led wyświetlić odpowiednią wartość stosownie...
Witam Zmieniłem sposób obsługi wyświetlania. Początkowo miałem tak : [syntax=basic4gl] '************ Zegar 8 wyswietlaczy LED + 74HC595 + PCF8563 $regfile = "m8adef.dat" $crystal = 8000000 $hwstack = 32 ' rozmiar stosu sprzętowego $swstack = 32 ' rozmiar stosu programowego $framesize = 32 $baud = 9600 '************ deklaracje portow - 74HC595 Config...
Poniżej wklejam działający kod obsługi czujnika ciśnienia MPL115A2 - może komuś się przyda. Komentarzami nie należy się przejmować, część udało mi się przetłumaczyć w oparciu o inne znalezione przykłady. Teraz ( 23:55 19/04/2013 ) w południowej części Krakowa pokazuje 995 hPa Byte . Jak najlepiej podzielić zmienna typu Long ?
Witam Mam program budzika, który jako dodatkową atrakcję miał mieć możliwość mówienie czasu na żądanie i odtwarzanie oprócz buzzera utworu jako alarmu. Atmega steruje przez jedno SPI programowe układem MAX7219, a przez konwerter poziomów i drugie SPI programowe odtwarzaczem WTV020SD. O ile sam WVT020SD + PCF8563 ( wyjście CLK do INT1 ) działają dobrze,...
Przepraszam za grzebologię, ale postanowiłem to umieścić na forum, żeby był pożytek :] ( W związku z mailem, jaki otrzymałem :], Był on opatrzony tym tematem :] ) Kod programu na 8051 wysyłającego komunikat powitalny "AT89C51 ver. 1.0", a następnie odbierającego to, co wysyła komp i wyświetlającego na LCD. Prędkość transmisji 2400 b/s. ;------------------------------------...
Witam Napisałem program, który dekoduje sygnał DCF77 ( ustawia flagę ), następnie zapisuje ( przy pierwszym uruchomieniu ) wartości zmiennych do PCF8563 i cztery razy na dobę wysyła przez RS485. do tego dwa razy na dobę koryguje czas w PCF8563. I to działa bez problemu. Do celów testowych mam podłączony LCD. Chciałem dołączyć możliwość pomiaru i wysyłania...
Witam Po raz pierwszy ( lepiej późno niż wcale ) wykorzystałem wyjście CLKOUT układu PCF8563. Oczywiście podciągnąłem przez 10K do VCC. Dzisiaj po pierwszym kilkugodzinnym braku prądu, rano zegar był wyzerowany. Podejrzewam, że to przez podciągnięcie CLKOUT do Vcc. Jeśli to jest to, to może wystarczy włożyć diodę np. Schottky pomiędzy wyjście CLKOUT,...
Witam Mam układ, który mierzy dwie temperatury ( DS18B20 ), dwa napięcia ( PCF8591 ( pobiera czas ( PCF8563 ), a z powodu niedużego wyświetlacza ( 12 x 4 ) wskazania są zmieniane do 10 sekund po przepełnieniu Timer1. Układy PCF8563 i PCF8591 są podpięte z "zewnątrz" przewodami około 10 cm. Magistrala I2C ma obniżoną prędkość przez Config I2cdelay =...
Sporo tego ( obsługa SD, PCF8563 + menu do ustawiania daty, obsługa PCF8574 w przerwaniu INT1 )- ale nie ma problemu - zmieniła się tylko zawartość podprogramu Pomiar była taka, jak w pierwszym poście oraz wyłączyłem w wyświetlanie na LCD tych wartości wskazań z DS18B20, oczywiście dostosowałem pozycje wyświetlania do LCD 4*20 - załączniku spakowany...
witam Jest to moj 1 program wiec jego kod jest rozwojowy i nieczytelny mam taki problem musze zrobic kolejno wczytywane cyfry do jednej duzej liczby: postanowiłem to zrobic na rejestrach R0....R5 kolejno wczytac tam cyfry i pozniej z odpowiednimi wagami je pomnozyc (np. razy 100 cyfre setek itd) i pozniej dodac. Obsługe klawiszy mam juz zrobioną cyfry...
A gdzie masz deklaracje STOSU.
Tę tablicę alokujesz na stosie, a jego rozmiar jest zapewne nie za duży. Albo alokuj statycznie, albo powiększ stos w ustawieniach projektu.
Nie pokazałeś najważniejszego, czyli deklaracji tych zmiennych adc_result/prev_adc_result. Niech zgadnę - zmienne automatyczne? Jeżeli tak, to zagaduję dalej, że brakuje stosu.
Zerknij tutaj: script.sct to skrypt linkera. W pliku startup.h przy deklaracji stosów jest wykorzystany atrybut zero_init .
start: ldi r16,ramend out sp,r16 ;deklaracja dna stosu ..............
Nie wiem, co miałeś na myśli pisząc: (jedyne co zmieniam to wielkość bufora danych we flashu) Dla mnie taka sprawa ewidentnie "pachnie" nakładaniem się segmentów zmiennych globalnych ze stosem danych lokalnych oraz stosem powrotów z wywoływanych funkcji. Generalnie kompilatory nie radzą sobie z automatycznym wyznaczaniem niezbędnych rozmiarów stosów...
Bo jak już będę miał wszystko tak jak chcę, czyli na stałych tablicach w SDRAMie to prawie cały RAM bedę miał wolny. Więc duży rozmiar stosu mi nie przeszkadza. Zresztą, to tylko deklaracja. Stos rozrośnie się i tak tak bardzo jak tylko będzie chciał. Tutaj to jeszcze kwestia kolejności ułożenia bass, stack i data i innych rzeczy, ale mniej więcej tak...
(at)funak Z ciekawości zainstalowałem najnowsze AS 7 i potwierdzam obserwację. Wygląda to na jakiś gruby błąd w Atmel Studio. (at)Freddie Chopin Funkcja SystemInit() jest trywialna. (at)Piotrus_999 Skrypt linkera jest o tyle interesujący, że przy braku innych deklaracji wielkości stosu (przez #define STACK_SIZE) na stos rezerwuje 0x10000, czyli 1MiB....
Co do Twojego problemu deklaracji typu układu - typ ten zdefiniowany jest w Makefile (MD, HD, CL, ...) Jeśli używasz przerwań, to ustaw jakąś wielkość stosu dla przerwań w skrypcie linkera (domyślnie jest 0, bo nie ma przerwań w przykładach). 4\/3!!
Napisałem już obsługę wyświetlacza LCD na ARMa po rejestrach, ale robiłem to na „gotowcu” z bibliotek z ksiązki pana Galewskiego. Niestety mam problem ze zrobieniem tego od zera. W Keilu 5 tworzę goły projekt, który zawiera tylko wbudowany plik z deklaracjami stosu itp i dopisuję swój program np. migający diodą. W ogóle nic nie rusza. Czy...
Witam, Dużo rozkazów jest niepotrzebnych: ustawioanie pojedynczo bitów a potem przez zapis całego rejestru (rejestr IE), nie powtarza się konfigurowania liczników w przerwaniach jeśli zostały skonfigórowane na początku, to samo z aktywacją przerwań, więc po okrojeniu: $mod51 ;istotne dla kompilatora asm51 pre0equ10h;deklaracje komórek zmienne "set"...
Twój program ma jedną klasę główną - Kalkulator, dwie klasy pomocnicze - Stos i Wektor. Wektor jest samodzielną klasą, Stos zależy od Wektora (choć w sumie nie powinien, bo powinien być wzorcem), a Kalkulator to główna funkcjonalność. A więc tworzysz wektor.hh i stos.hh, do nich wektor.cpp i stos.cpp. Kalkulator i funkcję main zostawiasz w pliku kalkulator.cpp....
Mam problem z prawidłowymi deklaracjami stosów pamięci. Żeby obliczyć zapotrzebowanie próbowałem zastosować rozwiązanie z $HWCHECK opisane w helpie, ale niestety nie działa prawidłowa na M2561 - zmienna _hw_lowest jest stale równa zero... Być może pomogła by obserwacja zawartości RAM podczas pracy programu co jakiś czas. Chyba najlepiej byłoby użyć...
Task w którym jest strtok() nie jest przerywany w trakcie wykonywania tej funkcji, żadnym innym używającym strtok(). Druga sprawa, że z strtok i tak wskakuje do __strtok_r() a więc reentrant i pod Yagarto to działało. Jednak rzeczywiście wymiana na strtok_r() poprawia sytuacje. Nie jestem w stanie sprawdzić całego kodu czy działa, bo wywołań tej funkcji...
analiza stosu pamięć stosu ramka stosu
kraków elektronik sterowanie bramy kodowanie pilota przerywacz migacz schemat
politechnika świętokrzyska politechnika świętokrzyska
Jak przedłużyć impuls elektryczny w układzie elektronicznym? Kodowanie sterownika ABS w Volkswagen Polo 9N