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ż ;)
Witam.Czy w pakiecie Bascom AVR zaimplementowane są procedury umozliwiające korzystnie z funkcji trygonometrycznych (funkcja sinus)???
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.
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...
...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...
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.
Toż w Bascomie masz gotowe procedury SendRc5 i GetRc5 więc jak najbardziej może on się do tego celu nadawać. A odnośnie funkcji odbiornika to poczytaj dokładnie jego notę PDF zapewne wtedy ci się wszystko wyjaśni, bo ja go nie znam akurat
...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...
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...
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ć.
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...
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.
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...
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.
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...
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
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...
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.
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...
Najprościej napisać sobie procedurę lub funkcję i przekazywać parametry do funkcji. Zajmie wtedy najmniej kodu.
kolega napisał, że już kończ mu się miejsce przy 3 parametrach, a chce ich mieć 12razy więcej ... nie znam Bascoma, ale skoro kolega wyżej pisze w Bascomie i twierdzi że kończy mu się miejsce więc pewnie tak jest, no chyba że Ty piszesz w innym Bascomie gdzie są inne funkcje vel procedury. rozumiem że można wkleić wstawki asemblerowe do bascoma, nawet...
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?
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...
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ś...
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...
procedura main w C - to taka jakby główna pętla programu - z tym, że normalnie musi być w niej return 0; w warunkach o jakich pisałem wcześniej. Ta konstrukcja pełni wtedy hmmm podobną rolę jak byś w bascomie napisał główną pętlę: ' inicjalizacja portów ' inicjalizacja rejestrów ' odpalenie przerwań itp do loop Procedura main - nigdy nie jest powtarzana...
Widzę że nikt się nie pali do pomocy, to może ja coś pomogę. Mam dość szybki kod do SD. Jeżeli SD też może być to pomogę. Mogę też rzucić procedurami zapisu i odczytu bloków danych. One w SD i MMC są identyczne (chyba). To jest taka TurboOptymalizacja wysyłania/odbierania po SPI. Odczyt chyba jest blok 512B/1ms.
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ść...
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...
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...
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?
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...
Ja proponuje użyć funkcji SZUKAJ. Na temat DS1821 było już sporo DS1822 obsługuje się praktycznie identycznie jak DS1821. Pozdrawiam
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...
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...
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...
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 :)
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...
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...
(...) 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ć...
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.
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?
Całą procedurę Wyswietl_temp: możesz uprościć wpisując binarnie odpowiednie wartości na porty.
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...
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
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...
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...
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.
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....
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...
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ż...
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...
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
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...
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ę...
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....
opóźnienia ns nie mają sensu ? :) wywołanie procedury, lub wstawienie if'a moze zając więcej czasu ;)
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"...
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...
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 .
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(),...
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...
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 ;(.
... 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...
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...
ok, troche sie z tym pobawilem ale dalej nie moge dojsc dlaczego sie wywala mi przerwanie... Co znaczy "wywala" :?: mam prosbe czy moglby mi ktos podeslac jak jest zrobiona obsluga procedury getrc5 w bascomie wrzucone do przerwania? Czy chodzi Ci o to , jak użyć funkcji GetRc5 w procedurze przerwania INT0 , czy jak napisać procedurę getrc5 , wykorzystując...
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.
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.
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...
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...
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...
Musisz się przyzwyczaić. Nie czytałem całego wątku, ale puszczenie 12 termometrów + wyświetlacza (o ile takowy jest) i nie zmieszczenie tego w 64kb naprawdę źle świadczy o napisanym programie. Taki program można zmieścić w 4kb albo nawet i mniej. Jeżeli termometry są wpięte szeregowo, to nie wiem naprawdę w czym tkwi problem, jeżeli są na różnych portach...
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...
Jeśli chodzi o łączenie się z wyświetlaczem, to można to potraktoweać jako I2C ?? W bascomie są chyba gotowe procedury do tego. Trzeba by było tylko osobno tą trzecią linię obslużyć. Jeśli znacie jakieś lepsze sposoby to pomóżcie, bo Assemblera dopiero zaczynam się uczyć, a w bascomie jest wiele gotowych funkcji do łączenia. PS: będę korzystał z AT90s2313
O ile znam Bascoma to poszczególne instrukcje napisane są w asm i stosuje się je wprost. Co do czynności które wykonują to łatwiej je ustalić badając funkcję napisaną w "C". Dodatkowo znalazłem taką oto stronę - http://www.cyna.barlinek.biz/index.php?s... W razie potrzeby mam funkcję w "C" do dekodowania RC5. Nie stosowałem jej jeszcze więc...
, 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...
Jakaś podpowiedz jak się dobrać do tego timera2 żeby dokonać tej kalibracji ? :) Jakiej kalibracji szukasz, Czy masz na myśli te 3 sec na dobę? Ponieważ uzywasz wbudowanej w Bascom funkcji konfiguracji czasu, gdzie jej procedura jest maxymalnie upropszczona zatem nie ma możliowości bezpośredniej kalibracji częstotliwości podstawowej dla timera2 z wewnątrz...
Tak mam pewne doświadczenie ale z tym ciężko.. ;/ Jeżeli chodzi o serwo to posiadam je, na tej stronce jest opisane jak zrobić z niego zwykłą przekładnie do napędu kół - o ile dobrze czytam. A mi chodzi o to żeby zachować elektronikę i sterować tylko impulsami. Można by to było zrobić bardziej łopatologicznie ale chciałbym uzyskać to w wyżej opisany...
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,...
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...
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ć...
Program próbuje zoptymalizować na maxa, potem uzyskuje trochę miejsca, dodaje nowe funkcje, znów optymalizuje i tak dalej. Kiedy uznam że nie wiele już poradzę (przetestuje różne drogi rozwiązania danych problemów, rozbije niektóre procedury na części pierwsze itd. kończę). A czy wiesz, że zastępując funkcją select case każde if-then oszczędzasz 2B?...
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)....
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...
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...
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....
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 ?
Witam :) Tak na wstępie brakuje mi działu dla piszących w C i ASM (będzie łatwiej coś znaleźć np szukam 2 DS18B20 i 99.9% wyników to bascom). Potrzebuję odczytać dane z co najmniej 2szt. DS18B20, problem polega na tym że jak adaptuje kod do odczytu 1 DS (z jednego portu) na odczyt 2 DS (z dwóch portów) to zamotałem się w funkcje zmieniające nr portu...
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......
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....
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ą...
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ę...
Bo nie przekazuj w Bascomie stringów jako stałych "byval" to marnotrastwo pamięci , stosu itp. Najlepiej w ogóle jak doszedłem z doświadczenia jak najmniej parametrów przekazywać jako "byval" lepiej jak już to poprzez referencje "byref" - a najmniej pamięci ci zje jak będziesz posługiwał się zmiennymi globalnymi. Tego zjawiska doświadczych, gdy program...
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...
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
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,...
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...
Najważniejsze to chociaż troszkę samemu najpierw pokombinować i ew później dopytać co i jak ;) ale po co ten Inkey? toż jak już zajdzie zdarzenie Bytematch - to znaczy, że w twoim buforze jest już co najmniej jedeń łańcuch tekstowy, którzy przyleciał z Rs232 i zakończony znakiem ENTER (13) .... w związku z tym wystarczy dać polecenie Input linia i już...
Gdybyś zajrzał i przestudiował kod w C, do którego link (na elektrodzie) podałem w poście #4 nie zadawał byś takich (bez obrazy) głupich pytań. Masz wprost zdefiniowane funkcje do zapisu i odczytu danych i komend, procedurę inicjującą wyświetlacz i przykładowe funkcje graficzne. Gdy będziesz się upierał "nie umiem w C - bo piszę tylko w Arduino" (niektórzy...
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...
bascom procedury bascom funkcje procedury graficzne bascom
diody wzbudzenia volvo silnika podłączyć miernik samochodzie
fabia schematy osadzania puszek elektrycznych
Kärcher HD 6/15 C – ciśnienie 200 bar podczas pracy, diagnostyka zaworu przelewowego i dyszy Renault 1.5 dCi K9K702 – zakres ciśnienia oleju, wartości serwisowe, pomiar manometrem