http://obrazki.elektroda.net/61_12840708... Przedstawiam mój sterownik awaryjnego zasilania mieszkania, pieca CO i pompy od solarów. Urządzenie w takiej, a nie innej formie powstało w sumie przez przypadek. Początkowo miało to być tylko podtrzymanie pompy solarów gdyby zabrakło napięcia w sieci, a temperatura na dworze była by zbyt wysoka...
To nie Bascom jest przyczyną tylko źle napisany program ;). 1. odczyt timera1 16bit odbywa się po przez rejestr pomocniczy TEMP, ten rejestr jest też używany przez inne procedury i funkcje i jeśli jest użyty to właśnie niszczona jest wartość High timer1 bo ona tam jest wpisana gdy używasz komendy. wpisując tak timer1 do tablicy możesz gubić High timer1....
Witam.Czy w pakiecie Bascom AVR zaimplementowane są procedury umozliwiające korzystnie z funkcji trygonometrycznych (funkcja sinus)???
Do BASCOMa jest napisany HELP - nawet po polsku go napisałem. Czy nie potrafisz znaleźć sobie informacji jak działają procedury SUB i funkcje FUNCTION?
Dziękuję za przykład. Do tej pory bawiłem się trochę Bascomem 8051 i nie wiedziałem, że Bascom AVR i Atmega mają takie przydatne funkcje i procedury do ich obsługi. Zdecydowanie zaczynam zabawę z AVR-ami. Pozdrawiam Bogumił Kazimierski. :D
BARTek wrócił z wakacji to Wam wyjaśni :D Temat jest ciekawy tylko pod jednym względem. Kiedy w Bascom dołączamy jakąś bibliotekę poprzez $lib to jest ona przeszukiwana pod kątem potrzebnych w programie procedur. Przeszukiwanie jest prowadzone po kolei tak jak dołączamy bliblioteki a też pod kątem tego które są potrzebne w programie. Na samym końcu...
AT Tiny nie ma 16-bitowego timera, tylko dwa 8-bitowe. Akurat Timer1 spełnia te same funkcje w obydwu mikrokontrolerach, różnią się tylko pojemnością i trochę większym rozbudowaniem (AT Tiny, ma np. 3 komparatowy cyfrowe, próbowałem też na komparatorze B z użyciem pinu OC1B ale to samo...) Dokumentację przeglądam już kilka dni i na nic nowego nie wpadłem......
Drogi są jak zwykle dwie :) Jeśli program ma zostać w asmie to kompilacja w asmie i sprawa załatwiona. Druga droga - jeśli chcesz coś tym programie zmienić to lepiej przepisać go na Bascoma. Zakładam że twoja znajomość asma, jest średnia. Spróbuj wyłuskać poszczególne procedury i zbudować grafy przepływów, a potem przejść na funkcje Bascoma. Może program...
2. Po wyglądzie danych w Ale ja wysyłam przy pomocy ptintbin jakbym wysyłał przy pomocy print dane w terminalu za każdym razem pojawiały by mi się w nowym wierszu gdyż bascom po komendzie print automatycznie dodaje znaczniki końca. 4. Podpunkt w pełni rozumiem i właśnie tak robię. Mam problem ze zrozumieniem pozostałych podpunktów. Co do funkcji nie...
Odwolanie do tej procedury wystepuje w prau miejscach i wydaje mi sie ze jest niezbedne. Dokladnie sa tam dwie takie funkcje , jedna wlasnie mull_add ,a druga do dzielenia pzrez 256. Chociaz moze masz racje , bo znalazlem inna wersje Twojego programu gdzie tych funkcji nie ma. Czy przetworniki AD odczytuja napiecie ze znakiem czy tylko dodatnie wartosci?...
Witam! Od kilku dni nie mogę poradzić sobie z takim dziwnym problemem. Zbudowałem system z ATmega8 z podpiętym do niego (poprzez TWI) PCF8583 (generuje przerwanie na INT0 co 1s), do systemu dołączony jest wyświetlacz LCD 2x16 oraz poprzez 1-Wire (portd.0) czujnik DS18B20. System działa poprawnie, nie ma wad sprzętowych, wyświetlacz działa, RTS działa,...
Ja też nic o zmiennej Err nie widzę. PS. Ale ogólnie to funkcja może zwrócić dwa parametry (albo i więcej). Procedura też ;)
...właśnie znalazłem chwilkę czasu i ze zdumieniem zobaczyłem, że te biblioteki to nie jakieś pliki binarne ;) tylko tak jak podałeś w przykładzie z tym LCD. hmmmm tylko czy jest gdzieś jakiś opis jak się do tego tak bardziej szczegółowo zabrać? Jakoś nie spotkałem materiałów , o "nazewnictwie" wbudowanych w Bascom'a funkcji/procedur zmiennych czy...
...Jakie jest zatem rozwiązanie tego problemu (jeśli jest)? Bascomowy UART programowy działa jedynie wtedy , kiedy wywołamy funkcję z nim współpracującą. W pozostałych przypadkach ( kiedy działają funkcje/procedury nie związane z programowym UART-em ) , nadchodzące dane są "niewidoczne" dla procka :( Np. jeśli masz w kodzie Wait 1 , a w czasie działania...
No nic dziwnego, w ustaw_czas robisz call do wys_czas który wbrew obiegowej opinii wyświetla temperaturę;] i... ustawia kursor kilka spacji za *C :) a potem sobie reta do ustaw_czas gdzie już jak widać LCD "Ustaw czas" :) Ot i tajemnica;] Pozdro ;] Dodano po 1 PS lowerline sux, ja bym używał locateów na twoim miejscu ;-) Poza tym funkcje są fajnejsze...
Panowie, to Bascom. Musiałbyś dorwać się do kodów biblioteki w ASM i zobaczyć jaka funkcja w ASM jest odpowiedzialna za reset komunikacji z LCD i jego inicjalizację i ja cyklicznie wywoływać. Bez tego w Bascom będzie ciężko, ewentualnie możesz napisać sam prostą procedurę inicjalizacyjną na podstawie DS sterownika wyświetlacza.
Z obu programów wyłuskać deklaracje zmiennych, deklaracje stałych i aliasów, polecenia CONFIG. Połączyć to razem i umieścić na początku programu. Sprawdzić czy nie ma danych w liniach DATA i przenieść je na koniec. Znaleźć wszystkie przerwania i sprawdzić czy nie są ze sobą sprzeczne oraz czy da się je ustawić by miały odpowiednie priorytety (czy jedno...
witam, czytałem i czytam, ale nie bardzo potrafie sobie to poukładać, umię zrobić funkcję własną (np matematyczną jak w przykładzie), ale nie potrafię napisać czegoś w stylu: Procedura (spełnie warunki) to Funkcja Pozdrawiam.
Witam, daj sobie spokój z takim dziwnym skracaniem kodu bo zwykle w takich przypadkach wyłożysz się na plecy i długo będziesz szukał błędu. Po pierwsze - tym GoSub-em chcesz skakać do procedury obsługi przerwania, która wprawdzie w Bascomie kończy się dla programisty podobnie jak np zakończenie podprogramu bo rozkazem "Return" - ale to nie to samo w...
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...
W procedurze/podprogramie obsługi przycisku wciśniętego zwiększaj zmienną o 1 a w programie głównym, czy też tam gdzie to jest potrzebne, wykonuj program w zależności od tej zmiennej, np. wykorzystując SELECT CASE.
Witam, Magistrala 1-wire posiada dość mocne restrykcje czasowe co do trwania poszczególnych stanów na DQ. Przerwanie Timera, a wiec wykonanie podprogramu związanego z obsługa przerwania, powodowało zmianę długości tych czasów, gdyż są one generowane softwaerowo przez Bascom. Czasem może się zdarzyć że kolizja i tak wystąpi pomimo że teraz wszystko jest...
Wgrałem flash z procedurą wgrywania do zegara godziny 00:00 i niestety po uruchomieniu pojawiła się godzina 80:80. Może robię to źle? Robię to za pomocą tych komend: Makedec to do odczytów z zegarka. Do zapisów jakaś odwrotna funkcja. Nie znam bascoma, więc mogę jedynie zgadywać: Makebcd? Co prawda dla 0:0 nie powinno być problemu, ale tak na przyszłość...
Czytałem wprawdzie jakiegoś i tak fajnego PDF'ka autorstwa kolegi Zbigniewa Gibka , i jest tam trochę na te tematy. Jednak tam opisane jest tworzenie własnych procedur które hmmm trzeba deklarować jeszcze samemu w programie głównym. To troszkę ciężko tak działać. A czy zastanawiałeś się w jaki sposób przekazać kompilatorowi czy ma na stos wrzucić jakieś...
A Twój program nie chce działać? Jaki jest problem. To co w programie masz nieprawidłowo to odczyt stanu przycisku. Procedura odczytu przycisku powinna przewidywać takie sytuacje jak drgania styków lub przypadkowe zakłócenia na linii przycisku. Jedną z możliwość odczytu przycisku jest: [syntax=basic4gl]If Wejscie = 0 Then Waitms 100 If Wejscie = 0 Then...
No tak. Bo ta procedura to wycinek większego programu. Poprawiłem kod. Teraz powinno sie skompilować. Dodano po 2 A, o to Ci chodziło. Tak - lepiej od razu odczytywać po 512B bo program i tak żeby odczytać 1bajt to musiał by odczytać 512B i potem wyciągnąć z tego tej jeden bajt.
mov DPTR, .Tablica_instrukcji mov A,{instrukcja} jmp (at)A+DPTR Pomijając fakt, że nie mam pewności czy ten kawałek kodu jest poprawny to mam problem ze zbudowaniem tablicy adresów. Pomysł jest dobry, ale wykonanie złe ;), albo zrobisz pomnożysz A przez 2 albo 3 i pod adresem tablica instrukcji zrobisz serie skoków (bliski ma 2 bajty, daleki...
Zobacz w pomocy polecenie GOSUB i CALL, bo pomieszałeś te polecenia. Dodano po 11 Do podprogramu możesz skoczyć poleceniem GOSUB i nie deklarujesz go. 'podprogram: Etykieta: 'etykiety kończymy dwukropkiem 'coś zrób Return Procedurę lub funkcję musisz zadeklarować i podać jakie parametry będą przekazywane. Jej treść musisz umieścić używając SUB...
Jreżeli to mają być tylko komunikaty o jakich piszesz to najprościej wykorzystać transmisję RC5 Procek nadawczy robisz tabele z komunikatami i zbierasz dane Wartości przypisujesz do funkcji command i wysyłasz w odboirniku też masz tabele i odczytujesz kod z tablicy zostaje wyświetlić to na lcd Transmisja na taką odległość powinna zadziałać Kilka diod...
Jak chcesz przekazać temu fragmentowi jakieś parametry, to prościej jest napisać procedurę ( Declare Sub , i ciało Sub...End Sub ). Jak taka procedura ma dodatkowo coś zwrócić to napisz funkcję ( Declare Function , i ciała Function...End Function ) Jak chcesz tylko tam wskoczyć i wrócić by wykonać powtarzające się operacje to etykieta: i GoSub . Jak...
Generalnie to twój problem wynika w dużej mierze z tego, że wywołujesz funkcję z wewnątrz przerwania. To powoduje szczególnie w Bascomie - niestety KOSMICZNE obciążenie w postaci po pierwsze ogromnego i niepotrzebnego zużycia stosu przez co musisz właśnie zacząć się bawić z tymi wszystkimi HWSTACKAMI itp .... zobaczysz jaka bonanza z tym będzie przy...
Tak jak pisze (at)atom1477 pokaż layout płytki, dla kwarcu 16 MHz kondensatory powinny być rzędu 8-12 pF, ale dokładnie możesz je policzyć jeśli poznasz pojemności kwarcu z noty. Jest jeszcze jeden problem - BASCOM. Zobasz na wygenerowany asembler, jak wygląda procedura przełączania zegara. Być może tu jest problem. Próbowałeś odpalić program w debuggerze...
Co do wyłączenie światła po 30 sek. Dodaj dodatkową zmienną bit która będzie ustawiana np: na 1 po wyłączenia światła przez timer po 30 sekundach a dzięki niej nie będzie ponownie włączane światło przez wciąż otwarte drzwi (stan niski na wejściu uC). Dopiero zamkniecie drzwi ( stan wysoki na wejściu uC) spowoduje zmianę tej zmiennej na 0 dim 30SEK as...
przejżałem helpa i to dokładnie...posiadam wersję DEMO bascoma 2.0.11 i jest tam wspomniane jedynie o DECLARE SUB, nie ma ani słowa na temat deklaracji funkcji dlatego o to pytałem, dziękuję za odpowiedź pozdrawiam JarGol Fakt. Bascom 8051 -w przeciwieństwie do BascomAVR- nie obsługuje funkcji , obsługuje wyłącznie procedury :( Musisz rozwiązać problem...
podlaczylem tak jak napisales i nadal zapala sie tylko górny rząd kwadracików i nic wiecej A czy skompilowałeś ten programik wprowadzając zmiany w linii konfigurującej typ wyświetlacza, twój 16x2 a u autora projektu 16x1? Bascom ma dość uniwersalne procedury i funkcje, ale tego może akurat nie przeskoczyć.
Cytat: "Jeżeli Twój Bascom "obsługuje" 1wirecount,1wsearchfirst,1wsearchnext to sprawa jest prosta , w przeciwnym razie ... jest więcej roboty(trzeba napisać obsługę Search Rom) , ale nie jest beznadziejnie" Mam Bascom 8051 v.2.0.11.0 Obsługuje te funkcje.
(...) osobnym PinX i oczekuj na stan niski ADCx2 aż do spełnienia tego warunku. Jeśli na ADCx2 napięcia równe 0 mrugnij diodą Led1 jeden raz przez 300ms, wyłącz Przekaźnik1 na PinX Po czym wróć do góry procedury, do oczekiwania na napięcie na ADCx1 To właściwie tyle. Dziękuję za uwagę i wszelaką pomoc. Witam serdecznie na forum! Chętnie pomogę Ci przygotować...
Najprościej napisać sobie procedurę lub funkcję i przekazywać parametry do funkcji. Zajmie wtedy najmniej kodu.
po pierwsze - z wideo to chyba tylko pilot bedzie potrzebny. Zrob tak - kup sobie scalony odbiornik podczerwieni TFMS na 36kHz pod wyjscie podlacz jakis uklad RC zeby usrednic impulsy i to pod przerzutnik typu D. do wyjscia przerzutnika podlacz tranzystor i przekaznik, lub triak sterowany optotriakiem MOC 3041. Inne rozwiazanie to zaprogramowac procesor...
A niby czemu ma program skakać do procedury obsługi przerwania od przepełnienia? Przecież on się nie przepełnia, tylko po doliczeniu do wartości OCR lub ICR , natychmiast się zeruję ( przy okazji może ,ale nie musi zmieniać stan pinu OC). Musisz uruchomić przerwanie od tego właśnie porównania - czyli od Compare, tak jak wspomniał kolega wyżej. Tylko...
Jakiś dziwny ten kod, w pętli głównej nie masz odwołania do procedury "Pomiar", brak jest końca procedury "End Sub" dla Sub Pomiar... czy w ogóle ten kod Ci się kompiluje?
Programuję urządzenia już jakiś czas i nauczyłem się, że nie zawsze wszystko idzie tak jak byś chciał/zakładał. Funkcje obsługujące dany moduł muszą uwzględnić niepowodzenie, ewentualnie zlogować kod problemu i jeśli tak ustalono próbować coś zrobić ponownie z góry przewidzianą ilość razy :D Chodzi o to żeby pisać gotowe procedury obsługi urządzeń/modułów...
Sprytnie poradziles sobie z laczeniem 2 bajtow w calosc ... Jeśli masz na myśli tę ... Function Ile_wpisow() As Byte Local Ids As Integer Local High_adr As Byte , Low_adr As Byte Readeeprom High_adr , 1 Readeeprom Low_adr , 2 If High_adr > 0 Then Ids = High_adr + Low_adr Else Ids = Low_adr End If Ile_wpisow = Ids End Function ... funkcję...
Już pisałem że będzie ciężko. Piszesz że jest tam atmega, jaka? Dodaj schemat a może ktoś Ci w bascomie coś skrobnie. Bez informacji co i jak jest podłączone do procesora nikt Ci nawet na napisze procedury inicjacji procesora.
Ja proponuje użyć funkcji SZUKAJ. Na temat DS1821 było już sporo DS1822 obsługuje się praktycznie identycznie jak DS1821. Pozdrawiam
W kwestii BASCOM-a to Ci nie pomogę bo piszę tylko w asm i czasmi w C dla procków AVR, 51, DSP z TI. Jednak nie trzymaj się kurczowo zasady, że init LCD ma być jedną z pierwszych procedur po restarcie procka. Nawet lepiej by było gdybyś na poczatku zainicjował inne urządzenia a LCD na końcu. Ten typ ma jeszcze długi "czas podnoszenia się" po podaniu...
Ja to robię tak że pisze sobie procedurę która zwraca (zapisuje do innej zmiennej) wynik dzielenia pierwszego przez 10 (czyli funkcja mod). Następnie zmienna wejściowa jest dzielona przez 10 i tak zostawiana. Programik na początku podstawia "swoją" zmienną do procedury dzielenia. A następnie wywołuję procedurę jeden raz. Wynik jest teraz przepisywany...
Nie znam mozliwości w tym zakresie Bascoma. Jedno jednak jest pewne. Każdy program tego typu może działać sekwencyjnie. Oznacza to, że wywoływanie kolejnych procedur w procedurze działać musi. Jest jednak tzw granica zagnieżdzeń. Może ona wynika z możliwości samego kompilatora (programu tłumaczącego - w tym wypadku Twoim nie sądzę aby tak było), albo...
wygląda to tak jakby nadpisywał dane na wierzchu stosu i po zakończeniu procedury wykonywał skok w niewłaściwe miejsce. Jak to można sprawdzić w praktyce?
To dorze ze znalazłeś błąd, Oczywiście cała kwestia czasu trwania jednego bitu dotyczy też nadajnika, tam też są krytyczne czasy procedur i funkcji przy dużych prędkościach bitrate (52us dla 19200bd). Pamietaj że masz źle ustawione pasmo obiornika. Powodzenia w dalszym programowaniu RFM12.
Skoro coś się powtarza to zapisz to jako procedurę a potem ją tylko wywołuj. Poczytaj DECLARE SUB i DECLARE FUNCTION Funkcja przy okazji jeszcze zwraca wynik.
Kolego, układy AVR mają nogę podłączoną do kilku rejestów. Pisząc słowo PIN konfigurujemy rejestry wejściowe, a słowo PORT rejestry wyjściowe. Chodzi tu o składnie języka Bascom. Ta informacja jest oczywiście niedokładna , a sama interpretacja błędna (!). Pisząc 'config ...' w efekcie edytujesz rejestr DDRx odpowiedniego portu x. Nie jest ważne czy...
faktycznie bascom zabiera trocze pamięci ale to zależy od użytych funkcji i procedur jak troche się pobawisz to zobaczysz że morzna pisać oszczędnie w bascomie ja już bascoma opanowałem dość dobrze i uważam że jest dobry do testów i małych projektów a dla dużych i szybkich programów urzywam asm morzna stosować wstawki asm w bascomie to daje dobre efekty...
Całą procedurę Wyswietl_temp: możesz uprościć wpisując binarnie odpowiednie wartości na porty.
w sytuacji kiedy skaczemy do podprogramu1, a w nim do podprogramu2, a potem skaczemy do miejsca gdzie nastąpił pierwszy skok nie dając tak naprawdę szansy na zakończenie podprogramu przez Return. Takie sytuacje zawszę rozważam :) Faktycznie używałem goto. Już teraz robię wszystko na procedurach i funkcjach także nie ma dziwnych problemów :)
He, he z przesunięciem to sobie poradziłem (zauważyłem to w manualu :wink: ), funkcją rotate, left,1. Ale dzięki za namiary na podzielenie dam cynk jak mi idzie. Jakie to kurna proste! Wykorzystałem funkcje Low i High - dzięki Szymtro. Pozdr. Piotrek
Teraz program wygląda znacznie lepiej. Brakuje jeszcze tylko return po drzwi: i dalej nie ma podciągnięcia wejść do zasilania - po prostu zamiast portb=0 powinno być portb=255 (oczywiście dziesiętnie). Set i Reset nie są wymagane to tylko kwestia wyboru metody konfiguracji portu. Wszystko jest ładnie opisane pod linkiem, który podałem wcześniej. Można...
Najprościej to napisać dwie funkcję/procedury, jedna do jednego programu, a druga do drugiego. Oraz jaką prosta funkcja budująca menu, oraz uruchamiającą odpowiednią procedurę zależnie od wyboru użytkownika. Ale może się okazać, że braknie pamięci w mikrokontrolerze, a pisząc w BASCOM o to nie trudno. Innym rozwiązaniem była by karta pamięci i bootloader....
Pytana do układu: 1. P1 i P2 podciągnięte do plusa za pomocą rezystorów? Bo w programie nie masz "włączonego" wewnętrznego podciągnięcia? Jeden z twoich problemów to: Po naciśnięciu guzika zmniejszającego wartość spada ale dzieje się to bardzo powoli tak jak by układ się przycinał na czas odczytu temp. nie dziw się ponieważ w funkcji Odczyt_t podczas...
Również przyłączam sie do prośby o procdury. Nie moge uruchomić tego czujnika :/ gdy wywołuję funkcję 1wirecount() zwraca ona 0 :( Nie wiem już czy ten czujnik jest uszkodzony czy ja coś xle robie
Nie znam Bascoma, ale rzuciło mi się w oczy słowo kluczowe Return . Służy zapewne do powrotu z funkcji/procedury, ale w Twoim programie takowej konstrukcji nie widzę. Usuń więc Return .
do celów testowych wyłącz sobie narazie tego Powerdowna, a jeśli chodzi o MegaHertze - to nie ma znaczenia czy 8Mhz czy 4MHz w tym przypadku dla RC5. Ważne jest tylko to żeby zadeklarować w programie taką częstotliwość taktowania jaką masz ustawioną w fusebitach. Bascom na podstawie tego sam sobie oblicza wartości dla procedur opóźnień czasowych do...
Może to coś pomoże: https://wiki.mcselec.com/bavr/BASCOM-AVR... Poza tym składnia jest na tyle podobna do VB, że daje się zauważyć brak "Return" po skoku "GoSub", jak również brak zakończenia procedury funkcji "End Function". Dodatkowo "U2", deklarowane w funkcji, nigdzie więcej nie występuje, natomiast jest U3min i U3max, zaś pętla "Do ... Loop"...
Czy zle kombinuje? Nie całkiem źle, lecz nie dokładnie... W zasadzie budujesz "Continuity Tester". 'Continuity'- znaczy mniej więcej jak 'ciągłosc' - co jest wynikiem zwarcia dwóch odcinków przewodu. Jeżeli masz do wytestowania na przykład wiązkę 8 przewodów, to podłączając je do oddzielnych wejśc dowolnego portu , masz mozliwośc scanowania tego układu...
Zawsze kiedy pojawia się sterownik akwariowy to... Zawsze zawiera ten sam spsób na ugotowanie akwarium, tzn [syntax=basic4gl]Temperatura_t(1) = 1wread(2) 'jesli blad lub ujemna temperatura... If Err = 1 Or Temperatura_t(2) >= 128 Then Temperatura = 99 Else[/syntax] Czyli uszkodzenie czujnika, zalanie go (nietrudno o to w akwarium) = dostaniemy od razu...
Aj zamotałem się z tym plikiem .inc Dzięki:) Zamieniłem plik i usunąłem komentarz z procedury Enc28j60 i nadal nie chce się strona wczytać. Pingi też nie wracają. Po powrocie do poprzedniej procedury Enc28j60_packetreceive i oczywiście poprawie zmiennych działa wszystko więc tu leży problem. W procedurze Enc28j60_poll brakuje wywołania funkcji Enc28j60_packetreceive(),...
... Jednak dla spokoju mojej duszy jeżeli stworze program w pętli którego będę wyświetlał zmienną na wyświetlaczu LCD to jest możliwe że za którymś razem przerwanie przerwie w „połowie” transmisję danych do wyświetlacza co spowoduje wyświetlenie krzaków na wyświetlaczu tak? Pozdrawiam Jeśli w przerwaniu nie używasz LCD , to NIE MA PRAWA...
OT - ktoś pamięta tablicę skoków kernela w C-64 ? Większość swoich programów staram się pisać jako procedury/funkcję, które ( jako małe klocki ) służą mi do składania większych projektów. Podobno niezbyt profesjonalnie, ale jeśli chodzi o późniejsze udoskonalenia- idealne.
Witam Już zaopiekowałem sie tematem jednak chyba przerwanie nie jest dobrym pomysłem. Może zacytuje treść help-a: "Gdy procesor jest w trakcie wykonywania procedury przerwania, następne przerwanie nie będzie przyjęte, gdyż procesor (nie kompilator!) zeruje flagę globalnego zezwolenia na przerwania." A ja chciałbym żeby niezależnie od tego jaka jest...
Mam nadzieję, że pociągnąłeś z elektrody to: http://elektroda.net/download/pafiledb.p... Teraz zajrzyj na stronę nr. 90 a następnie 84. Później w wyszukiwarce adobe reader'a lub innego programu, którego używasz to przeglądania plików pdf wpisz $lib lub $external powinieneś natknąć się na przykłady wykorzystania bibliotek tudzież...
Witam, Zacznij od sprawdzenia funkcji konwersji BCD() poprzez przypisanie na sztywno zmiennych h,m,s tuż przez procedurą wyświetlania - w czasach gdy pisałem w bascomie również miałem problemy z tą procedurą (BCD()) - jeśli okaże się, że nadal żadnej poprawy nie będzie to znaczy że bascom wyleciał w powietrze ;(.
Zawsze piszę programy tak aby zapełniały całą dostępną pamięć w procesorze (bo czemu mam nie korzystać z całej pamięci skoro za nią zapłaciłem). Dziwne podejście. A jak za jakiś czas poddasz kod optymalizacji, to będziesz wymyślał nowe funkcje by znów zapełnić pamięć? Tak tylko pytam, ogólnie fajna zabawka. Program próbuje zoptymalizować na maxa, potem...
napisałeś :... Mam płytkę 1769 LpcXpressoBoard... A autor pyta się o programowanie za pośrednictwem OS mobilnych. Chyba niezrozumiales intencji autora. Jeśli się w czytasz ze zrozumieniem, szuka gotowych procedur wskazuje na Basic i C i podobieństwa z AVR. Mintoris Basic jest idealny dla takich osób bo ma funkcję, procedury zgodne z Bascom i AVR. autor...
Podpowiedz: zmienna mozemy przekazac do procedury / funkcji dwojako: byval i byref. W pierwszym przypadku tworzona jest zmienna tymczasowa - kopia przekazanej zmiennej i jej wartosc jest STALA przez caly czas wykonywania procedury/funkcji (chyba ze ta swiadomie ja zmieni). W drugim natomiast do procedury/funkcji przekazywany jest ADRES zmiennej w pamieci,...
Witam i dziekuje za zainteresowanie się moim temetem. No więc plik bin po skombilowaniu zajmuje 3,4kb o ile dobrze rozumiem. a co do pelnem wejscji bascoma to prosze podac maila moge podeslac (niecale 4Mb) Tak przegladalem jeszcze kod zrodlowy tego projektu i mozna byloby jeszcze wywalic procedury zwiazane z funkcja MUTE moim zdaniem jest zbedna a napewno...
Z tym, że tablice musiałbym wcześniej wpisać w program, a mi chodzi o to, by "uczyć" tego robota danego zadania. Jeśli zmieniłbym odległośc punktu A od B i znowu postawił przeszkode, w którą by robot uderzył, to wtedy ponownie musiałby zapamiętać nową trase. Przy czym jeśli działałbym w obrębie pamięci RAM, kasowałbym ją po prostu resetem zasilania....
Dokładnie tak jak pisze kolega xury. Być może wywołujesz jakiś podprogram, który wywołuje inny, który znowu wywołuje ten pierwszy albo gdzieś jest wyskok z podprogramu przez jakieś Goto. Jeśli używasz funkcji lub procedury z przekazaniem parametrów i nie zmieniłeś wielkości stosu to na 99% będzie to wina jego zbyt małej wielkości.
Czyli pilot działa, OK. Dobra mamy błąd w programie. wywaliłem wszystko co zbędne, sprubuj teraz, z tym kodem. $regfile = "m8def.dat" $crystal = 8000000 'Instrukcje konfiguracji peryferiów oraz urządzeń zewnętrznych Config Int0 = Low Level Config Rc5 = Pind.2 Config Lcd = 16*2 Config Lcdpin = Pin , Db4 = Pinc.2 , Db5 = Pinc.3 , Db6 = Pinb.2...
Tak wiem że należy odpalić timer na początku i zatrzymać na końcu i odczytać jego wartość.. no nic. Dziękuję za wypowiedzi tak czy inaczej.. Odp. kol. Draco była troche sarkastyczna, bo na tak prostą procedurę nikt, kto ma choć troche rozeznania w tej dziedzinie chyba (!) nie szuka pomocy. Mopzesz to zrobić na kilka sposobów: 1. mierzyc czas metodą...
Problem dotyczy wszystkich języków programowania i wszystkich mikrokontrolerów. Chodzi o uszkadzanie się zawartości pamięci eeprom kiedy program idzie w krzaki. Zauwzyłem, żę kiedy traktuję atmegę zakłoceniami emc potrafi o ona zacząć wykonywać inny fragment kodu (bascom), jakby skoczyła pod jakiś przypadkowy adres. objawia sie to czasem podwójnym pisaniem...
, ale ja uważam, że BASCOM jest dla ludzi. Do C podchodziłem kilka razy ale nie mogłem sie przemóc. Ja się na nim (baskomie) przewiozłem jakiś czas temu jak jeszcze '51 były popularne, program chodził albo nie w zależności od np procedury obsługi wyświetlacza lcd gdzie była wywoływana, koszmar. Może teraz jest lepiej ale widać po twoim programie jak...
Też do takiego wniosku na początku doszedłem, tylko że jak bym chciał obsłużyć np. cztery wiersze wyświetlacza, a w każdym wierszu inny string miał by się poruszać to funkcja musiała by posiadać jednocześnie 4 i więcej parametrów "text"; "text_2"; "text_3";... itd, a do każdego textu musiała by być powtarzana procedura z osobnymi zmiennymi (I,Znak)....
Witam, próbowałem przeanalizować ten kodzik ale naprawdę , uwierz - jest to baardzo ciężkie. Robisz narazie wszystko niezgodnie z zasadami programowania. Rozumiem oczywiście, że dopiero się uczysz ale postaraj się przestrzegać kilku zasad o których za chwilę a będzie nie tylko tobie łatwiej analizować napisany kod ale co najważniejsze szukać błędów....
Witam, osobiście bym zrobił to w ten sposób: 1)Jak masz "normal" i procesor wykona wszystkie zawarte w nim funkcje(procedury), wtedy dajesz Do...Loop...End i tam umieszczasz funkcję np. z if`ów która po naciśnięciu danego przycisku przenosi cię do następnego podprogramu(Sub`y), i tak w kółko. a/b) Tutaj możesz zrobić to na zasadzie, że w/w pętli dać...
Witam. Napisałem program do migania diodami i mam trzy pytania: 1.Czy da się ustawić cały port w stan spoczynku (coś w stylu PORTD = 0)? 2.Czy po każdej komendzie IF trzeba pisać END IF, czy da się to jakoś ominąć? 3.Czy poniższy kod jest poprawny, czy będzie działał? 1. Tak, możesz tak pozostawic. Bascom akceptuje kilka form ustawienia poziomu pinów...
Wyczytałem także, że można zastosować funkcję while wend. Po przerwaniu wstawić warunek resetowania flagi. Następnie pod tym kodem umieszczać procedurę odczytu z DS'a. [syntax=vb]Set Flaga : While Flaga = 1 : Wend[/syntax] Procedura powinna wykonać się gdy przerwanie będzie zakończone. Co o tym sądzicie ?
Jeśli chodzi o wielkość kodu to z "c" może też być różnie... Wszystko zależy od kompilatora. Np. w Keil uVision, którego używam, wykorzystując zaimplementowane tam procedury otrzymujemy bardzo duże rozmiary kodu wynikowego. Przykładowo wysłanie napisu do wyświetlacza LCD przy pomocy funkcji "printf" to zwiększenie kodu o około 300b. To wcale nie tak...
co dziwnego w mym pisaniu ? Np.? Na nieużywanie funkcji. Bascom je oferuje a piszesz jak asm używając podprogramów. W asm nie ma innego wyjścia (chyba, ze zrobi sie makra), a Bascom są, więc czemu ich nie używać? [syntax=vbnet] Sub Ustaw 'wykonanie procedury ustawienia czasu Sekundy = Sekundy 'przepisanie wartości sekund Zapis_minut = Minuty 'przepisanie...
Sorry ale ja na miejscu procesora to bym zwariował jakbym zobaczył że mam takie polecenia do wykonania: Do Czas_cyklu = Czas_cyklu + 1 If Czas_cyklu = 120 Then Czas_cyklu = 1 End If Return Loop to są fragmenty końcówek kilku twoich pod-procedur do których skaczesz za pomocą Gosub. A wewnątrz nich mieszasz tak strasznie albo nawet doprowadzasz do sytuacji,...
zapomniałem ci napisać że ieżeli używasz procedury sub to lepiej przed uruchomieniem twojej funkcji odczytać stos i po skoku zapisać tę wartość przed dalszą częścią programu abyś mógł wrócić z niej do normalnej pracy programu ... call procedura 'skok programowy do podprogramu i po wykonaniu powrót ... ' bo jeżeli wykasujesz to nie wróci do tego miejsca
gts wielkie dzięki! Ale mam problem jeszcze z układem :/ Gdy przyłożyłem 3V to pokazało tak jak trzeba. Ale gdy nie przykładam nic świecą mi się ciągle 2 diody. A można powiedzieć że zapalają się i gasną z dużą częstotliwością... Ehh chyba moja płytka coś fiksuje tzn zimne luty. jak stoi w pionie jest ok a w poziomie mi się zaświeca dodatkowa dioda....
Jeden problem rozwiązany Jak zrobić zmienny waitms... Zerknąć do Help-a i tam przeczytać , że argumentem funkcji Waitms jest Byte , czyli maksymalna wartość to 255. Jeśli dokładność odmierzanego czasu może być PI * OKO , to skorzystać z dobrodziejstwa , jakim jest Subroutine(Arg) lub Gosub To Label .Jeśli chcemy osiągnąć w miarę dużą dokładność , to...
Witam. Poznaję właśnie j. BASCOM, i znalazłem bardzo ciekawą procedurę - CONFIG KEYBOARD. Jeśli dobrze wiem, to kod jest wysyłany w ASCII. I chodzi o to, że nie bardzo wiem, jak odczytywać wartość tego bitu (np do zmiennej pomocniczej). Czytałem już trochę, znalazłem nawet [url=http://avrhelp.mcselec.com/index.ht... Proszę...
Watchdog to taki licznik który się inkrementuje i jak dojdzie do końca licznika to generuje reset mikrokontrolera. W swoim kodzie musisz umieścić procedurę kasowania licznika w czasie krótszym niż czas potrzebny na przepełnienie licznika Watchdog. Jak główny program z jakiegoś powodu nie zdąży skasować licznika (np. program się zawiesi) to całość się...
Cały problem polega na tym że programy typu Bascom i C mają już napisane procedury których wadą jest zazwyczaj brak możliwości wyboru układów peryferyjnych, które wykorzystują . W przypadku Bascoma jest najgorsza sytuacja, Nie ma do niego kilku bibliotek RC5, tylko jedna. pozostaje więc napisanie wstawki z asemblera , lub kawałka kodu w bascomie rezygnując...
Podstawowa sprawa - w drugiej linijce kodu masz napisane, że $crystal = 8000000 podczas gdy na schemacie nie masz podłaczonego żadnego kwarca. Jeśli używasz wewnętrznego oscylatora (i oczywiście masz tak ustawione FuseBit'y), to ATmega pracuje na 1MHz i taką wartość powinieneś ustawić w programie, bo nic nie będzie działać, albo będzie, ale "dziwnie"...
Witam, potrzebuję procedurę/funkcję, która zamieniałaby sekundy na czas i datę. Nie za bardzo mam pomysł na napisanie takiej procedury. Chodzi o to, że zmiennej 32-bitowej o wartości 0 odpowiada: Sekunda = 0, Minuta = 0, Godzina = 0, Dzień = 1, Miesiąc =1, Rok = 2000, wartość 1: Sekunda = 1 ..., wartość 60: Sekunda = 0, Minuta = 1 ... itd. Oczywiście...
To zależy bascom 8051 zawsze da dłuższy kod niż asm a to dlatego ze w nim nie można wyłączyć procedur inicjalizacyjnych (tablica wektoró przerwań, itp). W bascom avr można wyłaczyć (noinit, nosp) ale częsc będzie zawsze dopisana przez kompilator bascoma. Jeżeli używasz bascom 8051 to pomyśl nad innymi funkcjami w programie, odpowiednim ich poukładaniu....
Nigdy tego nie robiłem z rozrzutności, ale teraz chcę zoptymalizować troche swój program. Deklaruje zmienne będące flagami determinującymi różne warunki w jakiejśc tam nieskończonej pętli programu. Flagi są ustawiane przez procedury, funkcje lub przerwania. Dim flaga1 as Byte Dim flaga2 as Byte ... Dim flaga8 as Byte Zajmuje mi to 8 bajtów. Czy zmiana...
Nie wiem czy dobrze zrozumialem, ale chodzi o to, ze w obsludze przerwania mam ustawiac jakas zmienna np. na 1, a w petli glownej wykonywac reszte programu? Nie sadze ze w pelni zrozumiales swoj problem; Zwroc uwage na procedury wykonywane chocby tylko w przerwaniu Timera1, ktore powtarza sie co 1 ms czyli masz tylko 125 cykli zegarowych pomiedzy kolejnymi...
bascom procedury bascom funkcje procedury graficzne bascom
pomiar małych oporności katalog częsty zamienny przebieg samochodu
active webcam obudowa 18tbx100
Modyfikacja pamięci w telewizorze Philips - porady i narzędzia Tylni prawy kierunkowskaz Citroen Jumpy nie działa - przyczyny i rozwiązania