Dokładnie, poza tym to wcale nie musi być zmienna w EEPROM, SRAM przecież przez WD nie jest ruszany. Więc o ile Bascom ma coś takiego jak nieinicjalizowane segementy pamięci to zmienną można trzymać w SRAM i inkrementować po odczytaniu statusu z MCUCSR.
Zamiast wstawiać argument do delaya umieść delaya w pętli for ze stałym argumentem. Zmienna zawsze znajdują się w SRAM. Ale stałe można umieścić w pamięci programu.
zapoznaj sie z fusebitami. Czy ty chcesz dokladnie odmierzyc 500 milisekund czy okolo? Jak chcesz dokladnie otrzymac to kwarc zew. i timery. A masz zew. ram podlaczony? nie wiem jak chcesz jakas zmienna zdeklarowac poza pamiecia sram chyba ze chodzi ci o pamiec stala eeprom
Jeżeli zmienna jest globalna, to masz dostęp do niej zarówno w przerwaniu jak i poza ciałem przerwania.
Standardowa zmienna znajduje się w pamięci SRAM.
Nie masz wyjścia, jak zacząć bawić się AVRStudio ... :D Bascom potrzebuje SRAM-u, którego ten procek nie posiada... A kodzik, proszę bardzo, ale za jego kompatybilność z Bas-monster nie odpowiadam ;) : #include "m8515def.inc" ; Prohibits use of non-implemented instructions (ATmega8515) .cseg ;—————R...
NIE wolno robić czegoś takiego żeby zmienna co chwile była zapisywana do EEPROM-u dlatego że on ma określoną ilość zapisów minimum 100.000 / + . Ja bym si polecił jakiś SRam na i2C albo SPI z podtrzymaniem bateryjnym może być nawet zegar RTC PCF8583 . Co do karty i komunikacji z PC tu [url=http://www.dharmanitech.com/2009/01...
1. framesize ustawiasz na 8 2. softstack ustawiasz na 16 Najprawdopodobniej twoją pamięc w tiny zapychaja stos i frame, zmniejsz te wartosci eksperymentalnie. Zmienna bit w bascomie jest definiowana w innym obrzarze pamięci, poza tym rezerwuje od razu cały bajt pozostawiając 7 pozostałych bitów na inne zmienne typu bit. Nie mozesz wywalić "$regfile",...
Czyli, generalnie zmienna lokalna zadeklarowana w przerwaniu , też będzie odłożona przez kompilator do rejestru i potem wszystkie operacje będą wykonywane na tym rejestrze? Dokładnie tak będzie. A jak wygląda sprawa z zmienną lokalną z specyfikatorem "static" ? Taka zmienna, jest niby tworzona w pamięci RAM, tam gdzie zmienne globalne, ale jej dostęp...
Bo zmienna wcale nie leży w pamięci FLASH tylko SRAM. I teraz z zależności czy jest to zmienna globalna czy lokalna ląduje w sekcji .bss lub na stosie. A że zmienne globalne są domyślnie inicjowane na 0, a kod inicjujący już masz więc dodanie tej zmiennej nie wydłuża programu. Zresztą to wszystko masz już napisane w pliku map i lss - naucz się je czytać...
Można zadeklarować prawidłowo zmienną eeram W ten sposób Dim Adres_er(size_t_mac) As Eram Byte At Adres_p_mac Poprzez komende AT znam adres, po jaki będzie się odwoływać zmienna eeram w pamięci. Niestety, ale z Eepromem ten numer nie przejdzie , ponieważ Bascom ignoruje etykiety w Eepromie. Deklaruje, jakie wartości powinny być zapisane w eeram...
Nie jest quasi-zmienna nieulotna, tylko zwykla zmienna nieulotna :) Jedyna roznica pomiedzy taka zmienna zadeklarowana w EEPROM a SRAM jest taka, ze odwolujesz sie do niej za pomoca makr zdefiniowanych w pliku <avr/eeprom.h>. Przeczytaj tutorial, ktory ci mam nadzieje wyjasni to i owo: http://www.teslabs.com/openplayer/docs/d...
Dim V As Eram Byte 'zmienna V będzie umieszczona w EEPROM Dim B As Byte 'zmienna będzie w pamięci SRAM B = 10 V = B 'można normalnie korzystać z takich zmiennych B = V 'na przykład odczytać zapisana wcześniej daną albo tak Dim B As Byte WriteEeprom B , 0 'zapis do pamięci EEPROM to ci wrzucilem z helpa... powiedz czy czy ci sie przydalo albo jak to...
o dzięki, szukałem dzisiaj tego bitu w PM, ale nie mogłem znaleźć. Rzeczy związane z samym rdzeniem są opisane na stronie ARM - w dokumentacji od ST można czasem coś znaleźć, ale zwykle nie ma to sensu. http://infocenter.arm.com/help/index.jsp... Mam takie pytanie co do atomowego przepisania zmiennej nr. 1 do...
Witam Mam może głupie pytanie ale nie umiałem znaleźć odpowiedzi. Mam przekaźnik SRA-12VDC-CL, jest na nim napisane 20A 14DC, 20A 125VAC. Czy to znaczy że mogę go użyć do przełączania max 125V prądu zmiennego ? Tak się składa że potrzebuję przekaźnik do załączania 230V ok 250 W. Czy ten przekaźnik się nada ?
dim bleble as string * 1 Definiowana jest zmienna bleble typu String o długości do 1 znaku w pamięci SRAM. Liczba określa więc nic innego jak przewidywaną długość zmiennej typu String w znaku.
Pisząc w C to nie masz gwarancji co na końcu zrobi kompilator. Możesz przypisać zmienne do rejestru: register unsigned char zmienna asm("r2"); Ale to co sie potem stanie zależy od kompilatora. Mi w wersji 3.4 robił troche badziewia, ze względu na optymalizacje, i nie możność stosowania tej zmiennej jako volatile, Ponoć generowany kod...
Witam. Próbuję w swoim programie zastosować zmienny adres wektora przerwania Tim1_OVF. W programie wpisuję adres vectora do SRAM, wpycham na stos i poprzez wywołanie RET, powoduję powrót z niby RCALL'u do nowego miejsca w programie zakończonego RETI. .cseg .org 0 rjmp _setup reti reti reti reti rjmpetykieta ;tim1_ovf .org x020 _setup: ldi R16, low(ramend)...
Sama zmienna "byte", jak sama nazwa wskazuje ma rozmiar 1 bajta. Prawdopodobnie coś robisz źle podczas samej deklaracji. Najlepiej wklej tu swój program.
witam wlasnie sie zoorientowalem ze te rejestry to tez przeciez pamiec SRAM i z przesunieciem 0x20 mamy do niej dostep jak do zwyklej komorki... zadeklarowalem zmienna jako wskaznik do niej i teraz juz moge podawac te zmienna w parametrze funkcji i zmienia mi w petli na bierzaco...problem rozwiazany :) Pzdr.
Witam serdecznie. Podczas pisania programu w BascomAVR dla atmegi lepiej ręcznie przyporządkować obszar w pamięci SRAM dla zmiennych wykorzystywanych w programie czy lepiej, żeby automatycznie zostały rozmieszczone w pamięci? Chodzi o to czy lepiej tak: Dim As Zmienna At 800, czy tak: Dim As Zmienna ? Jeżeli lepiej ręcznie to czy są jakieś reguły rozmieszczania...
W raporcie masz mapę zmiennych w SRAM. Sprawdź jaka zmienna lub string jest przed SS1. Jeżeli jest to string, to może za mało bajtów jest przydzielonych. ----------------------------------------... Variable Type Address(hex) Address(dec) ----------------------------------------...
stany = twiread(NOACK); twistop(); LCD_GoTo(22,1); LCD_WriteText(" "); LCD_GoTo(22,1); int i = 128; for (; i; i>>=1) LCD_WriteText((stany&i?"1&q... Przeanalizujmy zatem. Linie 1 i 2 pomijam bo to dzieło kolegi. Linie 3 i 4 są zbędne. Linia 5 ustawia...
Na podstawie programów, zmienna wskaźnikowa p przyjmuje wartość 0x8001 i leży pod adresem 0x025A. Wskazuje ona na wartość 170 pod adresem 0x8001.
podzielić odczyt na dwie części, zamiast upychać w jednej linii? Upchnąłem w jednej :wink: Powstało coś takiego: [syntax=c] value = pgm_read_byte(pgm_read_word(&arrays[iter... I rzeczywiście działa. Chyba zrozumiałem mój błąd na początku - jeśli była stała to pewnie kompilator podstawiał wyliczony adres. Ale gdy była zmienna,...
Przecież to wszystko co masz w #define to są stałe, które mogą siedzieć w PROGMEMie. Przecież nie ma znaczenia, czy napiszesz: #define TEXT "ten tekst wjedzie na zmienna numery_autoryzowane" USART_Transmit_Word(TEXT); czy USART_Transmit_Word("ten tekst wjedzie na zmienna numery_autoryzowane"); więc to wszystko może...
Witam, Mam proste pytanie. Zastanawia mnie, w jaki sposób obsługiwane są przez kompilator i następnie w procesorze, zmienne, którym podczas pisania programu przypisuje się konkretną wartość. Istnieje spory zasób informacji o procedurach czytania wartości z obszaru pamięci programu, jednakże przecież przy zwykłym [syntax=c]unsigned char zmienna[2][2]...
Witam, poczytałem sporo informacji nt. skryptów linkera, ale niestety jednej rzeczy nie mogę zrozumieć. Mam przykładowy zapis (sam napisałem): [syntax=c] .text : { . = ALIGN(4); __text_start__ = .; /* zmienna zawierająca początek sekcji text */ *(.text) /* kod wykonywalny aplikacji */ *(.text.*) *(.rodata) /* dane tylko do odczytu przechowujemy we flashu...
Bo to co chcesz zrobić to dramat jest:> NIE WOLNO TAK UŻYWAĆ ERAM! Nie wiem, czy zdajesz Sobie sprawę z tego, że ERAM ma skończoną ilość cyklów zapisu... Więc powinieneś używać jakiejś innej zmiennej w SRAM i po tym jak już użytkownik ustawi co chciał wpisać ją do zmienna (ERAM). Pamiętaj, nie WOLNO używać ERAMu jako zwykłych zmiennych... Rozumiesz?...
Jeśli nie zablokujesz przerwań na czas dostępu do flag z poziomu aplikacji, to jeśli ta sama komórka pamięci będzie modyfikowana z poziomu handlera przerwania, to zawartość zmiennej się całkowicie "rozjedzie". Dlatego, że operacje te nie będą atomowe. Problem rozwiąże umieszczenie zmiennej w obszarze dostępnym dla cbi/sbi, bo wtedy zmiana stanu flagi...
Rzeczywiście. Rozmiar stosu mam 1024 więc się przepełnia. Dzięki. Skoro stos ma rozmiar 1024B to pozostałymi 111kB SRAMu są nie używane? Co stoi na przeszkodzie na rozszerzeniu stosu na cały zakres pamięci? Nie ma innego sposobu niż globalna zmienna? Czasami potrzebuję zapisać dużo danych tylko w obrębie jednej funkcji. Natomiast Malloc wydaje mi się...
Piotrus_999 , to nie jest dokładny odpowiednik mojego przykładu. Po pierwsze we wszystkich pętlach są zmienne liczbowe dwu bajtowe, a u mnie cztero bajtowe. Wszystkie Twoje przykłady są to przykłady zapisu, a nie zapisu i odczytu. W moim przykładzie pętle są uniwersalne, w zapisie w rejestrze R17 jest zmienna, która jest następnie zapisywana. Niestety,...
Napiszę o co mi chodzi... Mam impuls cyforwy z czujnika trwający od 0,5 do 1sek, co 1...5sek. Sygnał może być zakłócony dlatego zdecydowałem się na częste sprawdzanie impulsu a nie tylko raz czy nawet kilka razy. Muszę mieć prawie 100% gwarancji na zarejestrowanie impulsu, żadnego nie mogę przeoczyć. http://obrazki.elektroda.pl/4623690400_1...
witam, Na tą chwile menu wydaje się już być opanowane :) Zmieniłem tytuł tematu gdyż obecne moje pytanie nie dotyczy menu.... wycinek z kodu: Dim Write1 As Eram Byte Dim Read1 As Byte ... Write1 = 44 Writeeeprom Write1 , &H0A Readeeeprom Read1 , &H0A Lcd Read1 Zapisuje sobie wartość 44dec do int eeproma pod adres H0A i tu jest dobrze, gdyż w eepromie...
Aby obliczyć prawidłowe wartości stosów wystarczy znać swój program, zwłaszcza to co ze stosów korzysta najwięcej. - Ile jest przerwań i jak mogą się wywoływać wzajemnie. Każde przerwanie może odłożyć na stos prawie 40 bajtów w prologu. - Ile mamy wywołań podprogramów przez GOSUB. Ile mamy wywołań wbudowanych funkcji i czy korzystają z operacji na zmiennych...
Tak, jeśli pisze w asemblerze to wiesz kiedy i jaka zmienna ląduje w takiej pamięci operacyjnej, ale język wyższego poziomu będzie już robił problem. Jednak nadal bardzo nie polecam takiej metody. Więcej z tym będzie problemów niż z bateryjką. Poza tym do SRAMu możesz zamiast bateryjki użyć kondensatora 1F 5,5V który do takich celów nadaje się doskonale.
po bozemu to ja bym zrobil tak: w osobnym pliku piszesz sobie kod pamieci sram z parametrami sk i gk, kompilujesz go jako osobny projekt i upewniasz sie, ze ise faktycznie zrozumialo, ze to ma byc pamiec; obliczasz sobie zmienna BYLO: n = dw(mod)sk, POWINNO BYC: n = dw / sk; Projekt polega na tym, ze mam 10 przetwonikow 14-bitowych, z ktorych musze...
Czwarta sprawa - na pewno chodzi Ci o zajęcie RAM, a nie Flash? Nie wydaje mi się, żeby sama obsługa zmiennych potrzebowała tak dużo pamięci operacyjnej. Pokaż jakiś fragment kodu. Wystarczy że przed pętlą główną programu, napiszę sobie: Dim tmp1 As Double Dim tmp2 As Double Dim tmp3 As Double Dim tmp4 As Double Dim tmp5 As Double i otrzymuję Error...
Jeszcze prosił bym o wyjaśnienie dlaczego tak się dzieje. No to: Pokaż nieco większy fragment programu. I nadal nie mówisz nic czy zmienna jest volatile czy nie. Jeśli nie to wtedy (sam zaobserwowałem) czasem działa, ale w 99% przypadków nie działa. Dodano po 6 Co do samego pytania o volatile - jak wspomniał kol. (at)stanleysts: modyfikator volatile...
(at)paluszasty Właśnie sprawdzałem jak wygląda kwestia dostępu do FLASH i jest tak jak pisałem. Definiujesz stałą z const i automatycznie ląduje ona we FLASH, a z programu masz do niej dostęp bez żadnych specjalnych udziwnień. Czyli definicja: const char tmpchar1 Chyba że z jakiegoś powodu chcemy umieścić zmienne zadeklarowane jako const w RAMie, jak...
Cóż, pytanie może nie tyle bardziej techniczne, co z czystej chęci uzupełnienia swoich informacji teoretycznych. Otóż, jeśli potrzebujemy wykorzystać w programie jakąś wartość stałą to możemy postąpić w jeden z poniższych sposobów: [syntax=c] const int liczba=10; [/syntax] lub [syntax=c] #define LICZBA 10 [/syntax] O ile jasną sprawą dla mnie jest to,...
Hej. Mam do Ciebie jeszcze takie pytanie przy okazji. Po kompilacji pokazuje sie komunikat o zajetości SRAM (całkowitej bo tam sa sekcje wypisane) i pokazuje 1 bytes (1,6%). Pokazuje 1 bajt mimo że deklarowane jest w sumie 11 bajtów (w tym 4 uint16_t). Jak uruchamiam symulacje i dodaje zmienne do "watch" to kazda zmienna jest pod innym adresem. Czy...
A jeszcze mi przyszło do głowy takie rozwiązanie typedef struct { char opis[20]; void (*(tab_wsk_fun[3])... uint8_t tab_arg[2]; uint8_t *ptr_arg_zmienny; } menu; i deklaracja uint8_t arg_zmienny1[2]; uint8_t arg_zmienny2[2]; const menu pozycja_nr[2] PROGMEM= {...
Po zadeklarowaniu uint8_t temp1 = Data[1]; Zmienna temp1 nie trzyma danych z adresu 0x61 :/ Co do wstawek w ASM to nie wgłębiałem się w nie za bardzo i mam pojedyncze linie bez danych pobieranych z C ... znam ASM i wiem co i jak wykonać, żeby kod się nie krzaczył ...
Case`ów nie dotykaj. Napisz wszystkie a program określi które wyświetlić a które pominąc ;) Zapis tylko jednej zmiennej do Eeprom. Za to po przepisaniu z eeprom do SRAM możesz sprawdzać każdy bit z osobna. Na dodatek numer bitu może być zmienną czyli jeśli zmienna ma 16 bitów to drugą zmienną możesz określić o który bit Ci chodzi. Jeśli zmienna Menu...
Podejrzewam, że najwięcej problemów robi to: pamieci przydzielonej dynamicznie nie zwalniam i jak widać jest kaszana.tylko jak rozumiem musialbym to zrobić poza funkcją substr? Jeśli zaczniesz zwalniać pamięć poza funkcją substr, to łatwo narobić błędów typu wycieki pamięci (kiedy w pętli coś się pominie i zmienna zostanie zapomniana ale nie zwolniona)...
Nie zrobię tak: [syntax=c]mask = 1 << _bit;[/syntax] bo nawet z optymalizatorem ustawionym max. szybkość funkcja ze switch działa o kilka cykli szybciej :) sprawdzone debugując w avrstudio... Twoja propozycja zadziała jeśli mask będzie zmienną w kodzie programu głównego i zmienna będzie rejestrze...a nie w pamięci SRAM w dodatku wewnątrz funkcji...
Z tymi wykresami to racja, sprawdzę sobie je tak jak mówisz. A mógłbyś mi taką jedną wstawkę napisac zmienna<->RAM? Napisałem przykładowe: Chciałbym zapisac bajt (0xAA) do pamiecie zawnętrznej pod adresem 0x2000. Pozniej odczytac ta wartosc i wyslac na USART, zeby zobaczyc czy działa. zapis: asm("LDI R26,0xAA" "\n\t" "STS 0x2000,R26" ); odczyt:...
Dla n&7 działa dobrze bo 7(dec)=0b111 -> więc ten iloczyn nic nie zmienia jeśli n jest mniejsze od 7. Może z innej strony - co chciałeś osiągnąć tym "&" ? Od razu przyczepię się do: 1. Definiowania F_CPU w kodzie -> powinno być ustawione w IDE lub makefile'u względnie podane jako opcja kompilatora. 2. Zmienna n spokojnie mogłaby być mniej pamięciożernego...
Program działał bez pamięci zewnętrznej SRAM ale na mniejszych tablicach. Rozumiem, że choćby nie wiem co, na tym procku nie mogę posługiwać się tablicami większymi np. niż 2-3kB, tak, żeby stos miał gdzie się hodować? Dodatkowo pomyślałem, że może w taki sposób można by to zrobić, do makefile LDFLAGS += -Wl,--section-start,.xram=0x801100,--def...
backup srać kondensator srać mały srać
obudowa bandit octavia przełącznik laboratoryjny zasilacz impulsowy
pralka electrolux pralka electrolux
Telefon Panasonic IC45682EX rozłącza połączenie po 2 sygnałach Sposoby przełączenia urządzenia w tryb Etherboot