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
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......
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...
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...
Pytanie laika ;] . Chciałbym zrobić procedurę , która mógłbym przywołać w każdym miejscu programu np wpisuję odpal 1 a wykonuje się portb.1 = 1 portb.2 = 1 Mam nadzieję , że dobrze wyjaśniłem o co chodzi. Pamiętam , że używalem czegoś takiego w innych języka programowania , ale procedur do bascoma nie mogłem nigdzie znaleźć.
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?
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.
bascom procedury bascom funkcje procedury graficzne bascom
kalkulator poboru stare wtyczka audio równoległe podłączenie głośników
Sterowanie alternatorem Valeo TG15C135 - PWM i ECU Fujitsu Lifebook E448 ME14A – schemat płyty głównej, dostępność dokumentacji serwisowej