Ile zadeklarowałeś HWstack SWstack i Framesize?
masz rację - problemy ze stosem bywają bardzo wredne jeśli się nad nim świadomie nie panuje tak więc na przyszłość pisząc programy w bascomie radzę ci jednak używać tych dyrektyw i to jeszcze poczytać od czego zależą wartości jakie się podaje dla hwstack i swstack bo tak - to na razie może działać ci dobrze a pojutrze zdziwisz się, że znowu szwankuje...
W Twoim wypadku jest to portb. A w moim portb jest zajęty to sprawdziłem na portd. Deklaracja $crystal jest do niczego nie potrzebna dopóki nie korzystasz z bibliotek czy podprogramów wykorzystujących zależności czasowe. A tych w Bascomie jest mnóstwo. UART, LCD, SPI itd. Tak że lepiej jest ustawiać $crystal taki jaki jest naprawdę.
1Hz to raz na sekundę. 8MHz to osiem milionów razy na sekundę. Sekunda jest tu kluczowa. W ciągu sekundy procesor taktowany 8MHz przetworzy około 8mln instrukcji (pomijam te które wymagają dwóch taktow) no a jak podłączysz do procesora taktowanie 16MHz to odwali dwa razy tyle roboty w ciągu sekundy . Zerknąłem na twoje kody i mam kilka rad. W Bascom...
Różne rzeczy już czytałem więc upewnij się czy programator kasuje flash przed zapisem nowego programu. Masz w swoim programie te Hwstack Swstack i Framesize? Mam nadzieje, że w kodzie nie masz nigdzie napisane $sim :D Zerknij też jak według kodu powinny wyglądać podłączenia. http://obrazki.elektroda.pl/5818703700_1...
Procesor uPC Mega16 z zegarem ustawionym na 8MHz timer: 125ns*1024*200= ok 26ms Trochę dziwnie to liczysz: 1024/8000000=0,000128us 200*0,000128=0,0256s=~25,6ms Mniejsza z tym, mniej więcej się zgadza. Co ze stosem? Masz to gdzieś na początku programu? [syntax=basic4gl]$hwstack = 40 $swstack = 40 $framesize = 24[/syntax] Jeżeli nie masz to dopisz. Możesz...
Zapoznaj się z $hwstack, $swstack i $framesize.
Kod wstaw między znacznik [syntax=basic4gl ] a (tu kod) [ /syntax] A do testów zegarka może zacznij od prostszego kodu, bo ten jest mocno pogmatwany. Spróbuj zwiększyć framesize, swstack i hwstack
atom1477 Właśnie tak robiłem. Tylko jest taki szczegół, że trzeba wcisnąć Enter. :) W symulacji pomogło to: $hwstack = 64 $swstack = 64 $framesize = 64 Mi się wydaje, że w symulacji działa bez tego (w ustawieniach mam hwstack = 32 swstack = 8 framesize = 24). Ale jak to sprawdzasz, jak nie wiesz kiedy nastąpi przerwanie? W praktyce to nic nie daje......
Zrozumienie prostego i nieskomplikowanego, jak się na końcu okaże, Overlay bardzo się przydaje. Zanim zacznę to przypomnę i umówmy się że jeden bajt zapisujemy w dwóch znakach, na przykład FA, FF, 8C, 0B itd.. Pierwszy przykład obrazujący zagadnienie: Jak wiadomo zmienne typu WORD albo INTEGER składają się z dwóch bajtów. Jeśli więc zadeklarujemy w...
Tutaj masz wszystko opisane: http://www.elektroda.pl/rtvforum/topic32...
No nie właśnie. W zasadzie to w ogóle nie :D A już na pewno nie tymi programowymi. hwstack to stos sprzętowy. Ale jego wierzchołek musi ustawić programista. uP jedynie sprzętowo umieszcza i zdejmuje tam dane, ale gdzie to robić to musi określić programista. swstack to stos programowy. W sumie nie wiem co to :D frame to ramka i też nie wiem co to :D
Ad. 1 Przykład z a był nieco poglądowy, sytuacja tak się dla mnie przedstawia. Program wygląda tak: [syntax=vb]Target = Disk_psu_node 'Wpisanie do zmiennej Ubuf(1) wartości 3 Size = 2 'Wpisanie do zmiennej Ubuf(3) wartości 2 Ubuf(4) = 10 Ubuf(5) = Disk_psu_status 'Wpisanie do Ubuf(5) 1 bajtu statusu Toggle Ubuf(5).0 Print #2 , "TARGET" 'Wysłanie przez...
[syntax=basic4gl] Report : noname3 Date : 10-21-2014 Time : 20:42:39 Compiler : BASCOM-AVR LIBRARY V 2.0.7.5, DEMO Edition Processor : M8 SRAM : 400 hex EEPROM : 200 hex ROMSIZE : 2000 hex ROMIMAGE : 546 hex -> Will fit into ROM ROMIMAGE : 1350 dec FLASH USED : 16 % BAUD : 9600 Baud XTAL : 16000000 Hz BAUD error : 0.16% Stack start : 45F hex Stack size...
Napisz: [syntax=vbnet]$regfile = "attiny2313.dat" $crystal = 8000000 $hwstack = 24 $swstack = 16 $framesize = 32[/syntax] Miłego dnia ;)
Witam ! Dodaj te trzy linijki do programu, jako trzecią, czwartą i piątą linię. [syntax=basic4gl] $hwstack = 8 $swstack = 8 $framesize = 8 [/syntax]
Nawet jeśli jest tylko dołączone. Odpytywanie następuje co parę sekund a efekt bielenia ekranu mam za każdym razem kiedy nacisnę przycisk w celu załadowania nowego obrazka. A tu raport (wklejam na razie większość gdyż może Wam to coś ułatwi: Report : System_LCD_TOUCH PAD_rs485 Date : 04-17-2010 Time : 13:48:37 Compiler : BASCOM-AVR...
Forum Elektroda ma swój player i możliwość takiego dodawania filmu do postu żeby się wyświetlił i nikt nie musi niczego ściągać. Takie czasy, że każdy się dwa razy zastanawia zanim coś ściągnie i uruchomi na swoim komputerze. Umieszczając film w playerze zwiększasz szansę że ktoś go obejrzy ;) Co do oprogramowania to całkowicie podstawową sprawą jest...
Wstaw to i powinno się udać. Nie chce mi sie tego tłumaczyć setny raz więc chyba poświecę temu zagadnieniu raz jedną stronę na swojej witrynie i będę tylko linkował :D [syntax=vbnet]$Regfile="attiny13a.dat" $crystal=9600000 $hwstack = 4 $swstack = 2 $framesize = 20[/syntax]
To bez znaczenia bo i tak wywala sie nawet na 2^2 :) Nie czytasz co piszą inni - stos :D Wklej na początku kodu ... $hwstack = 64 $swstack = 64 $framesize = 64 ... Piotrek
Witam ! Dziękuję szun działa bardzo dobrze. Jeszcze mam pytanie czy da się przerobić tak aby wrzucić to na procek attiny13? bo akurat taki mam a szkoda atmega8 na taki czasowy układ Do swojego programu ( ATtiny13 ) dodaj te linie: $hwstack = 32 $swstack = 0 $framesize = 12 Pozdrawiam. Stefan
Pootwieraj wszystkie i szukaj jednego z deklaracją mikrokontrolera. Tylko jeden będzie miał wpis i tylko ten się kompiluje. $nocompile
Powinieneś sobie sam "ręcznie" ustawić takie parametry jak: $hwstack = 32 $swstack = 8 $framesize = 16 bo to od nich m.inn zależy ile Bascom będzie zjadał pamięci RAM na Stos, ramkę itp
Troszkę dziwnie wygląda ta pętla główna, ze zmienną "corobic" :) Mogłeś dać po prostu w do-loop wywołania kolejnych procedur i jedną pauzę np. 1 sek. Do tego w procedurze wyświetlania dajesz CLS - nie przeszkadza Ci miganie ? Spróbuj dodać na początku dyrektywy ustalające stos : $hwstack = 32 $swstack = 32 gdyż używasz GOSUB. Może pomyśl o procedurach...
Jtag możesz wyłączyć nawet w kodzie: [syntax=vbnet]$regfile = "m32adef.dat" $crystal = 8000000 $hwstack = 64 $swstack = 32 $framesize = 32 Disable Jtag[/syntax] Do tego wszystkie aliasy przycisków powinny się odnosić do PIN a nie PORT. W niektórych masz PINA i tam jest dobrze ale niektóre masz PORTD i tam zawsze mikrokontroler będzie odczytywał 0.
W symulatorze możesz sprawdzić czy program nie nadpisuje stosu. Komunikat pokazuje się w dolnej części okna symulatora "Frame or software stack overlap", można też sprawdzić w zakładce "uP". Jeżeli nadpisało stos ustawiasz wartości dla stosów na początku programu np.: [syntax=basic4gl]$hwstack = 32 $swstack = 16 $framesize = 32 [/syntax]
Można zrobić tak: $hwstack = 32 $swstack = 32 $framesize = 32 Dim Aa As Double Dim B As Double Aa = 5 Aa = Aa / 6 Print Aa B = Sin(0.2) Print B Do Loop End ...i będzie działać ! Pozdrawiam...
[syntax=vbnet]$regfile = "m328pdef.dat" $crystal = 4000000 $hwstack = 40 $swstack = 16 $framesize = 32 Dim Chrg_status As Byte , Helpb As Byte Do Helpb = Charge_detect 'odczytaj stan wejścia If Chrg_status <> Helpb Then 'tylko jesli różni się od poprzedniego stanu Chrg_status = Helpb 'zapamiętaj stan If Helpb = 1 Then Gosub Buzzer 'tylko jeśli...
No to spróbuj tego: $regfile = "m16def.dat" $crystal = 4000000 $hwstack = 32 $swstack = 32 $framesize = 32 config 1wire= portb.7 Do 1wreset if err=0 then print "PP_ok" ' czy LCD "PP_OK" - co tam masz else print "PP_err" ' j/w endif waitms 500 Loop Napisz o wyniku doświadczenia :D Piotrek
Po pierwsze który to Bascom i jakie są wartości $hwstack, $swstack i $framesize w IDE bo stamtąd je bierze jeśli nie umieścisz tego w kodzie. Na przyklad jesli nie użyjesz Nosave to Bascom potrzebuje około 32B na odłożenie rejestrów i wykorzystuje do tego $HWstack. Do tego w przerwaniu masz Lookup() który potrzebuje kolejne cztery bajty. Jak masz za...
Proponuję na początku programu (np. po deklaracji częstotliwości) dodać: $swstack = 64 $hwstack = 64 $framesize = 32 i przetestować jeszcze raz. Pozdrawiam Andy
Zadeklaruj ile i gdzie chcesz przydzielić pamięci. Przykładowo $hwstack = 32 $swstack = 18 $framesize = 8 Połączenie ATTiny13 z bascomem to fatalne rozwiązanie, ale przy odrobinie samozaparcia da się coś zrobić. Z tymi ustawieniami udało mi się użyć 6 zmiennych, przy czym program w symulatorze i tak szedł w krzaki. Jak będziesz pisał to musisz unikać...
Mówisz masz na timerze. $regfile = "m16def.dat" $crystal = 1000000 $hwstack = 32 $swstack = 8 $framesize = 16 Config Timer1 = Timer , Prescale = 1024 Enable Interrupts Enable Timer1 Start Timer1 On Timer1 Odmierz_czas Const T = 6942 Config Portb.1 = Output : Portb.1 = 1 : Led Alias Portb.1 Config Portb.2 = Input : Portb.2 = 1 :...
Witam. Komunikat o bledzie jest o takiej tresci: Error : 22 Line : 173 Out of SRAM space Dodaj taki fragment na początku kodu: [syntax=vbnet]$hwstack = 8 $swstack = 8 $framesize = 8[/syntax]
Jak w tytule, korzystając z funkcji DTMF out w Bascomie udało mi się wygenerować "jakiś" sygnał. .................. W moim programie nie ma żadnej instrukcji $crystal bo nie wiem czy powinna być. Podaję kod programu odpowiedzialny za wysyłanie DTMF: Jeżeli w programie /listingu nie ma podanego taktowania lub wybranego processora oraz wartości dla:...
Nie, Tiny13 ma tylko 64 komórki RAM, działanie zmiennych zależy od ustawień $hwstack - stos sprzętowy i $swstack - stos programowy. Ogranicz oba parametry do 8 lub 4, ale trzeba uważać z wywoływaniem podprogramów, aby nie przepełnić stosów. Także dyrektywa $TINY ustawia parametry środowiskowe, ale uniemożliwia wywołanie podprogramów.
9600000Hz/70000Hz=137 takty 9600000Hz/150000Hz=64 takty Z takimi rozdzielczościami się tam musisz liczyć. Dla 37kHz i innych konfig uzyskasz klikając CTRL+SPACE. Bascom sam podpowiada jakie masz możliwe ustawienia. Nie pamiętam tylko czy jest to FastPWM czy PhaseCorrect który jeszcze spowolni sprawę o połowę. W Tiny85 masz Timer który może być taktowany...
Sprawdziłem ten kod przed chwilą i jeśli na PD6 jest przycisk.. to jego kolejne naciskanie włącza lub wyłacza naprzemiennie diode LED na pinie PORTD.7 100% tested [syntax=vbnet]$regfile = "m644pdef.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 Pcmsk3 = &B01000000 Enable Pcint3 : On Pcint3 Pcint3_isr Config Portd.6 = Input : Set...
Jeślii masz wolny pin to możesz sobie na nim otworzyć port COM. Taki programik wciągający cztery bajty po serialu zajmuje w Bascom 288 B a to pewnie dlatego że jeszcze musiał się zająć stosem i tablica przerwań co Ty juz pewnie tez masz zrobione więc to by odpadło. Zapisujesz to sobie do Eeproma przy starcie i gotowe. [syntax=vbnet]$regfile = "attiny13A.dat"...
Zobacz to i wyciągnij wnioski [syntax=vbnet]$regfile = "m88pdef.dat" $crystal = 1000000 $hwstack = 40 $swstack = 16 $framesize = 32 '$sim Cursor Off Cls Config Portd.0 = Output Config Timer1 = Timer , Prescale = 8 , Clear Timer = 1 , Compare A = Disconnect , Compare B = Disconnect Compare1a = 62500 On Compare1a Beep Enable Compare1a Enable Interrupts...
Teraz działa: [syntax=basic4gl]$regfile = "m128def.dat" ' specify the used micro $crystal = 16000000 ' used crystal frequency $hwstack = 32 $swstack = 32 $framesize = 32 $sim Dim Z_rs_str As String * 64 Dim Kolor_temp As Byte Dim Kolor_hex As String * 2 Dim Kolor_wynik As Single Z_rs_str = "10FFFFFF" 'pobieramy z hex kolor dla RED Kolor_hex = Mid(z_rs_str...
Czy ATmega8535 ma tylko mierzsyć napięcie i wysyłać? Jeśli tak to po co taki duży uK do tego? :) Program może wyglądać tak: $regfile = "m8535.dat" $crystal = 16000000 $hwstack = 32 $swstack = 10 $framesize = 40 Dim W As Word Config Watchdog = 2048 Start Watchdog Reset Watchdog Config Adc = Single , Prescaler = Auto , Reference = Internal Start...
marcinek.p - to gotowiec dla ciebie, nie mam jak go przetestować ale jestem pewien że zadziała jak trzeba. Masz tu przerwanie, miganie led i zliczanie migniec z incr Mozna to wszystko wkleic do przerwania ale dobra zasada nakazuje w przerwaniach umieszczać jak najmniej kodu. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 1000000 $hwstack = 32 $swstack...
...może jakaś sugestia please ;) Zapomniałeś o $hwstack = 32 $swstack = 32 $framesize = 16 Wartości w/w parametrów mogą być inne(czytaj:większe) , jeśli "obrabiasz " długie stringi. Poza tym , komplikujesz niepotrzebnie proste rzeczy(czytaj:nie "wgryzłeś się" w help-a) ;) Function Scanstrsp() Local I As Byte I = Instr(text , Sep) 'zwróć...
RTFM:) Jak zawsze, $hwstack $swstack...
Kolego może zacznij od czegoś prostszego bo nieskomplikowane zadanie a tu wydaje się być inaczej. Programowanie to nie tylko znajomość mikrokontorlerów, języków ale przede wszystkim umiejętność samodzielnego rozwiązywania problemów i wiążąca się z tym pomysłowość. Żeby przetestować ten kod wziąłem drugą Atmegę8 i kazałem jej nadawać impuls co 500ms...
Zajętość flash`a z 46% na 38% :P Tak bym się nie bawił, ale w Tiny13 to ma znaczenie bo można coś jeszcze upchnąć ahahaha :D [syntax=vbnet]$regfile = "attiny13.dat" $crystal = 9600000 $hwstack=20 $swstack = 8 $framesize = 16 'Declare Sub Zmiana Config Pinb.2 = Input Set Portb.2 Config Portb. 4 = Output Config Servos = 1 , Servo1 = Portb.4 , Reload =...
Na początek zwiększyłbym stos ;) ($hwstack, $swstack i $framesize).
[syntax=basic4gl]$regfile = "m8def.dat" $crystal = 8000000 $hwstack = 40 $swstack = 16 $framesize = 32 'timer '16MHz 16000000(16MHz)/256(Prescaler)=62500 i odejmij jeden Config Timer1 = Timer , Prescale = 256 , Compare_a = Disconnect , Compare_b = Disconnect , Clear Timer = 1 Enable Compare1a : On Compare1a Timer1_isr : Compare1a = 62499 '1s (at)16MHz...
powoduje miganie diody w bardzo nie regularnych odstępach czasu - widać to "gołym okiem". Na dodatek trudno nazwać te odstępy "pół sekundy". ... Na początku mam jeszcze: $hwstack = 32 $swstack = 8 $framesize = 16 Bez tego nie idzie zadeklarować żadnej zmiennej - "out of SRAM". Dyrektywa CRYSTAL tylko informuje kompilator o częstotliwości generatora....
hwstack swstack framesize swstack hwstack framesize framesize swstack hwstack
pradnica elektrowni wiatrowej inżynier zarobek t370hw03 matryca
Brzęczący wiatrak procesora w komputerze - co robić? Oznaczenie wyłącznika różnicowoprądowego dla kabli dwużyłowych w mieszkaniu