:) 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...
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...
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.
34 podziel przez 10 a zostanie Ci 3. Reszta z dzielenia chyba funkcja Mod da Ci 4.
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...
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...
Witam, Nie twierdzę że mój sposób sprawdzi się w Bascomie, dużo lepiej sprawdzi się asemblerze. Napisałem w Bascomie tak dla przykładu, myślę że tak jest przejrzyście, a chodzi po prostu o zasadę - sposób. AVR - serii Atmega to 8bitowce, więc tutaj w grę wchodziłoby tylko 8bit/8bit. Natomiast co ciekawe, AVR32 też nie ma dzielenia sprzętowego. Całkiem...
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
Czy wystarczy tak: AA=BB/CC; Tak, jest to odpowiednik dzielenia na liczbach całkowitych (bez znaku) w C/C++.
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...
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!!
dzielenie całkowite + modulo. Przy dzieleniu przez 10 uzyskasz górną cyfrę, przy modulo 10 dolną.
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 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:)
dzielenie w bascomie zjada bardzo dużo zasobów... zamień liczbę na hexy albo binarnie i dodawaj albo odejmuj, [url=http://edu.i-lo.tarnow.pl/inf/alg/0... binarne to w zasadize odejmowanie z przesunięciem...
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?
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...
O ile dobrze pamiętam bascom na 2 rodzaje operacji dzielenia jedno w wyniku daje liczbę całkowita 2 liczbę rzeczywistą. Poza tym wykorzystanie dzielenia to przesada, lepiej i szybciej jest wykonać 4-krotne przesunięcie w prawo, które jest równoważne podzieleniu przez 16. AVR nie ma instrukcji dzielenia wobec tego wykorzystujesz skomplikowany algorytm....
A w jaki sposób wysyłasz tą liczbę? Czyżbyś wysyłał ją bezpośrednio jako np 9832? Według mnie jest to liczba która zajmie dwa bajty, wiec musisz ją rozbić i wysłać osobno do dwóch komórek. Najlepiej chyba będzie do jednej komórki wysłać całkowitą część dzielenia tej liczby przez 256, a do drugiej resztę z tego dzielenia. Pozdrawiam Dawid.
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ć?
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 :-)
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...
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...
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.
(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.
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...
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...
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...
AVR ATMega (8, 16, 168, 2560 -> C,BASCOM). Ze względu na: niską cenę, dostępność materiałów szkoleniowych, liczbę ludzi chętnych do dzielenia się wiedzą i doświadczeniem. Są proste w aplikacji, mają darmowe środowisko programistyczne i są odporne na moje eksperymenty ;)
Problem w tym że nie mam zielonego pojecia o Bascomie i BASICU :/ Program pisze w ASM'ie. Jak na razie zrobiłem to na skróty i działa ale to nie to....(po prostu zamiast dzielić przez 120 dziele przez 128)
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...
[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...
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...
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...
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ą?) :)
Witam. Mam problem z wyświetlaczami LED. Nie wiem za bardzo jak liczbę np. 1993 rozłożyć na cyfry 1;9;9;3. [youtube]http://www.youtube.com/watch?v=... Na tym filmie można zauważyć, że liczby nie są tak super wyświetlane. Coś przeskakuje... Wracając do problemu wiem, że trzeba liczbę 1993 podzielicz przez 1000 później przez 100 ; 10....
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ć...
Ło matko! ludzie co wy tu opowiadacie? Jarosław J - odnośnie twojego problemu ale już konkretnie: 1. Możesz najspokojniej w świecie przy komunikacji dwóch procków zrobić tak, że jeden będzie taktowany wewn oscylatorem a drugi np. kwarcem (Żaden problem) !!! 2. ale używaj sprzętowego UARTA w Bascomie a nie to co tutaj wszyscy razem wyczyniacie ;) 3....
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 ?
Jak później matematycznie zapisać liczbę 49021 aby otrzymać postać normalnej godziny. godziny = 49021/2048 minuty = reszta z poprzedniego dzielenia 1917/32 sekundy = reszta z poprzedniego dzielenia 29*2
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...
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...
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)...
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...
a w jakim języku programujesz ? Bo np.: w Bascomie jest gotowa funkcja. Programuje w asemblerze. Teraz mi się przypomniało, że 6 się dodaje po dodaniu dwóch liczb bcd. Najpierw do mniej znaczącej liczby. Jesli nie nastąpi przepełnienie półbajtu to się tą 6 spowrotem odejmuje, jak nastąpi to się zostawia i robi to samo ze starszym półbajtem. ... Więc...
Też by tak mogło być ale... Fclock nie jest liczbą wielokrotną 2, co skutkuje że podczas dzielenia 2^32/Fclock już wychodzi mi liczba ułamkowa i dochodzi do zaokrąglenia lub obcięcia miejsc po przecinku (w najprostrzej wersji). Potem po przemnożeniu niedokładność wzrośnie. Ale chyba nie bede wyważał otwartych drzwi i pozostawię konwersję na zmiennoprzecinkowej....
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...
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,...
Witam ponownie , Chciał bym podziękować koledze submariner za nakierowanie na właściwe myślenie przede wszystkim w sposobie dzielenia liczby na pozycje ( setki, dziesiątki, jedności ) po dość długim kombinowaniu się udało się ułożyć program który prawidłowo wyświetla liczbę na 3 wyświetlaczach 7-dmio segmentowych. Pozostało mi jedynie przekształcić...
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;
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...
teoria: http://pl.wikipedia.org/wiki/Liczby_zmie... praktyka: Liczby zmiennoprzecinkowe zawsze reprezentują przybliżony wynik. Dokładność przybliżenia zależy od ilości bitów zmiennej i od samej liczby (łatwiej jest przedstawić 111111111111111111111 lub 0,000001 niż 111111111111111111111,000000001 - w tym drugim wypadku część ułamkowa na pewno...
jesli pracujesz nad avr'rem to prosto to mozesz zrobic w bascom avr poleconiem shift fajnie że chciałeś pomóc ale nie napisałeś jak polecenie shift dzieli przez FFFF?? temat przesuwania został wyczerpany , zastanawiajmy się nad procedurką dzielenia lub innym sposobem ;)
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...
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.
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...
O ile mi wiadomo to Bascom w jednym wierszu potrafi wykonać tylko jedno działanie i tylko na dwóch zmiennych Pisałem o tym w #6: Bascom, który w jednym wierszu potrafi wykonać jedną operację dzielenia, mnożenia i tak też jest napisane u mnie to równanie. Widzę i to jest problem Bascom, bo nie ma w nic czegoś takiego jak kolejność działań, nawiasy....
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...
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,...
Witam! Nie jestem biegły w BASCOM-ie i mam problem z funkcją, w której chcę uzyskać resztę z dzielenia. Oczywiście operuję na liczba które mają wartość po przecinku tak więc użycie funkcji mod nie wchodzi w grę. Moja funkcja wygląda tak : [syntax=jezyk_programowania] ' wczesniej w zmiennych globalnych jest zdeklarowane dim L as single, l1 as single,...
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...
Dzięki (at)szelus za listing programu, myślałem że dam rade zrozumieć coś z C ale myliłem się :) nie rozumię tego programiku. Mam jeszcze pytanie odnośnie: 1. skalujesz zmienną "a" do postaci z zakresu 0-32 2. dzielisz "a/2" ( w assemblerze komenda div ab przy b=2 ) 3. wyświetlasz a pełnych kwadratów 4. jeśli była reszta z dzielenia (w asm b<>0)...
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...
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...
Reszte rozumem, ale do konca nie skumalem tego fragmentu z dzieleniem przez 32. 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 po prostu kąt 360st czyli 2pi. AND działa...
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)...
Atmega8 czy atmega8L, ta pierwsza ma zakres napięć od 4,5-5,5V częstotliwość pracy 0-16MHz, ta druga 2,7-5,5V częstotliwość pracy 0-8MHz, pierwsza strona noty. Jeśli używasz wersji zwykłej bez L to masz za małe napięcie. Jeśli chcesz sprawdzić prędkość procka to możesz skonfigurować jakiś timer to pracy w trybie PWM i porównać częstotliwość na wyjściu...
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ś...
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...
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...
widze, ze kolega Tdv umie tylko przytaczac czyjes algorytmy nie potrafiac ich nawet poprawnie zinterpretowac. Owszem - nawet glupi'51 dla pewnych osob moze byc trudny. Jezeli kolega nie rozumie to bez wiekszych wywodow prosze sobie sprawdzic czym się roznia komorki rejestrowe (R0, R1...) od zwyklych komorek pamieci - mimo tego, ze sa przeciez umieszczone...
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...
O już chyba wiem. Nie rób mnozenia przez liczbę z przecinkiem tylko dzielenie. Ty masz 0.000016*licznik i potem to dzielone przez 60. Ten sam wynik będzie jak dasz tak: 3750000\licznik i to samo masz w jednym równaniu bez używania przecinków(to w baskomie działa bardzo wolno) a dlaczego akurat tak? No bo broty(np 1000) = 16,67imp/sek=imp co 0,06 sek...
....- 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...
Najpierw zamień godziny na minuty potem dodaj do tego minuty. Następnie trzeba sprawdzić czy minutyFull nie są przypadkiem mniejsze od minuty Start ( przypadek 23:00 -> 1:00 ). Wtedy przedział czasowy należy policzyć jako czas do północy + czas po północy. Podzielić uzyskany przedział czasowy na liczbę stopni sterowania PWM. Odliczanie czasu do Full...
Hmmmm, liczba o 16 znakach to dość nieprecyzyjne określenie :] Jeżeli chodzi Ci o przechowanie 16 cyfr, każdą z osobna, to oczywiście zwykły łańcuch tekstowy, czyli STRING (chyba tak to w bascomie sie zwie). Ale na stringach nie da się wykonywać operacji matematycznych na stringach (no dobra, da się, ale trzeba wszystko samemu od zera pisać :] ), operacje...
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,...
Przy wykonywaniu operacji arytmetycznych w Bascomie wszystkie zmienne powinny być tego samego typu (u mnie np. Long) jednak zajmuje to trochę RAMu, jedna zmienna to aż 4 bajty. Przedstawiam tutaj moje rozwiązanie podziału zmiennej na wyświetlacz 6 cyfrowy LED. 'globalne zmienne dla wyświetlacza 7seg Dim Cyfra1 As Long 'cyfra jednosci Dim Cyfra2 As Long...
1.Masz błąd w kodzie Zauważ, że jak czujnik wyśle wartość 100,200,300,400,505 to wszystkie diody się zapalą i tak zostanie. PORTC musisz zerować przed każdym zapaleniem diod, bo inaczej one nie zgasną dopóki W nie przyjmie wartości z zakresu 506..1023. 2.Lepiej gdyby kod był taki Do W=Getadc(5) Portc= &B00000000 //ustawiamy wszystkieg diody na 0 Portc.4=(W/512)...
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...
Antystatyk - co oznacza że nie działa? Skąd wiesz że nie działa? Testujesz to na procesorze czy w symulatorze bascoma? 1) wywal "Enable Timer2" ponieważ już w TIMSK aktywowałeś przerwanie 2) wstawiasz w przerwanie komendę PRINT (robisz sobie jaja) i twierdzisz że nie działa. A wiesz ile czasu zajmuje wykonanie się tego? 3) jeśli mimo wszystko testujesz...
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ż...
ok, tylko najpierw uporam się z przyciskami i nastawami :P Dodano po 28 $regfile = "m8def.dat" $crystal = 8000000 Config Portd = Output 'podłaczony wyświetlacz 'Config Pinb.0 = Output ' anoda 1 źle! nazwa pin służy do odczytu wartości 'Config Pinb.1 = Output 'anoda 2 źle! aby ustawić należy się posłużyć nazwą Portb.x 'Config Pinb.2 = Input...
Hehehe, jak już chcesz tak optymalizować to: if(liczba) wystarczy ;-D Jesli chodzi o sposob zapisu to masz 100% racji, ale kompilator dokladnie taki sam kod wygeneruje w obu przypadkach :) i to else break; też tak trochę jak na mój gust nadmiarowe jest... Nie jest nadmiarowy, gdyz bez niego petla bedzie mlocic indeksy dla zerowej wartosci liczby, a...
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...
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....
Witaj Kolego. No dobrze to kombinujesz. Podpowiem Ci jedynie jak możesz sobie to uprościć. Otóż powołaj sobie zmienną 16 bitową zamiast 2 8 bitowych w ARM to short w AVR to int i normalnie odwzoruj całość z czujnika następnie jak chcesz mieć dokładność do 0.5C to przemnóż całość przez 10. Pojawi się zapewne pytanie dlaczego pomnozyc przez 10 odpowiedz...
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ż)...
Jak mógł byś bliżej naświetlić i pomóc zrozumieć jak można by to zrobić był bym wdzięczy. Domyślam się iż chodzi tu o rozbicie odczytanego wyniku na dwie zmienne typu Byte lub Long. W pierwszej zmiennej mamy część całkowitą wyniku, a w drugiej część po przecinku. Można i tak. Można też wpakować cały wynik do zmiennej całkowitej tak, aby znajdowała...
Zrobić tak by wyświetlał część ułamkową Więc napisz to jasno w pierwszym poście. Program jest "bardzo bogato" komentowany, brak formatowania, wiec analiza jest "łatwa". W pętli głównej masz Dodano po 8 Zrobić tak by wyświetlał część ułamkową Użyj liczby zmiennoprzecinkowej albo odczytana temperaturę z DS16B20 wyświetl w dwóch etapach, część całkowitą...
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....
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......
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...
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...
Witam. W jaki sposób korzystasz z gotowych czcionek? Jak one są zapisane? W tabeli jakiejś, każda w oddzielnej zmiennej? i jaką instrukcją w Bascomie je odczytujesz? Ja podobnie jak Ty przeprogramowałem kontroler drukarki kasy Elzab mini E. Tam jest głowica 57mm 384 dot i tu również producent wszystkie sekcje połączył razem. Początkowo nawet nie próbowałem...
Obawiam się, że AT90S2313 nie jest tak ambitny jak Ty. Aby wyświetlić temperaturę z dokładnością do 0,1'C z DS 1820 trzeba przeprowadzić kilka obliczeń na odczytanych z czujnika bajtach 7 i 8 (a nie tylko na 1 i 2). Wymaga to operacji na liczbach zmiennoprzecinkowych (chyba, że ktoś się zaweźmie i spróbuje zrobić to na typie Integer). Takie kombinacje...
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)....
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...
dzielenie liczby dzielenie liczby 16bit dzielenie liczby przez
rejestrator pobór energia krzyżak bęben indesit nadawać 433mhz
silnik kohler teltonika konfiguracja
Niedziałający licznik kilometrów: przyczyny i diagnostyka Piec De Dietrich działa mimo programu P3 - przyczyny