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ę.
Ile zadeklarowałeś HWstack SWstack i Framesize?
Zapoznaj się z $hwstack, $swstack i $framesize.
W symulacji pomogło to: $hwstack = 64 $swstack = 64 $framesize = 64
Witam ! Dodaj te trzy linijki do programu, jako trzecią, czwartą i piątą linię. [syntax=basic4gl] $hwstack = 8 $swstack = 8 $framesize = 8 [/syntax]
RTFM:) Jak zawsze, $hwstack $swstack...
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]
Pierwsze co bym zrobił, to dopisał na początku programu np.: [syntax=basic4gl]$hwstack = 128 $swstack = 128 $framesize = 128[/syntax]
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...
Tutaj masz wszystko opisane: http://www.elektroda.pl/rtvforum/topic32...
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]
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
A mikrokontroler to: A ustawienia dla AVR-DOS to: A ustawienia $framesize, $hwstack i $swstack to:
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...
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
"Pomocnik" do Bascoma i ... http://www.elektroda.pl/rtvforum/topic91... Piotrek
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]
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
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.
Pootwieraj wszystkie i szukaj jednego z deklaracją mikrokontrolera. Tylko jeden będzie miał wpis i tylko ten się kompiluje. $nocompile
Na początek zwiększyłbym stos ;) ($hwstack, $swstack i $framesize).
No to skoro się uczysz to ucz się od razu porządnie. W przerwaniach ustawiaj jedynie flagi, a działania przeprowadzaj w pętli głównej. Poczytaj też o stosach $hwstack, itp.
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ć...
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...
Powinienem scalić odpowiedź ale to zupełnie inna rzecz Wymieniłem stabilizator , i dorzuciłem jeszcze jedno serwo (osobne zasilanie) wspólna masa . Działa dobrze ale czasami potrafi sie "zaciąć" Ale po zainteresowaniu sie parametrami $hwstack itp spędziłem chwile analizując działanie kodu . i w pewnym momencie bascom avr sugeruje aby parametr $hwstack...
(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...
A coś takiego trzeba dodać.... [syntax=basic4gl] $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...
Zapakuj mój kod do procka (bin albo hex, jak Ci wygodniej) EDIT: Czy Ty przypadkiem nie masz zegara na 12Mhz ustawionego w procku?? Bo jeśli tak to wszystkie czasy się rozjadą, ale w sumie i tak powinno coś działać... ..i może dodaj do mojej wersji w BASCOM jeszcze te linie: $hwstack = 40 $swstack = 16 $framesize = 32 U mnie w kompilatorze są ustawione...
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...
Jeżeli masz kłopoty ze stabilnością programu, to może na początek zwiększ wartości stosów. [syntax=basic4gl]$hwstack = 128 $swstack = 128 $framesize = 128[/syntax]
Z całym szacunkiem to jest to po prostu wioska. Nie zadałeś sobie trudu sprawdzenie biblioteki o której pisałem. Powinienem to tak zostawić , ale nie mogę na to patrzeć. Nie dość, że nie możesz używać standardowych instrukcji Bascom takich jak Lcddat, Showpic itd to jeszcze potrzebujesz 512 Bajtów na bufor.. Dyskwalifikuje to ten kod dla mniejszych...
...Temperatura pokazuję co jakiś czas błędny pomiar np 124 , 32 , 98 procek się resetuje chińskie znaki raz na jakiś czas ... A czy zdajesz sobie sprawę z tego, że przerwania "rozwalają" Ci transmisję 1wire :?: Poza tym, co z niżej wymienionymi dyrektywami Bascom-a :?: [syntax=basic4gl]$hwstack $swstack $framesize [/syntax] Wiedz, że kod(listing) programu,...
Wszystkie wartości mam domyślne dla atmega32: hwstack=32, softstack=8, framesize=24, itp
Witaj. Spoko - nie ma się czego wstydzić. Zaraz wybywam, ale obiecuję, że o ile będę jutro w formie, to postaram się coś pomóc. Wesołej zabawy - teedd Dodano po 28 Witaj. Zaraz wychodzę, ale mała rada. Kiedyś miałem coś podobnego. Spróbuj zwiększyć stos, np: $hwstack=40 Pozdrowienia - teedd
Dobrze by było znać ustawienia jakie masz w IDE Bascom dla $Hwstack i $framesize Powinieneś je umieszczać w kodzie. Pobieżnie patrząc sprawdzasz prąd co ~8ms i jeśli jest zbyt duży to wyłączasz silnik i zwiększasz licznik błędu. W tej logice jest chyba jeden błąd. Kiedy silnik jest wyłączony to po kolejnych 8ms prąd nie jest już zbyt duży i licznik...
A może: $HWStack = 32 $SWStack = 32 $FRAMESIZE = 32 ?
$regfile = "m8def.dat" $crystal = 4000000 $hwstack = 40 $swstack = 16 $framesize = 32 Taką konfigurację generuje BASCOM dla Atmegi8, gdzieś indziej widziałem: $crystal = 16000000
$HWstack = 64 $SWstack = 64 $Framesize = 64
GETRC5 używa licznika TIMER0. Albo TIMER2 jeśli go układ posiada i tak go skonfigurujesz w CONFIG RC5. Aby ustrzec się dziwnych błędów (z adresami linii poza programem) nie zapomnij o wpisaniu nazwy pinu w CONFIG RC5. Sam kod bazuje na dokumentach ATMELa: http://www.atmel.com/dyn/resources/prod_... I tam można całą procedurę prześledzić....
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)...
Przeanalizuj te swoje polecenia GOSUB pod względem możliwości wyjścia i ich zagnieżdżenia. Zwiększ również nieco stos HWStack bo masz przerwania i sporo odwołań przez GOSUB.
Ta Atmega ma 2 tysiącie bajtów SRAM Kiedy zgłaszane jest jakieś przerwanie to Bascom odkłada około 30 rejestrów na stos HWstack. Kiedy wołane są jakieś procedury to na stos też odkładane są adresy powrotu z nich. Zadeklarowałeś tylko 32 bajty na stos... Spróbuj na początek zwiększyć wartości Hwstack i Framesize bo masz z czego dołożyć :D Samo granie...
W C sprawa wygląda tak samo .... No tu kolega troszkę przesadził chyba? ;) .... w C sprawa nie wygląda tak samo chociażby z uwagi na to, że byle makro ISR() nie odkłada i zdejmuje ze stosu absolutnie wszystkich rejestrów procesora co standardowo robi Bascom. A takich kwiatków jest znacznie więcej niestety :( tylko że kompilator C nie sygnalizuje błędu....
Po uruchomieniu zasilania najpierw odczekaj chwilkę, później skasuj flagę przerwania INT1 i dopiero zezwój na obsługę przerwania INT1. Nic to niestety nie daje... Przerwanie od timer0 i INT0 obsługiwane są bezbłędnie, a jak dodam enable INT1, to już nie. Coś ze stosem? $hwstack = 64 $swstack = 16 $framesize = 16
Czytam, szukam, i nic nie rozumiem.... Dodano po 24 Udało mi się ;) Nie wiedziałem że bity w dyrektywie &B liczone są od tyłu ;) [syntax=Bascom]$regfile = "m32def.dat" $crystal = 16000000 $hwstack = 40 $swstack = 16 $framesize = 32 dim adc1 as byte Admux = &B01100000 Adcsra = &B11100100 do kanal1 = adch loop[/syntax] Dokumentacja Atmega32 str. 212 Temat...
Już sobie poradziłem, problemem były ustawienia HWStack, SoftStack i Frame Space. Temat zamykam. dzięki za pomoc
Zamień swoje ustawienia na podane niżej. W razie konieczności wpisz większe aż do uzyskania prawidłowego działania. $hwstack = 64 $swstack = 64 $framesize = 64
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...
Do Autora wątku: Proszę. Nie taki diabeł straszny. Nie napisałeś jaki to procesor więc napisałem przykład dla Mega8. Funkcja odczytuje ADC(0-5) z włączony ADLAR czyli tylko osiem bitów. Wynik od 0 do 255. Zapewne działa nawet w symulatorze. To taki podstawowy. Można nie czekać a ustawić przerwanie, ale to pewnie jeszcze nie dla Ciebie :D Wpisz w Google...
[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...
Czy może mi ktoś w miarę dokładnie i jasno wyjaśnić znaczenie kilku poniższych linijek kodu w Bascom? Linijki te są umieszczone na samym początku listingu i nie potrafię ich zrozumieć. Co się stanie jeśli zmienię któreś z poniższych parametrów? [syntax=basic4gl] $prog &HFF , &HFF , &HC9 , &H00 $swstack = 255 $hwstack = 255 $framesize = 24 $baud = 9600...
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
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...
Możesz podłączyć poprzez rezystory bezpośrednio do portów, tylko trzeba pamiętać, że diody mogą wziąć 20mA i to teoretycznie pin ma wytrzymać, ale też chyba nie można brać więcej niż 100mA na cały port. To tyle teorii a w praktyce to sam sprawdzisz i pewnie procek to zniesie. Wprowadziłbym jednak pewna optymalizację. Wyświetlacze podłącz do portów PB...
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...
Odnośnie pytania A do czego służą wstawki asemblerowe i czy są konieczne? Tiny13 ma tylko 64bajtów SRAM Mikrokontroler nie potrafi bezpośrednio zapisać wartości do zmiennej. Kiedy więc ma ustawić w zmiennej 20ms wartość 1 to musi najpierw załadować wartość 1 do jakiegoś podręcznego rejestru a potem wyładować te wartość do zmiennej 20ms. Rejestrów jest...
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....
pozostałe 2 piny pracują tylko ten jeden nie , zmieniłem i tez to samo . Nie wiem czy to nie wina $hwstack = 32 $swstack = 12 $framesize = 8 ale tak głęboko nie siedzę w temacie
$hwstack = 256 $swstack = 256 $framesize = 500 Nie za rozrzutnie to trochę ustawione?
Problem na pewno jest tu :): Nosave , to musisz wiedzieć jakie rejestry (R0-R31) wykorzystuje twoja procedura przerwanie. Przed wykonaniem przerwania musisz je sam wysłać na stos, a po zakończeniu przerwania z powrotem ściągnąć ze stosu. Skonfiguruj przerwanie bez opcji Nosave , a kompilator sam zadba o wszystko :). Druga sprawa brak definicji wielkości...
Zajrzałem do skompilowanego pliku i widzę że kompilator w ogóle nie używa tu R2 i R3 więc mi je zostawił ;) Od pewnego czasu w Bascom do rejestrów można się odwoływać prosto z kodu. Ciekawe którą wersję Bascom masz. Pewnie znowu schody... U mnie program się kompiluje na 96% [syntax=vbnet] $regfile = "attiny13.dat" $crystal = 9600000 $hwstack = 16 $swstack...
Dziękuję za zainteresowanie lecz poszukuję takich informacji nt. Bascom-AVR jak np: w ustawieniach compiler HWStack?SoftStack? FrameSize? output optimize code?size warning? environment IDE-Hint time?Auto Backup? I jeszcze jedno pytanie - czy u Was też nie można w zakładce Printer zmienić tak ustawień aby drukowało z mniejszymi marginesami i w kolorze?...
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:...
Reset rzeczywiście nie jest podciągnięty do plusa bo przy programowaniu było by zwarcie. Fusebity są nieruszane, a masa w rs232 jest podłączona. Deklaracja $Crystal jest ustawiona na 4000000 - 4MHz. Zauważyłem że to że ramka nie przychodzi przy dotykaniu to przypadek - jak się odsunę od płytki to też nie przychodzi jak powinno. Cala ta komunikacja to...
Czy deklarując w bascomie globalna zmienna tablicowa byte o wielkośći 224 Dim Tablica(224) as byte Muszę jakość ją uwzględnić przy parametrach $hwstack = 250 $swstack = 250 $framesize = 25 Procesor to atmega64
Cześć. Proszę ten poradnik będzie dla Ciebie pomocny. Czy to już tablica? Gdzie ją umieścić? Tak, to jest tablica. Kompilator sam załatwi sprawę. [syntax=vbnet]$regfile = "m48def.dat" $crystal = 4000000 $baud = 19200 $hwstack = 32 $swstack = 10 $framesize = 40 Dim B1 As Byte , I As Integer B1 = Lookup(2 , Dta) Print B1 I = Lookup(0 , Dta2) Print I End...
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...
Spróbuj jeszcze dać: $hwstack = 32 $swstack = 8 $framesize = 24 Bo ty masz coś małe te wartości.
Problem rozwiązany dzięki pomocy Mundi1970 . Jak się okazało program miał większe zapotrzebowanie na stos programowy niż ustawione domyślnie jego wartości. Wprowadzenie 3 dyrektyw rozwiązało wszystkie problemy. [syntax=basic4gl] $hwstack = 56 $swstack = 48 $framesize = 64 [/syntax] Dzięki wielkie, pozdrawiam !
W HELPie nie pisze że zmienne mają być typu Single, ani też że typu String. Pisze że mają być Single i String ;) Ale mniejsza o to. Na moje oko to jest standardowy objaw wysypywania się stosu. Jaki to procesor? Jeżeli np. ATMega8 i masz dużo RAMu do daj: Kod: $HWSTACK = 128 na próbę.
Nie wiem o co chodzi- czy mu się zasoby skończyły...? Pamiętaj o tym, że istnieją dyrektywy $hwstack, $swstack, $framesize. W poprzednich wersjach źle był domyślnie ustawiony $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óć...
Potestuj bo tak na szybko przy poobiedniej kawie klapałem jedną ręką :D Może coś przeoczyłem i trzeba prześledzić. Te złożone operacje w jednej linii dla stałych Bascom robi bez problemu. Osobiście bym tego tak nie napisał. Nie wiem po co to ciągle obliczać jak można raz... [syntax=vbnet]$regfile = "m328pdef.dat" $crystal = 16000000 $hwstack = 64 $swstack...
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 :...
A wracając do początku dyskusji myślę że problem bierze sie ze zbyt małego zadeklarowanego stosu. Szczególnie jeśli problemy wystąpiły nagle po przekroczeniu pewnej ilości programu. Umieść na początku programu : $hwstack = 100 $framesize = 100 $swstack = 100 i spróbuj jeszcze raz
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...
nie kompiluje się ten kod. Wskazuje bład w linii Dim Ab(6) As Byte At A Overlay jest nieprawidłowy adres. A którą wersją Bascoma posiadasz :?: jak wstawie zamiast zmienej "A" np adres &H60 to kompiluje tyle że na terminalu dostaje 32 jedynki i 16 zer...:( A czego sie spodziewałeś :?: Sprawdź jeszcze "option" w Shiftin , czy odczytuje dane na właściwym...
Kombinuje tak: bajt = 10000000 zmienna = bajt.1 zmienna = 1 ... i tak osiem razy rozkładając bajt na bity i później tylko je poskładać w odwrotnej kolejności. Oczywiście prosto nie jest. O tablicach myślałem ale musiałbym je ręcznie rozpisać na kartce 256 i zrobić obok lustrzane odbicie i przeliczać :D Można tak: [syntax=basic4gl]$regfile = "m8adef.dat"...
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"...
Witam. Jeśli kogoś jeszcze interesuje ten temat, to mam już odpowiedź :). Zadałem to pytanie również na forum mcselectronic, ale też nie otrzymałem wytłumaczenia problemu. Coś mi jednak błysnęło w głowie i dopisałem na początku: $hwstack = 40 'zamiast domyślnego 32 i jest już ok. Pozdrowienia - teedd
Tu masz przykład który możesz odpalić w symulatorze Bascom z innymi liczbami. Kod dwukrotnie wywołuje funkcję Podziel_liczbe() tyle że raz liczba ma 321 a za drugim razem tylko 1. Kod ma włączone wygaszanie zer wiodących więc przy jeden napisze tylko 1 z prawej strony a nie 001. https://obrazki.elektroda.pl/6479764500_...
Może masz inne delkaracje HWStack, SWStack i Framezise w tych dwóch kompilatorach. Dodaj je do programu głównego najlepiej, wtedy zmiana kompilatora nie wpłynie na te parametry.
Kurde, masz zle skonfigurowany wyświetlacz !!! To samo co w poprzednim moim poście zrób z tym przykładem, następnie zdjęcie i wiadomo co dalej. [syntax=vbnet]$regfile = "m644pdef.dat" $crystal = 16000000 $framesize = 80 $hwstack = 50 $swstack = 50 Config Graphlcd = 128 * 64 , Dataport = Porta , Controlport = Portb , Ce = 2 , Cd = 5 , Wr = 3 , Rd = 4...
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 = 120 $swstack = 48 $framesize = 96 Na pint int0 podawany jest sygnał co 1s z pcf'a i w tym przerwaniu mam licznik i obsługę DS'a
Hehe zdaje się że problem rozwiązany ;) dopisałem: $hwstack = 128 $swstack = 128 $framesize = 128 Dzięki Fredy za pomoc, leci "pomógł" Temat do zamknięcia
Możesz sprawdzić czy tak zadziała, ale nie testowałem i nie piłem dziś jeszcze kawy wiec błąd mógł się wkraść. Zwróć uwagę, że przesunąłem Outled z PB2 na PB1 i PB0 bo one nie mają ADC a PB2 ma. By nie powtarzać kodu czyli żeby się też niepotrzebnie nie zwiększał przeniosłem procedurę odczytu do Sub w którym tylko wskazuję którego wejścia użyć no i...
dodałem cos nieznacznie 'settings from KS 108.BAS sample program $hwstack = 32 $swstack = 10 $framesize = 40 w załączeniu wynik kompilacji i zwracane u mnie błędy /jarek
Nie wiem jak to powinno być ustawione, ale te wartości jak dobrze pamiętam mi pomogły, gdyż też taki sam problem miałem: $hwstack = 128 $swstack = 128 wystarczy je dopisać na samym początku programu. Daj znać czy Ci to pomogło
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....
[syntax=basic4gl] $regfile = "m644pdef.dat" $crystal = 16000000 $baud = 9600 $hwstack = 64 $swstack = 64 $framesize = 64 'konfiguracja pinow wyswietlacza LCD; inicjalizacja wyswietlacza Config Lcd = 20 * 4 Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 Cursor Off Noblink Cls Dim Wart_adc...
Musisz w kodzie dodać takie zaklęcie :D $hwstack = 8 $swstack = 8 $framesize = 8 PS Ten uC ma, 64 bajty SRAM.
Można dopisać takie funkcje żeby niepotrzebnie nie ustawiał wartości portów jeśli te się nie zmieniły, ale to chyba gra nie warta świeczki :D Pominąłem PORTD bo widzę tam jakąś transmisje RS w configu. [syntax=vbnet]$regfile = "m128def.dat" $hwstack = 80 $swstack = 80 $framesize = 160 $crystal = 8000000 $baud = 19200 Config Porta = Output Config Portb...
Proszę, może to Cię zachęci do przeczytania reszty we własnym zakresie. Program "miga" nośną 38kHz co 1ms ;) http://obrazki.elektroda.pl/5631733100_1... [syntax=vbnet] $regfile = "m8def.dat" $crystal = 8000000 $hwstack = 64 $swstack = 32 $framesize = 32 Config Timer2 = Timer , Prescale = 1 , Compare = Toggle , Clear Timer = 1 Compare2...
Posiadam zainstalowany Bascom-AVR 2.0.7.5 [syntax=vbnet]$regfile = "attiny2313.dat" $crystal = 4000000 $hwstack = 40 $swstack = 16 $framesize = 32 '$sim[/syntax] Czy te dyrektywy są niezbędne do poprawnego działania, czy zależy to od wersii procesora lub wersii kompilatora. W książce nie ma ani słowa na ich temat, ani nie są wykorzystywane. (Chyba,...
Ściągnij sobie z tej strony program kalkulator avr http://www.elportal.pl/index.php?module=... [syntax=basic4gl] $crystal = 1000000 $hwstack = 80 Config Timer1 = Timer , Prescale = 64 Dim Sek As Byte 's Enable Timer1 Enable Ovf1 On Ovf1 Czas Stop Timer1 Enable Interrupts Sek = 0 Do If pinc.0 = 0 then Load Timer1 , 49911...
Diody migają po dwa razy, kolejne dwa razy zawsze po naciśnięciu przycisku, tak w kółko. Jak nie naciskam to nic się nie dzieje. Zdaje się że taki zamiar był tego programu... Niemniej jednak spróbuj ten code: [syntax=basic4gl][/syntax ... $regfile = "attiny13.dat" $crystal = 9600000 Config Portb = &B011000 Portb = &B000010 $hwstack...
Chciałbym jednak użyć CTC, ale kompletnie nie wiem jak się za to zabrać w Bascomie. Nie znalazłem na forum żadnych przykładów. Jak by ktoś poczęstował przykładem kodu dla z CTC w Bascom to byłbym niezmiernie wdzięczny :) Jakieś kilka dni temu, nie dłużej jednak niż tydzień, ‘gaskoin’ podal dokładną procedurę konfiguracji CTC. Jeżeli przeoczyłeś...
Tłumaczenie pierwszego kodu. W drugim to wiadomo, że brak biblioteki ;) Mogłem się gdzieś machnąć bo pisałem w przerwie pomiędzy innymi zadaniami. Dodałem tam sobie funkcję b w funkcjach mogę deklarować Local`s które nie są później potrzebne w Global`s. [syntax=vbnet]$regfile = "m2560def.dat" '8K SRAM | 4K EEPROM $crystal = 16000000 $hwstack = 256 $swstack...
bascom atmega32 hwstack hwstack swstack framesize hwstack swstack framesize attiny13
hormann instrukcja supramatic wtórnik katodowy ecc83 wentylator klimatyzatora
lodówka whirlpool zelmer odkurzacz aquawelt
Toshiba 40L3433DGB Firmware Download Guide Wymiana bezpiecznika w prostowniku Powermat PM-CD-50RWL