Albo napisac uniwersalną która jednoczesnie zajmie najmniej miejsca. dim ala as byte dim do_podzielenia as word dim do_podzielenia_pomoc as word do_podzielenie=987 'pierwszy raz trzeba zaladowac gosub dzielenie 'a teraz tylko wywolujemy wyswietlacz(3)=ala 'zaczynamy od ostatniego gosub dzielenie wyswietlacz(2)=ala 'srodkowy gosub dzielenie...
Kłania się po prostu - najprostsza matematyka ;) masz np liczbę 123 i chcesz wyodrębnić poszczególne cyfry żeby je po kolei wrzucić na wyświetlacz LED 1. dzielisz liczbę 123 przez 100 - resztę z dzielenia odrzucasz i pozostanie ci cyfra odpowiedzialna za setki czyli 1 - prawda ? ;) 2. odejmujesz od liczby 123 liczbę 100 - bo wyżej już wykonywałeś dzielenie...
Jak wykonać dzielenie bez reszty w BASCOM-AVR? Użyj operatora `\` do dzielenia całkowitoliczbowego. Przykład kodu: `Wynik = A \ B`. Dowiedz się więcej o optymalizacji i unikaniu błędów.
A bo bascom to taki kaszaniasty trochę jest jeżeli chodzi o wydajność i dzielenie za pomocą '/' wykonuje jako zmiennoprzecinkowe, czyli obie liczby na zmiennoprzecinkowe zamienia, dzili i wynik zamienia na format docelowej wartośc (i tu chyba jest coś skopane). Natomiast dzielenie za pomocą '\' to dzielenie na liczbach całkowitych, o wiele szybsze.
Witam Bardzo dziękuję za pomoc oaz ten program. Jedyne czego nie rozumiem w programie Kolegi, to zasady działania polecenia Shift. Z tego co zrozumiałem, to chodzi o przesuwanie bitów zmiennej, czyli umożliwia to de facto dzielenie lub możenie liczby. A co w przypadku, gdy chcę pomnożyć moją liczbę np przez 0.74, w tym wypadku byłby to zapis: [syntax=vbnet]Liczba...
Mam problem, dla niektórych to może łatwizna ale potrzebuje zapisac liczby 6-7 cyfrowe do pamieci mikroprocesora. Zmienna jest typu long a po odczycie chciałbym żeby nadal nią była. Jest jakas funkcja która to robi? czy trzeba sie bawić w dzielenie przez 256 i sprawdzanie reszty?
niewiem dokładnie jak to jest z procesorami programowalnymi w tem sposub ( jeszcze) W zwykłym asemblu robił bym to na podstawie kilku operacji arytmetyczno/logicznych pierwszą liczbe (jedności i dziesiątek) otrzymasz poprzez uruchomienia polecenia funkcjonującego jako modulo z argumentem 100 ( reszta z dzielenia przez 100) Drugą liczbę możesz otrzymać...
Nie zmienia, bo masz błąd w innym miejscu. Dokładnie to miałem na myśli-że błąd jest gdzieś indziej. Zastanów się, co oznacza nazwa trybu CTC (?) – w ang. jest to ‘Clear Timer on Compare’ (pol. - wyzeruj zawartość licznika/timera, gdy jego zawartość jest równa wyznaczonej z góry i ustalonej, bądź to wyliczonej jakiejś wartości w zmiennej...
Przerwanie co 8ms (ze względu na to że stosuje bascom i liczby zmiennoprzecinkowe nie mogę zejść niżej) W przerwaniu: - sczytane wartości napięć i prądów i porównanie ich z wartościami zadanymi -jeśli prąd powyżej 1A niż zadany to wyjście napięciowe zmniejszone o połowę i wystawia zmienną kontrolną1 na 1 -Jeśli różnica 0,5A a 1A to napięcie zmniejszone...
jak chcesz do 1 miejsca po przecinku, to mnożysz liczbę zmiennoprzecinkową przez 10 (jak do dwóch miejsc, to przez 100, itd.) zamieniasz ją na człkowitą i masz dwie (no w sumie to trzy) drogi. 1. zamieniasz liczbę całkowitą na tekst, wyświetlasz wszystko oprócz ostatniej cyfry (ostatnich dwóch, trzech...) wyświetlasz kropkę i dopiero ostatnią (ostatnie)...
Witam serdecznie, Chciałbym się podzielić z Państwem programowym rozwiązaniem szybkiego dzielenia przez (małą) stałą liczby 8 bit. Długo szukałem jakiegokolwiek wytłumaczenia dlaczego AVRy nie zostały wyposażone w moduł sprzętowego dzielnia, i niestety wprost tej informacji nie znalazłem. Uniwersalne procedury, zgodnie z opracowaniem Atmela o nazwie...
wyswietlanie takiej liczby nie jest problemem. Jezlei masz narazie tylko to to zwykłe dzielenie i modulo (reszta z dzielenia) ... ala=235 ela=ala mod 10 '235 podzielone przez 10(=23) i to co zostanie (=5) ala=ala/10 led_cyfra(3)=ela ela=ala mod 10 '23 podzielone przez 10 (=2) i to co zostało (=3) ala=ala/10 led_cyfra(2)=ela...
Program wygląda dużo lepiej. I = 1wread(2) pobiera dwa bajty w których znajduje się temperatura. Polecam zajrzeć do karty katalogowej DS18B20 str.4. W I znajdzie się liczba 16 bitowa, gdzie pierwsze 4 bity to znak, następne 8 bitów to część przed przecinkiem, a cztery ostatnie to to co po przecinku. Liczby ujemne są w kodzie U2. S = I / 16 Powyższe...
Sam komplikujesz sobie życie bez zagłębiania się dokładnie w notę i brak matematycznego myślenia oraz dokładnego sprawdzenie tego co napisali inni. To moja podstawowa uwaga, jednak możesz zrobić jak poniżej napisałem: - pobierasz częstotliwość wyjściową (np klawiatura dziesiętna) - podstawiasz do przekształconego wzoru na wyliczanie wartości ładowanej...
PRZEPRASZAM, POPEŁNIŁEM BŁĄD !!! WZÓR JEST "Vref/1023", a nie, jak pisałem odwrotnie Atmega8 żeby mierzyć napięcie musi mieć jakieś odniesienie - napięcie odniesienia czy też inaczej referencyjne. Są trzy możliwości - napięcie referencyjne to: - napięcie zasilania AVCC (około 5V) - napięcie odniesienia wewnętrzne 2,65V - napięcie referencyjne z zewnątrz,...
Witam! Dziwny problem. Dlaczego? Zobaczcie. $crystal = 12000000 $regfile = "89c2051.dat" Config Scl = P3.0 Config Sda = P3.1 Reset Tcon.0 Enable Interrupts Enable Int0 On Int0 Odczyt Const Adresw = 160 'adres do zapisu układu 2404 Const Adresr = 161 Dim P As Bit , A As Byte , X As Byte , Y As Byte , I As Byte Dim Z(10) As Byte Kbdclk...
Dzieląc (w zasadzie to mnożąc bo mniej zajmuje pamięci niż dzielenie) przez odpowiednią wielokrotność 10 i odejmując. Na kartce sobie rozpisz co od czego odjąć i co przez co pomnożyć i będziesz wiedział co i jak. Musisz z liczby wydobyć jednosci,dziesiatki,setki,tysiace..itd.
Namoje szczęście mnożenie ma być przez liczby całkowite Ale mnożenie przez liczby całkowite też będzie z błędem. Nie podaję częstotliwości i innych szczegółów- na tym etapie jest to nie istotne. To akurat jest bardzo istotne. Do wysokich częstotliwości trzeba inaczej podejść. Podaj chociaż bardzo przybliżony zakres. I powiedz czy wymagana jest stuprocentowa...
Dzielisz liczbę przez 100, masz setki. Dzielisz przez 10, masz dziesiątki ;-) Jeśli będziesz operował na byte to powinien zaokrąglić. Dim A As Byte Dim A100 As Byte Dim A10 As Byte Dim X As Byte 'zmienna pomocnicza A = 235 A100 = A / 100 X = A100 * 100 A = A - X A10 = A / 10 X = A10 * 10 A = A - X
Ja bym zrobił to tak mam zmienną "a" typu single np potem dziele ją przez 10 a = a / 10 potem przepisuje ją do zmiennej typu np integer np "b" , ktora to automatycznie odcina, zostawia mi tylko liczby całkowite a potem znów mogę ją przepisać do a lub innej a = b zienną typu single można by potraktować tylko jako pomocniczą do obliczeń ale są zapewne...
:) Komenda mod to taka reszta z dzielenia czyli: zmienna = liczba mod 4 zmienna - miejsce gdzie zostanie wpisana reszta z dzielenia liczba - zmienna która jest dzielona przez 4 (w miejsce 4 możesz wstawić inną liczbę lub zmienna) Dodatkowo w Bascomie są dwa rodzaje dzielenia znak / i \ pierwszy (/) używamy do dzielenia z resztą (w przypadku zmiennej...
A jeszcze mam takie pytanko o zaokrąglenia ponieważ funkcja ROUND nie do końca prawidlowo działa. Powidzmy otrzymuję wynik liczbowy z przetwornika ADC, dzielę go przez powiedzmy 3 i mnożę przez 100. Liczba po przeliczeniu to powiedzmy 325.4286. Jeśli zastosuję na tej liczbie funkcje ROUND mój wynik to 325 .0 Nie mam pojęcia jak się pozbyć tej kropki...
eeee.... ale to przeciez bezsensu. zamiast dwubajtowa liczbe rozdzielic na dwa bajty, to ty ja chcesz rozkladac na jakies cos, ktore pozniej jeszcze trzeba przeliczac zeby poskladac spowrotem... a tajemnicza operacja jakiej poszukujesz sie chyba nazywa 'dzielenie przez 100'. ogolnie... po prostu BASCOM <: 4\/3!!
Musisz zastosować sterowanie multipleksowe albo jakiś długi rejestr przesuwny (np. 4 układy 4094) żeby obsłużyć 4 cyfry wyświetlacza. To może być coś takiego: $regfile = "attiny26.dat" $crystal = 8000000 Config Portb = Output Config Portd = Output Config Adc = Single , Prescaler = Auto , Reference = Avcc Dim V as Word Dim V_real as Single...
Można to zoptymalizować i nie przeliczać na Volty w ogóle, ale tak bedzie prościej zobrazować. Jeśli napięciem odniesienia jest AVCC to znaczy że 5V trzeba teoretycznie podzielić przez rozdzielczośc 1024 i wyjdzie 0.00488 no i to się często zaokrągla do 0.0049 Teraz żeby odczytać napięcie wystarczy pomnożyć odczytany wynik przez te 0.0049, ale to wymusza...
dzielenie całkowite + modulo. Przy dzieleniu przez 10 uzyskasz górną cyfrę, przy modulo 10 dolną.
Bardzo dużo pytań... Mój BootLoader (z połączeniem przy pomocy TCP/IP) został napisany właśnie w oparciu o ten bascomowy BootLoader. Nie wiem czy nie zamęczysz nas pytaniami, może ktoś też będzie się udzielał - ja Ci odpowiem na pytanie: Maxwordshift - ????? - Const Maxwordshift = Maxwordbit + 1. Ktoś podpowie dlaczego tak ? Ano dlatego, że (mój błąd...
[syntax=basic4gl] $crystal = 4000000 Config Portb = &B11111111 Portb = &B11111111 Config Portd = &B1111100 Portd = &B1111111 Config Timer0 = Timer , Prescale = 64 Enable Timer0 Enable Interrupts On Timer0 Co1ms Dim Liczba As Single Dim Ktorywysw As Bit Dim Lol As Byte Dim Jednostki As Byte Dim Dziesiatki As Byte Dim Pomoc As Bit Dim Aaa As Word Dim...
Nie ma gotowej komendy w Bascomie i zaczynają się schody:) Na forum wiele razy był poruszany temat konwersji do BCD. Metody są dwie. Cykliczne odejmowanie, albo dzielenie. Poszukaj dobrze:)
(1200-2*60)/300=3 (zapomniałem napisać, że dzieli się do liczby całkowitej - myślałem, że to oczywiste; dopiszę, że pierwsze dodawanie 1 po dzieleniu można pominąć, jeśli podzieli się bez reszty); (1200-2*60)/4=270 (mm) i to jest odległość punktów, a ich ilość to 4+1=5. (1250-2*60)/300=3, (1250-2*60)/4=282.5 (mm), nadal 5 punktów.
Każdy porządny język może dzielić słowo word na 2 bajty. Najczęściej instrukcje typu Lo(word) i Hi(word) zwracające dolną i górną połówkę 16bitowej liczby.
A co będzie jak będę chciał wysłać większą liczbę np H1E240 czyli 123456 ,muszę je sam dzielić na 4 bity i po kolei wysyłać?
(A). Czy w Compare0a = 186 mogę wstawić liczbę w zakresie 0-255? (B). by uzyskać interwał =~100ms to 9 600 000Hz/ 1024 /37,5 (połówek pewnie nie można używać wiec zaokrąglę do 38 to będzie 247Hz (C). natomiast dla interwału 50ms to 9 600 000Hz/ 1024 /75 to będzie 125Hz czy dobrze to rozumiem? Nie dobrze , .. (at)A. -formalne/teoretycznie możesz w Compare0a...
A gdybym chciał się zając mikrokontrolerami, czego bym potrzebował?? Mikrokontroler (jaki?) programator (jaki?) kompilator na kompie (jaki?) hmm.. coś jescze???? _emes Na początek polecam zacząć od mikrokontrolerów rodziny AVR. Nie daj się nabrać na początki w '51 - owszem, może to i "sztandarowy" mikrokontroler, tak jak Pascal w językach programowania,...
Wielkie dzięki za pomoc. Używam zmiennej typu Single ponieważ w dalszej części występuje dzielenie i pojawiają się liczby zmiennoprzecinkowe a z tego co sie orientuje to Word ani Integer takiej możliwości nie mają (chyba, że mają?) :)
Więc tak potrzebuje wyświetlić liczbę w formacie x.x. I nie wiem jak to zrobić próbowałem tak iż daną liczbę mnożyłem razy dziesięć zaokrąglałem do liczby całkowitej funkcją round a następnie robiłem dzieliłem na dziesięć ale na wyświetlaczu lcd i tak pojawiało mi się kupę liczb po przecinku w formacie x.x00000001 lub podobne x.x999999991. Jak to zrobić...
Zaoszczędziłem 32bajty. A teksty z lini: 45, 47, 304, 373, 477, 517, 519, 566, 568, 614, 616, 663, 665, 713, 715, 761, 763, 798 dlaczego nie są w Eepromie :)? Możesz wykasować spacje w łańcuchach i zmodyfikować początek Display_msg. Te wszystkie sztuczki pozwolą ci zaoszczędzić parę bajtów , ale największe oszczędności przyniesie ci rezygnacja z liczb...
Albo jak radzi mirekk - tym bardziej że m8 kosztuje około 8zł Albo wywal instrukcje STR i FORMAT. Formatowanie wyniku zrób jako dzielenie zwykłe (liczba całkowita) i po kropce MOD (pozostałość z dzielenia). Ewentualnie napisz wszystko jako wstawka assemblerowa, ja tak zawsze robiłem i było ok :-)
zwraca ile razy liczba x mieści się w liczbie y A nie wyjdzie to z dzielenia? W VB dzielenie bez reszty realizuje operator "\" ("zwykłe" dzielenie to "/"). http://obrazki.elektroda.pl/5353910100_1...
Dzięki za odpowiedź ale nim wpisałem pytanie na Elektrodę to sporo męczyłem się z tym (przesuwanie przecinka, mnożenie, dzielenie) ale niestety bez rezultatów. W bascomAVR jest polecenie "Round" ale ono zaokrągla wynik do liczby całkowitej i tym samym odpada. Może jest jeszcze jakieś polecenie coś w rodzaju formatowania wyniku, którego jeszcze nie znam/znalazłem...
W bascomie też masz liczby zmiennoprzecinkowe- np. typ single. Jest też konwersja i dzielenie z resztą modulo. Tylko Attiny2313 może się w pewnym momencie okazać za mały. Ta część całkująca- to w zasadzie ograniczenie od góry PWM- oczywiście nie może być większe niż 100%. Znalazłem kiedyś taki link: http://elm-chan.org/works/smc/report_e.h... Ale go...
Witam Mam liczbę integer 47 którą zamieniam na single i dzielę przez 10 , wynik to 4.69999806 . I teraz w jaki sposób uzyskać dwie liczby integer całkowitą czyli 4 i ułamkową po zaokrągleniu czyli 7 ?
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...
Na LCDku wyświetlałęm już liczby sklejone z kawałków ;) ale nie kumam jak można by rozwiązać wyliczanie tej wartości dzieląc ją na kilka liczb. Natomiast 255 i FF to jest taka sama wartość i w pamięci zajmie tyle samo (tak myślę) tylko sposób reprezentacji jest różny. W sumie zrobiłęm to na zmiennej typu Single i liczy bardzo ładnie baaardzo wielkie...
Witam goreckidiy. Twój projekt spełnia funkcę, którą chciałeś osiągnąć. Ale jest ale :) Niezwykłe zbiegi okoliczności sprawiły, że to działa (mam nadzieję) prawidłowo. Spójrz na zdjęcie. http://obrazki.elektroda.pl/9690955600_1... W programie masz coś takiego:[syntax=text]'*********WAŻNE!!!*... data1 = data_in - 1048574 'tyle suwmiarka...
Dim T1 As Single Dim T2 As Single A co to? "Przesunięcia bitowe" na liczbach zmiennoprzecinkowych? Zamień single na int i powinno śmigać. Procedury obliczeńna liczbach zmiennoprzecinkowych pożerają mnóstwo miejsca. Dzielenie liczb całkowitych w bascomie AVR robi się za pomocą \, a nie /, ot taka ciekawostka. Użycie / powoduje wykonanie tego dzielenia...
Stosuj zasadę 2 jednostki = 1 stopień, tak jak ma to miejsce w np. DS1820. Temeratura dzielona przez 2 daje rzeczywistą wartość, a reszta równa jeden oznacza wtedy połówkę. Dzięki temu wszystko zapisuje się na liczbach całkowitych, co oszczędza pamięć.
O zasilaniu czy sprawności kodu nie pisałem z prostych przyczyn: Piszącego w Bascom interesuje tylko to by program działał a nie ciągnął mało prądu (zasilanie bateryjne i Bascom? Nigdy nie słyszałem by ktoś to łączył) Piszącego w Bascom interesuje by progam działał niezależnie czy musi użyć procka z 16kb czy 32kb Ja wolę by program mieścił się w 1kb...
Dziękuję ślicznie za szybką pomoc. Oba sposoby są świetne. W moim przypadku lepiej sprawdzi się dzielenie liczb całkowitych z operatorem [MOD], tak jak to podał Sp3ots. Bo otrzymuję gotowe dane do wyświetlaczy 7-seg jak i do LCD. Tak mi to wyszło - sprawdzone, działa - a nuż jakiś zielony jak ja wykorzysta. [syntax=vbnet]Dim F As Word ' pięciocyfrowa...
Mam pytanko oto część programu z postu Odczyt = 1wread(2) T = Odczyt - 16 T = T * 10 T = T \ 16 T = T \ 10 Możecie mi powiedzieć dlaczego najpierw mnożycie przez 10 potem dzielicie przez 16 i dalej dzielicie przez 10 ( czyli 10*16/10=16). Nie lepiej tylko podzielić przez 16. I jeszcze jedno pytanie dotyczące liczb ujemnych Ds przedstawia liczby ujemne...
Typy się kłaniają, typy danych, jeśli więc zrobisz tak: dim droga as long dim droga1 as single droga1 = droga/12.54 to powinno zadziałać ;) przecież dzielisz nie przez liczbę całkowitą tylko zmiennoprzecinkową, a więc w wyniku też masz dostać zmiennoprzecinkową - dlatego trza wybrać typ single w Bascomie. Ale to z kolei spowoduje ci straszny rozrost...
Dlaczego arktik1 mnoży zawartość przez 10? Dzielenie przez 16 rozumiem... w ten sposób pozbywa się ułamka. Hmm, może chodzi o to, by najpierw zwiększyć zawartośc zmiennej dziesięciokrotnie, a potem podzielić przez 16, by wynik dał wartość z jednym miejscem po przecinku? Dokładnie tak. Nadal nie rozumiem, w jaki sposób bada wartość ujemną w tym kodzie,...
Najprościej zrobić to tak: wyliczasz napięcie z proporcji, ale nie do 20 tylko do 2000. Następnie dzielisz to przez 100 a wynik zapisujesz do liczby całkowitej - masz to co przed przecinkiem. Potem mnożysz to przez 100 i odejmujesz od pierwotnego napięcia - masz to co po przecinku. Wyświetlasz tak jak napisałeś. LCD przed_przecinkiem;",";po_przecinku;
Spróbuj najpierw rzutować jeden z argumentów na Double. Dzielenie, które wykonujesz daje wynik typu takiego jaki jest najszerszy typ danych wejściowych czyli w tym wypadku liczba stałoprzecinkowa. Jeśli to c to spróbuj np. Ab=(Double)5/6. Wydaje mi się, że może o to chodzić. Z pewnością w javie i chyba c++ występuje takie zjawisko.
Co do kolegi pierwszego: wcale nie chce żadnej wiekszej dokładności. 200 x 0.0025 = 0.5 i to bez łaski - nie wiem dlaczego procesor wylicza coś dalej poza mnożnik 0.0025 przecież powinien operować tylko wielokrotnościami tej liczby. O zaokrąglaniu to wiem ale myslałem, że nie trzeba bedzie tego stosować. Kolega drugi: Takie podstawienie jak napisaleś...
Mam Attiny2313 pracujący na wewnętrznym oscylatorze 8MHz, który może być dzielony przez 8, Więc raz jest 1Mhz, a raz mogę ustawić 8Mhz. To jest prawda, chyba nie robisz tego w programie tylko(!). O ile wiadomo to funkcja 'GETRC5' używa Timer0 oraz Timer0 Interrupt, zatem używanie timera0 w programie do innych celów staje się dyskusyjne. e marcus
Co to jest Prescale ? Timery w mikrokontrolerach AVR nie muszą być taktowane zegarem systemowym - często jest on za szybki dla potrzeb projektanta. Inżynierowie z Atmela rozwiązali ten problem, umieszczając dodatkowy (nieco ukryty) licznik zwany prescalerem. Z tego licznika otrzymujemy kilka nowych sygnałów zegarowych, z których skorzystać mogą timery....
No ale przecież 133/16 to nie jest 41998000! Bo to po pierwsze nie jest dzielenie w systemie 16stkowym tylko dziesiętnym w programie. Poza tym brakuje koledze funkcji fusing(), a jak podzielimy 133 w hexie czyli 307 w dziesiętnym systemie przez 16 to otrzymamy 19stopni i mniemam że taka temperatura jest ustawiona. A druga linijka jest zła ze względu...
Ja to robie na przykład tak: dziele cyfre co ja mam wyswietlic przez 1000 i mam juz liczbe tysiecy czyli moge ja wyswietlic na pierwszym miejscu, nastepnie poleceniem a=wynik mod 1000 dostaje reszte z dzielenia przez 1000 dziele ja przez 100 i mam liczbe setek i znowu mod 100 i mam reszte z dizelenia przez 100 kolejne dzielenie przez 10 da w rezultacie...
aha 2^16 no tak bo 2^8 256 bo każdy bit jest kolejną potęgą liczby 2. P.S. Jak mawia mój nauczyciel od cyfrówki każda liczba w układach cyfrowych jest potęgą liczby 2. :D A może wyłumaczyć mi ktoś tak jaśniej niż whelpie bascoma ;) co to jest ten prescaler i co on dzieli. wyczytałem na innym forum że liczba podana w prescale dzieli częstotliwość pracy...
Druga kwestia, to zapis do pamięci 24c04 liczby zmiennoprzecinkowej, hmm. nie robiłem nigdy tego, nie bardzo wiedziałem jak to ugryźć. Sprawa jest generalnie prosta. Liczba typu single zajmuje cztery bajty, wystarczy więc ją rozbić na pojedyncze bajty i zapisać każdy z osobna. Przy odczycie robisz dokładnie odwrotnie. Powiesz pewnie "no dobra, ale...
Podałem ci taki prosty przykład - na małych liczbach - kurczę aż się dziwię że to stanowi jakiś problem i że trzeba to rozważać prawie jakby to zależało od interpretacji tego co poeta miał na myśli. Proszę przeczytaj to wyżej - gdzie założyłem że procek jest taktowany 8 Hz ;) ... no toż tam widać jak na dłoni o co chodzi - i odnieś się do tego. 8 Hz,...
2. Teraz ustawiam np. preskaler na 256 - rozumiem, że wtedy licznik Timera0 mnożę przez wartość preskalera i wychodzi mi jakaś wartość. Zakładam, że nie ładuje to timera żadnej wartości na początku czyli: Np. 255 x 256 = 65280 - pytanie co to za liczba? co ona oznacza? Nic nie oznacza. Zacznij od przeczytania opisu timera w Datasheet. Preskaler dzieli...
To moze i ja sie wlacze.Wedlug mnie BASCOM jest do du.. dlatego ze do wszystkiego pisze sie biblioteki a potem siada jeden z drugim i zamiast sie troche nauczyc to wala gotowe funkcje do obslugi tego czy owego.Asembler jest z kolei niewygodny jesli chodzi o pisanie duzego projektu ale warto od niego zaczac sie uczyc z zastrzezeniem ze do pewnego momentu.I...
Wartości binarne są napisane dobrze (Bascom) ,żeby sprawdzić zamiast Timera1 , napisałem pomiar napiecia z ADC(5) no i jest nieciekawie, podstawiałem wartoci jako stałe no i wartoći wyswietlają sie z krotnością liczby 6 . dzieliłem mnozyłem i nic pokazuje bzdury .Teraz nie wiem ale czy czasami nie jest potrzebna negacja do zaznaczenia ważnych bitów...
Przede wszystkim zrób tak: Volt = Getadc(1) Cols = Volt / 64 Potem wyświetl sobie maksymalne napięcie jakie dostajesz z LM na ADC, czyli: Locate 1 , 1 Lcd Volt Max ADC to 1024. Jeśli chcesz by wskaźnik był w pozycji max przy wartości ADC 1024 to musisz podzielić Volt przez 64. To proste: MAX ADC = 1024 MAX pozycja na wyświetlaczu = 16 Czyli...
Stosuję często taki myk Mam np. wyświetlić wartość 1234567 Hz bo tyle zliczył uC. Na wyświetlaczu chciałbym mieć 1.234 MHz więc: czyszczę wyświetlacz, ustalam na wyświetlaczu pozycję 1 wiersz 2 kolumna, wyświetlam 1234567 ustalam na wyświetlaczu pozycję 1 wiersz 1 kolumna, Dzielę 1234567\1000000 i otrzymuję 1 wyświetlam 1 a bezpośrednio po nim "." ustalam...
mail jest pod każdą moją wiadomością a jak nie to proszę hunterhouse(at)wp.pl skąd jestem, też pisze w profilu :) poznań, prawie :D co do programu to tamta wersja miała troche błędów, takich co sie ujawniają dopiero przy niektórych danych, wiec troszke go zmieniłem, usunołem też dzielenie i zastosowałem liczbę ze stałym przeciniem. teraz chodzi troche...
nie, dzielisz na liczby zmiennoprzecinkowe o podwojnej precyzji i wysylasz w kolejnosci losowej... <sciana> wez no poczytaj na necie o tym co to jest string, char i o sposobie zapisu znakow wg ASCII. na przyklad tutaj http://www.exforsys.com/tutorials/c-lang... http://www.google.com/search?client=oper...
Witam Temat troszke starawy ale sie podpinam:) Tez kombinuję z roździelczością 0.1'C i troche mi nie wychodzi:) Dziwnie mi dziesiate czesci stopni wskazuje podaje ciąg: np. 23.1;23.2;23.3;23.4;23.5;23.6;23.8;23.12... itd dziwne bo nie ma liczby 0,7,9 tylko jakies 12 i 25 a do 6 idzie ok-dziwne to co po przecinku obliczam wzorem: dziesiatki=temp(7)-temp(6)...
No to jest progres poczytałem kilka "chłopsko" napisanych pdfów i jest światło w tunelu. Chyba nawet zrozumiałem wszystko. Wiem dlaczego problem ze zrozumieniem miałem... Doszukiwałem się czegoś z kosmosu a tu takie proste zagadnienie. Natomiast chciałbym poradzić się odnośnie samego liczenia spalania chwilowego. Wychodzą mi dość wielkie liczby po kalibracji....
Beta = I * K Beta = Beta And 31 // dlaczego Beta And 31 ??? - to jest obliczenie kąta (i*k) and 31 to zamiana na kąt z przedziału do 0 do 2pi. bo w moim programie są 32 prubki numerowana od 0 do 31 czyli kąt też jest od 0 do 31. 31 to poprostu kąt 360st czyli 2pi. AND działa na bitach czyli m tym przypadku daje nam reszte z dzielenia przez 32. troche...
zapominasz ładować konkretną wartość do licznika przed jego uruchomieniem. obliczasz ją (w podstawowym trybie) mniej więcej tak: obliczasz czas jednego cyklu 1/fclk np dla 1Mhz 1us bierzesz teraz czas, jaki chcesz odliczyć, i dzielisz go przez czas jednego taktu, dostaniesz wtedy ilość potrzebną do zliczenia.np 0,020s/0,000 001 = 20000 jak wiesz licznik...
Witam Piszę do was bo nie mogę rozpracować histerezy w poniższym kodzie programu. Program działa prawidłowo ale jest mały problem. Histereza zawsze działa, a raczej jej brak (załączanie i wyłączanie) działa równo przy 30 stopniach. Potrzebuję aby histereza była ustawiona na 5 stopni. Proszę pomóżcie mi wyeliminować ten problem. Program musi mieć funkcję...
Witam, programowanie mikrokontrolerów zacząłem od niedawna, zaraz natknąłem się na problem z rozwiązaniem którego mam nie lada programowy problem. Możliwe, że moje pytanie pojawiło się już gdzieś na łamach elektrody, ale bardzo ciężko przeszukać całe jej archiwa. Nie jestem pewien czy w dobrym dziale zamieściłem pytanie -> decyzja należy do administratora....
Program Trawiarki PCB przerobiony nie działa nie daje się kompilować Schemat http://obrazki.elektroda.pl/5213318500_1... Wejścia przełączników podłączony do portd.3 i portd.4 oraz wolny portd.5 chcę wykorzystać do załączenia pompki do napowietrzania po osiągnięciu temperatury 35 stopni oraz załączania oświetlenia miejsca trawienia. [syntax=vbnet]'*************...
To jeszcze ja wtrące swoje 3 grosze. Co do select case to nie polecam - mniej miejsca zajmują pojedyńcze warunki IF tylko trzeba wtedy dobrze przemyśleć aby nie wyskakiwały dwa naraz albo chociarz prawidłowa wartość była wtedy kiedy oczekujemy tego. Dodatkowo zauważyłem ze w Bascomie 8051 użycie podwójnego lub potrójnego warunku IF (if cos=1 or cos=2......
Czy jeżeli napisze program w którym : - będzie zliczał ilość obrotów w ciągu 1 s (będzie to częstotliwość f ) - zastosuje wzór V=2*pi*r*f r-promień koła Robisz tak: 1.Zliczasz ile impulsów przypada na 1km drogi (wykonywane tylko raz), najlepiej jak ustawisz program tak aby zliczał impulsy drogi do zmiennej typu word. Jedziesz np. 5 km i zapisujesz...
Przepraszam, myslałem że naprowadzenie wystarczy... Tak jak mówił Alberto86 jeli jest tańczty to po co przepłacać działać bedzie tak samo... Dołączam rysunek jak połoczyć jak proponuje kolega. Rezystor dobierasz według wzoru Uzasilanie - Udiody (czerwona ok 1,4V zielona 2V) i to wszystko dzielisz przez prąd jaki pobiera dioda np. 5mA (pamiętaj o jednostkach)....
Witam. Zrobiłem termometr taki jak w temacie http://www.elektroda.pl/rtvforum/topic33... tyle że zamiast AT90s2313 dałem ATmege8, taktuje go wewnnetrznym oscylatorem 4MHz ponieważ portb jest zajęty dla wyświetlacza. Po uruchomieniu na wyświetlaczu pojawiają się "niepełne" cyfry coś podobne do 2 lub innej cyfry. Programu nie zmieniałem...
Nigdy nic nie napisałem na PC.A z czym bascom miał problemy to doskonale poznałem ,nawet przy wolnym podawaniu impulsów na przerwanie i dodając coś w nim na zmiennych single LCD zaczynał wyświetlać syf. Dodając coś do worda lub bajta nie było takiego problemu, więc skróciłem podprogram na max. W przerwaniu dokonuje pomiaru przebiegu,aby ten przebieg...
....- przerabiałem to Bascom jedynym sprawdzonym i profesjonalnym odbiorem danych jest mój zapis reszta to dla amatorów "zapal zgaś diodę" - Bez obrazy! Lecz to doświadczenie oooj bardzo małe to doświadczenie, każdy początkujący amator nie umiejąc sobie poradzić z transmisją w RS232 na początku zwykle dobiera się do transmisji binarnej, która sprawia...
Wielkie dzięki mirekk36 Rozjaśniło się i to bardzo !!! Właśnie kompiluję i sprawdzam nowe procedury Nie wiem czy się nie zawieszę na liczbach ujemnych (zmienna Single) Jak co to znów poproszę o pomoc. Rzeczywiście daruję sobie te dzielenie bitów. A w Helpie - jak to w Helpie wszystko trochę zawile wytłumaczone (choć w tym przypadku masz rację nie doczytałem...
Ja też miałem takie cyrki z przerwaniem. napisałem więc program w ten sposób: '///////////////////////////////////////... '////////// TERMOSTAT /////////////// '///////////////////////////////////////... $crystal = 4000000 'rezonator 4MHz $regfile "attiny2313.dat" 'attiny 2313...
Mam teraz wrzucony taki programik: [syntax=vb]Config Timer1 = Timer , Prescale = 8 'konfiguracja timera Enable Timer1 Config Int0 = Falling 'konfiguracja int0 On Int0 Przeint0 Enable Int0 Enable Interrupts 'włączenie przerwań Dim Obrmin As Single Dim Obrmin1 As Integer Dim Obrmin2 As String * 6 Dim Wynikczas As Word Cursor Off '-------------------------------PETLA...
Witam posiadam dwa rodzaje wsadu do procka jeden to plik hex drugi to plik bas rozumiem że ten drugi plik udostępnia kod źródłowy i można go w dowolny sposób edytować i tam dopisać zmiany?? Dobrze to rozumiem ?? Tam w kodzie programu praktycznie nic nie będziesz musiał zmieniać w tym BAS. Jedyne co to nagłówek nazwy mikrokontrolera i puścić kompilację...
Witam. Składam sobie zegar z termometrem na Attiny2313 i DS18B20 lecz mam problem z ujemną temperaturą. Do odczytu temperatury używam programu kolegi "Elektrooonik" ponieważ zajmuje najmniej kodu co jest tu dla mnie ważne i z 1-Wire styczność mam pierwszy raz więc wpierw wolę mieć jakiś przykład. Program Oryginalny do pomiaru temperatury wygląda tak:...
Hmm, to znaczy że bym musiał uruchomić drugi timer (8 bitowy). Z tego co pamiętam, to przy maksymalnym dzielniku wychodzi 1 albo 2 sekundy. I w momencie przepełnienia sprawdzać prędkość? Co do pokazywania zer to ogarnąłem wykrywając przepełnienie timera 3 i w tym momencie wyświetlanie zer. cóż wiem , że program pewnie wg Ciebie (z resztą wg mnie też)...
Witam Jak wielu spotkałem się z problemem problemem kłopotliwej obsługi pilota z RC5. Po poszperaniu w necie wpadłem na http://www.elektroda.pl/rtvforum/topic20... ten temat. Jak się okazało wszystko na tym programie pracowało, ale nie zawsze. Kłopotem było napisanie programu "pod pilota". Oczywiście pochwała dla Sabotaz'a który problem "ruszył"...
Przykłady parsowania danych tekstowych masz w helpie - keyword reference - string. Np polecenia typu LEFT, MID, RIGHT itd. wraz z opisem działania masz przykłady. Do Bufor = Ischarwaiting() 'Sprawdz czy cos jest w buforze If Bufor = 1 Then Waitms 250 Gosub Odczytaj_sprzetowy_uart 'Jesli jest to odzcytaj Oblicz Cls Locate 1 , 1 Lcd Dane; Locate...
Jak już pisałem nawet jeśli go nie wyłączyłem po inicjacji to nie liczy NIC ponieważ sygnał zegarowy pojawia się dopiero po linijce strt = 0 wtedy załącza się układ i pind.0 = 0 , potem liczy dopóki pind.0 = 1 (zależy od kondensatora) . Gdy na pind.0 pojawia się 1 , pojawia się równocześnie na clock enable preskalera (aktywowany stanem niskim) który...
Witam. Jeśli można to bym prosił kolegę asembler o jeszcze trochę dokładniejsze opisanie tego sposobu pomiaru napięcia bo bardzo mnie to zaciekawiło. 1.22 V to stałe napięcie odniesienia wytwarzane przez procesor , na jego podstawie przez wbudowane wzmacniacze operacyjne wytwarza on napięcie 2,56 V . To rozumiem. Jeśli napięcie zasilania podamy również...
Zaraz dokonam kilku kosmetycznych zmian i ponownie dodam enable timer2. Dam znać o efektach Dodano po 13 Do dyspozycji mamy nastepujący kod, który generalnie już działa (z małymi wadami) Dodano po 4 Czy obecnośc obliczeń w obsłudze przerwania może dawac taki efekt? Dodano po 14 Kolejna wersja kodu z obliczeniami w pętli głównej. Nie zmieniło to działania...
Witam! Od razu mówie: nie chce gotowca, lecz oczekuję pomocy. Chodzi mi dokładnie o wbudowany w ATMege8 przetwornik A/C. Kod: woltomierzu . Nie wiem co czynić... Takie programy piszę, aby poćwiczyć BASCOM, aby bez większych problemów zrobić bin-zegar(z woltomierzem :) ). Pozdrawiam. Krawacik3 Poprawiłem tytuł - 3.1.15.
Witam! Jak w temacie...czyli chciałbym uprzejmie prosić osoby, które posiadają większą wiedzę ode mnie o sprawdzenie poprawności kodu w Bascomie, jak i schematu. http://obrazki.elektroda.pl/3512912900_1... Opierając się na kodzie źródłowym pewnego zegarka binarnego, skonstruowanego przez jednego z forumowiczów( The century bit (bit 7...
Histereza jest źle tak nie powinno być, to błąd, nie możesz dodawać do integer liczby z przecinkiem. [syntax=basic4gl]If Plus = 0 Then Temp_odc = Temp_odc + 0.1[/syntax] zmienna Temp_odc jest typu integer i nie jest zmienną zmiennoprzecinkową. Pomyliłeś się, bo to działanie [syntax=basic4gl]Temperatura = Temperatura * 10 ' mnozymy 10 Shift Temperatura...
No więc, tak jak obiecałem jakiś czas temu postaram się przybliżyć i wytłumaczyć kwestię programowej obsługi popularnego układu RTC – PCF8583. Układ ten ma zarówno zwolenników jak i przeciwników, a jedni i drudzy mają swoje racje. Są układy prostsze w obsłudze programowej, posiadające wszystkie interesujące nas dane w osobnych rejestrach prostych...
Witam po raz kolejny pojawił się problem z moim programem otóż chcę aby kiedy wzrośnie temperatura i będzie wyższa lub równa zadanej to serwo obraca się w prawo poczym się zatrzymuje następnie kiedy temperatura będzie niższa od zadanej wtedy serwo obraca się w lewo i zatrzymuje się. [syntax=basic4gl] '************* Konfiguracja uC *****************...
Już odpowiadam na pytania i sugestie. Tak jak napisałem chwilowo otwarcie zamkniecie migawki symuluję mikrowłącznikiem. Zdaje siebie sprawę, że jest to generator drgań, drgań o charakterze losowym. Ale czy to ma aż taki wpływ gdy przycisk trzymam 3 - 5 sekund a wynik pomiaru mam błędny. Ale rozumiem, że popełniłem błąd w założeniach. Dziś postaram się...
Zamieszczam minimalną ilość kodu potrzebną do obsługi suwmiarki, czyli odczytania pomiaru i jego wyświetlenia. [syntax=basic4gl] $regfile = "m8def.dat" $crystal = 16000000 Config Lcd = 16 * 2 ' konfiguracja lcd Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portc.5 , Db6 = Portc.4 , Db7 = Portc.3 , E = Portd.1 , Rs = Portd.2 'piny na lcd '***************************************...
Diody mają nieliniową charakterystykę jasności świecenia w stosunku do prądu jaki przez nie przepuszczasz (tak w skrócie) Kiedy PWM ma wartość 1, 2, 3, 4 czyli niską to przyrost jasności w tych pierwszych krokach jest duży. Póżniej jednak "dokładanie" już zmienia niewiele. Taki prosty, liniowy PWM powodowałby że ściemnianie i rozświetlanie diody nie...
dzielenie liczby dzielenie liczby 16bit bascom liczby
podcisnienia wezyki wzmacniacz pentoda głośnik wymiana magnesu
podłączenie zasilaczy serwerowych whirlpool awm6081 blokada drzwi
Błąd F.-- w piecu Saunier Duval - przyczyny i rozwiązania Configuring BL602 Magic Home Bulb for OpenBeken