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...
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...
Ile zadeklarowałeś HWstack SWstack i Framesize?
[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...
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...
Zapoznaj się z $hwstack, $swstack i $framesize.
Napisz: [syntax=vbnet]$regfile = "attiny2313.dat" $crystal = 8000000 $hwstack = 24 $swstack = 16 $framesize = 32[/syntax] Miłego dnia ;)
Proponuję na początku programu (np. po deklaracji częstotliwości) dodać: $swstack = 64 $hwstack = 64 $framesize = 32 i przetestować jeszcze raz. Pozdrawiam Andy
Witam ! Dodaj te trzy linijki do programu, jako trzecią, czwartą i piątą linię. [syntax=basic4gl] $hwstack = 8 $swstack = 8 $framesize = 8 [/syntax]
(at)emarcus: O ile się nie mylę, przy prescalerze 64 i cżestotliwości 8MHz timer0 będzie miał skok co 8us, czyli licznik bedzie przepełniał się co 2,048ms, więc do poprawnego odliczenia 1s w obsłudze timera należy załadowywać do niego Timer0 = 6, i dodać licznik, który 500 razy zliczy przepełnienia. A co do tych parametrów, to zawsze wstawiałem domyślne...
Pierwsze co bym zrobił, to dopisał na początku programu np.: [syntax=basic4gl]$hwstack = 128 $swstack = 128 $framesize = 128[/syntax]
1. Zwiększ parametry hwstack, swstack, framesize 2. uprość ten program do testów. Ogólnie metodyka testów wygląda tak, że jak coś Ci nie działa to zostawiasz w programie TYLKO kod odpowiedzialny za tę właśnie rzecz i dopiero po jej uruchomieniu dopisujesz (przywracasz) resztę.
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
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...
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
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 :...
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...
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]
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"...
Troszkę za dużym ogólnikiem rzuciłem... Tak, stos to HW Stack (sprzętowy) i Soft Stack (programowy). Należało by zwiększyć rozmiar stosu sprzętowego, bo używasz przerwania od Trmer1. Wywołanie obsługi przerwania powoduje zajęcie 32 bajtów stosu (czyli tyle, ile masz zadeklarowane), a nie tylko do tego jest on używany. Możesz ustawić np. dwukrotnie więcej....
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óć...
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 =...
[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....
zapewne masz problem ze stosem. Jeśli po ograniczeniu ilości zmiennych które deklarujesz program działa , a tylko zmiana wielkości rozmiaru tablicy wpływa na to że program się wiesza to napewno tak jest. Spróbuj albo dać większy procek (z większym Ramem) lub też zwiększ rozmiar stosu. W bascomie służą do tego te polecenia $hwstack $swstack $framesize...
Uściślijmy jeszcze czy w kodzie który działa też nie masz wartości $framesize, $swstack i $hwstack? Rzeczy należy eliminować sukcesywnie. Dopisałbym te brakujące rzeczy od razu zamiast je podejrzewać... !EDIT! Zapomniałem o tym a już się w tej sprawie kontaktowałem kiedyś z Supportem :D Słowo Hbyte jest słowem używanym przez wewnętrzne procedury Bascom....
Na początek zwiększyłbym stos ;) ($hwstack, $swstack i $framesize).
Zwiększ HWSTACK. Dla prostych programów możesz zignorować takie ustawienia jak $HWSTACK, $SWSTACK, $FRAMESIZE, ale przy rozbudowanych programach warto policzyć czy wszystko gra.
Czy jest możliwy błąd podłączenia? Tutaj oczywiście zmieniłem na PB.1 Tak, wszystko jest możliwe... Spróbuj ten code: [syntax=basic4gl] 'DS18B20 - ROM reading test from single sensor DS18B20 $regfile = "m8adef.dat" $crystal = 4000000 $hwstack = 80 $swstack = 80 $framesize = 40 Config 1wire = Portb.1 'Config 1wire = Portd.5 Dim N As Byte Dim Dsid1(8)...
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:...
$HWstack = 64 $SWstack = 64 $Framesize = 64
Mnej więcej tak by wyglądał program: [syntax=basic4gl] $regfile = "ATtiny13.DAT" $crystal = 1200000 Config Pinb.0 = Output Portb.0 = 0 Led Alias Portb.0 $hwstack = 8 $swstack = 8 $framesize = 8 Do Led = 1 : Wait 1 : Led = 0 : Wait 1 Led = 1 : Wait 1 : Led = 0 : Wait 1 Led = 1 : Wait 1 : Led = 0 : Wait 1 Led = 1 : Wait 3 : Led = 0 : Wait 1 Led = 1 :...
Możesz wykorzystać Lookup do pobierania elementu z tablicy. Tylko pasuje żeby dane w linii Data były tego samego typu, można zrobić tak że "AUTO" będzie równe 0, a "OFF" równe 255. [syntax=basic4gl]$regfile = "m8def.dat" $crystal = 16000000 $baud = 19200 $hwstack = 64 $swstack = 64 $framesize = 64 Dim G As Byte , Nr_elementu As Byte Nr_elementu = 0...
hwstack swstack framesize framesize swstack hwstack hwstack swstack framesize attiny13
procesor szybkość komputer zasilać moduł pralka schemat regulacja amper
dekoder horizon dekoder horizon
Montaż sprężyny w kierownicy Tracer SimRacer - krok po kroku UPS on-line do agregatu Barracuda 2800 – Eaton 9SX, APC SRT, Vertiv GXT5, Riello, CyberPower