Uważam, że moderator ... Działania moderatorskie wykonuję na czerwono za pomocą odpowiednich funkcjonalności. Niestety raz się zdarzyło że na czerwono wyciąłeś tekst o "niewygodnym" środowisku programistycznym :D Ale nie o tym będę pisał. Napiszę jak to wyglądało u mnie. Ja zaczynałem od BASCOMa. I to BASCOMa '51. Były artykuły w EdW. Nie miałem jeszcze...
Witam, na początku dodam że dopiero zaczynam z BASCOMem. Mój problem polega na tym iż po naciśnięciu przycisku nr1 chcę aby do zmiennej "Liczba" było dodane 1 czyli gdy zmienna liczba wynosi 0 to po naciśnięciu przycisku 1 wynosiła 1. Po przyciśnięciu przycisku nr 2 na odwrót czyli zęby było odejmowane. Wynik ma być wyświetlany na wyświetlaczu 7dmio...
Ldi R30, 28 Ldi R31, 78 Rcall _lcd_delay ; 20 ms delay at 4 MHz Witam, przedstawiony kod asemblerowy jest niezmiernie prosty w edytowaniu i zmienianiu parametrów instrukcji. Ldi - jak każdy wie, to ładowanie odpowiedniej wartości do rejestru Rcall - wywołanie programu. _lcd_delay: Sbiw R30,1 ;2 cycles Brne _lcd_delay ;2 cycles Ret Sbiw - instrukcja...
Nie mam do tego g.... już siły. Wierzę Ci bo mi się na to też już źle patrzy :P Można nauczyć podstaw języka, ale logicznego kombinowania nie zawsze... Dlaczego nie zrobisz tak, że kiedy przyciśnięto przycisk to dajesz mu, na przykład 10s do odliczenia. Kiedy Odliczy to się wyłączy. Chyba ze ktoś przyciśnie wcześniej przycisk to też się szybciej wyłączy....
Witam wszystkich Dzięki za szybką odpowiedź Faktycznie teraz dodaje i odejmuje mi 0,1, ale razem z jednościami Czyli teraz mam np. 12.0; 13.1; 14.2; 15.3 :cry: Co z tym zrobić ?
Łap. Voltomierz będzie działał stabilnie, ale wiedz, że Ty masz błąd logiczny w swoim kodzie. Pomysl. Jeśli u Ciebie "Steps" to zaokrąglone do całych poprzez Round "Angle" to jest to wartość ustalana przez napięcie czyli w pewnym momencie będzie stała. A tu zmienna "Kroki" jest porównywana z ta zmienną ""Steps", ale po porównaniu dodajesz lub odejmujesz...
czy program skladający się z poleceń bascoma i wstawek assemblerowych będzie zajmował mniej miejsca niż taki sam program napisany tylko w bascomie?? Będzie zajmował mniej miejca. Najwięcej możesz zaoszczędzisz zastępując pętle i IF-y a także dodawanie/odejmowanie na zmiennych dwubajtowych. Mnie się udawało zbić 20-30% kodu jak próbowałem się zmieścić...
Witam! Prosze szanownych znawcow tematu o vopinie odnosnie projektu termometru 2 liniowgo. Mam z nim duzy klopot, mianowicie kod zajmuje 3244 no i do 2 KB procka raczej do nie wbije. :( Prosze o pomoc i wszelkie wskazowki....Nadmieniam ze projekt jest zlepka kilku projektow termometru poniewaz nie mam doswiadczenia w 1wire Config 1wire = Portd.0 'konfiguracja...
Witam Szanownych Kolegow... Czy posiada ktos moze opracowana procedure dodawania liczb calkowitych (wprowadzanych z klawiatury) w Bascom? Liczby sa 2 cyfrowe. Poczatkowa liczba jest zero. jesli mam operacje dodawania, wynik jest zwiekszany i zapamietany, podobnie z odejmowaniem... Bardzo prosze o pomoc.
Witam ponownie po przerwie . I napisałem cały program w Asm (postanowiłem się sprawdzić i nauczyć czegoś nowego ) . Jego działanie jest identyczne jak w bascomie , ale countera 1 dalej nie udało mi się odpalić :/ Nadal wyrzuca zera . I tak samo jak w bascomie gdy wpisze dane na sztywno wszystko się wyświetla ( wynik co prawda różni się od tego jaki...
To jest tak: Nie robisz żadnych dzieleń- tylko dodawanie i odejmowanie- jak w księgowości. Bierzesz kredyt na 65535zł. Twoja początkowa wpłata na rzecz banku wynosi 64300zł. To masz do spłacenia 1235zł. Szybko spłacasz- co miesiąc 102.92zł. Ale jak Twoja początkowa wpłata wynosi 0zł- to spłacasz znacznie dłużej po 102.92zł. Tak działa licznik 16 bit....
Witam, Nie chciałem zaczynać nowego tematu o impulsatorze, więc się podpinam;) więc potrzebuję program do obsługi impulsatora, musi zliczać szybko impulsy, oraz działać poprawnie prawo(dodać impulsy)-lewo(odjąć impulsy). Po przeszukaniu wszystkiego co możliwe, po przestudiowaniu wszystkich programów dowiedziałem się że najszybciej działa na przerwaniach....
Zamotane do granic i bez sensu. Chodzi ci o to żeby po naciśnięciu przycisku odbywało się dodawanie wartości albo odejmowanie. Kolega napisał ci żeby poznać dobrze zasadę multipleksowania i to bardzo dobra rada. Ja z reguły nie motam tego tak tylko staram się to robić po kolei. Zobacz na ten kod : 'Opoznienie Ms = 6 ' PC - segmenty Led7 Alias Portb...
Witam Zastanawiam się nad programem, który miałby pozycjonować silnik krokowy unipolarny w Bascom. Silnik robi 200kroków na jeden obrót. Program miałby działać na takiej zasadzie: Najpierw ustawienia silnika w punkcie zero, później przyciśniecie danego przycisku miało by spowodować: przycisk 1 - silnik obraca się 4obroty w prawo od punktu zero przycisk...
Kod wydaje się sprawować prawidłowo. Przecinek jest względny. Operacje na zmiennych z przecinkiem są męczące dla mikrokontrolera. Jesli nie jest to konieczne to należy ich unikać. Zauważ że sam DS nie wysyła Single tylko Integer. Każda zmienna z jednym miejscem po przecinku pomnożona przez dziesięć da liczbę całkowitą. Tutaj przecinek jest "wirtualny"...
Zobacz sobie krótki opis Przeczytałem artykuł, rozumiem wszystko poza 2 sprawami. Mianowicie To dzielimy przez 100 i otrzymujemy wynik 78,125 . Od takiego wyniku odejmujemy jeszcze jeden i mamy gotową wartość jaką Timer musi odliczyć żeby zgłosić się 100 razy na sekundę. Dlaczego dzielimy przez 100 i dlaczego odejmujemy 1 ? Co robią polecenia [syntax=vbnet]Compare...
Po co tyle warunków? Czy GetADC() może zwrócić wartość <0? Nigdy, więc: warunek Jasność>0 jest niepotrzebny i tak samo kilka następnych. Inna sprawa, po co sprawdzać wszystkie warunki jeśli tylko jeden może być prawdziwy (no chyba, że zależy nam na zawsze możliwie równym czasie działania funkcji ale to nie w przypadku Bascoma chyba. Jeszcze dodatkowo...
Właśnie czytam o tych protokołach i wygląda na to że X/Ymodem będzie prościej zaimplementować od kermita i Zmodem. Tu jest trochę info jak wygląda transmisja [url=]LINK1.PDF , [url=]LINK2 , [url=]LINK3.PDF. Bascoma nie znam więc w kodze za bardzo ci nie pomogę ale jak znajdę jeszcze jakieś materiały to tu wrzucę . Myślę że powinieneś dać se rade z X/Ymodem...
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:)
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, Może takim sposobem, żeby ręcznie stworzyć bazę danych godzin i minut wschodów i zachodów (na oko na dzień mamy 4 bajty danych x 365 dni to daje 1,5k kodu, dość dużo wpisywania). Następnie bierzemy dany dzień roku (jest na to procedura w bascomie) i mnożymy x4 i odejmujemy 4, czyli Adres =( dzien_roku * 4 ) - 4, po czym wywołujemy od tego adresu...
Witam ,jestem początkujący w tej dziedzinie, posiadam program termostatu, niestety program nie porównuje temperatury, nie wiem w czym problem już zmieniałem porównanie wartości Us z T1, obecnie zmieniłem na Tmp, ale niestety nadal nic się zmieniło nadal na wyjściu układu czyli P3.2 jest stan "0" oto program napisany w Bascomie51": 'cyfrowy termostat...
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...
Dim Temp As Integer Dim C3 As Integer Dim Zmienna_temp(8) As Byte Config 1wire = P2.3 1wreset 1wwrite &HCC 1wwrite &H44 wait 1 1wreset 1wwrite &HCC 1wwrite &HBE Zmienna_temp(1) = 1wread(8) C3 = Zmienna_temp(1) And 1 If C3 = 1 Then Decr Zmienna_temp(1) Temp = Makeint(zmienna_temp(1) , Zmienna_temp(2))...
Jestem ponownie. Projeckt mam prawie ukonczony i mam jeszcze pytanka. To jest kod do termomertu na DS18B20 i zegarka. I teraz mam taki problem. Odczyt temp jest bardzo niestabilny. Cyfry po przecinku skacza tak o 2-3 jednostki. Raz jest 22.4 za sek 22.7 a za nastepna 22. 5 itp itp. Mam inny kod z forum ktory nie obsluguje temp ujemnych dla proby i tam...
Opis magistrali 1Wire masz w helpie. Poniżej kod na obsługę dallasa DS18B20. Config 1wire = P1.0 'konfiguracja magistrali 1wire Config Lcd = 16 * 1a 'konfiguracja wyswietlacza Deflcdchar 1 , 4 , 10 , 4 , 32 , 32 , 32 , 32 , 32 'znak stopnia Dim T1 As Single Dim T2 As Single Dim B1 As Byte , B2 As Byte , R As Byte Dim Tmp As String * 6 Dim Znak As String...
próbuje zrobic temomert z czujnikiem wilgotności. Odczyt temperatury jest dodkonywany z DS 18B20 $crystal = 16000000 $lib "mcsbyte.lbx" $regfile = "m16def.dat" $baud = 19200 Config 1wire = Porta.0 Deflcdchar 0 , 238 , 234 , 238 , 224 , 224 , 224 , 224 , 224 'definicja symbolu "stopień" Config Portd = Output Config Scl =...
Przepraszam ale w pierwszej wypowiedzi popełniłem błąd logiczny - oba przerwania powinny być ustawione na te same zbocze a nie różne. Dlaczego, bo tak jak napisałem wcześniej nie będzie można określić kierunku zmian, zawsze bedzie ta sama kolejność wywoływania przerwań. Obojętnie czy kręcimy w lewo czy w prawo. np. ChA narastanie 0->1 a ChB opadanie...
Witam. Tak jak pisałem powyżej w temacie. Problem jest z encoderem, tego typu, iż w jedną stronę ( dodatnią, gdy dodaje głośności ) działa "znośnie" dobrze, lecz w drugą, gdy kręcę ( szybko ) normalnie, dodaje 2 kroki, i odejmuje jeden, a kiedy powoli kręcę, to odejmuje cały czas, czyli działa normalnie. Jest to strasznie denerwujące. Właśnie wymieniłem...
Witammój problem polega na tym że podłączyłem do megi termometr i po wywołaniu tego kodu im T1 As Single Dim T2 As Single Dim B1 As Byte , B2 As Byte , R As Byte Dim Tmp As String * 6 Dim Znak As String * 1 Sub Temp 1wr 'podprogram 1wr 1wwrite &HCC 'komenda skip ROM 1wwrite &H33 'komenda convert T Waitms 250 Waitms 250 1wr 'podprogram 1wr 1wwrite &HCC...
Witam. Tak jak w temacie. $regfile = "m8def.dat" ' $crystal = 8000000 Config Pinb.1 = Output Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portd.4 , E = Portd.3 , Rs = Portd.2 'konfiguracja linii Config Timer0 = Timer , Prescale = 1024 Enable Interrupts : Enable Timer0 On Timer0 Co4ms Config...
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...
Ciąg dalszy bojów z tym kodem i jeżeli to możliwe prozba o dalszą pomoc. Wiec tak , obecnie podaję czas pracy silnika X1 oraz czas postoju T(klawiszami zwiększam albo zmniejszam parametry X1 oraz Y). Generalnie będzie to jeden z dwóch trybów pracy, drugi ma być z ciągłą regulacją płynną klawiszami UP i Down. O co teraz proszę - o pomoc w skonstruowaniu...
Witam. Mam prosty program zegarka-termometru na lcd 2x16 atmega8 i kawrcu zegarkowym. Proszę o sprawdzenie programu. Pozdrawiam sjzwojtek [syntax=basic4gl]$regfile = "m8def.DAT" $crystal = 4000000 Config 1wire = Portd.7 'konfiguracja magistrali 1wire Config Pind.5 = Input Config Pind.0 = Input Config Pind.2 = Input Config Pind.6 = Input Set Portd.5...
witam Mam problem z odczytem bloku DATA - chcę pętlą odczytywać id dsów i mierzyc temperaturę i tak dla 10 po kolei, problem w tym że już na początku jest coś nie tak z pierwszej linii data zamiast 28,18 odczytuje mi się 08,95 potem każde pierwsze 2 bajty to 2 ostatnie z poprzedniej linii. Oto fragment kodu [syntax=basic4gl] Odczyt_ds: 1wreset 1wwrite...
crystal/prescaler-1 W jakim celu odejmujesz od 62500 1 ? Chodzi Ci o jeden przebieg zegara ?
Do kolegi "KUNIARZ" Właśnie wgrałem sobie Twój programik i u mnie DS18B20 śmiga (mam 6 szt. - 5 nowych i jeden z przed 2-3 lat) (chociaż nie wiem dlaczego w Twoim programiku na wyświetlaczu cały czas mi text się przesuwa) Ale nie do tego zmierzam. A mianowicie wgrałem poniższy programik (taki mały termostacik) No i mam problem z czujnikami !!! ponieważ...
Witam, zaczynam "zabawę" z uC i programowaniem. Na pierwszy strzał chciałem zrobić prosty (tak na początku mi się wydawało) sterownik. Planowane opcje to: zegarek, termometr i obsługa 2-6 wyjść 230V. Wszystko chciałem stworzyć na atmedze8 ewentualnie 16. Założenia: - LCD na którym będą informacje prawdopodobnie będzie 4x20 - czas + ewentualnie data...
Da się i własnie na flagach timera powinno się to zrobić. Samo taktowanie obniżaniem wartości to nie wszystko. Dioda zapala się już przy bardzo małej wartości PWM i potem dokładanie jej czasu intensywność świecenia zmienia coraz mniej. Dlatego przy ściemnianiu mało się dzieje i potem nagle dioda szybko gaśnie. Chciałem wiec uzyskać taki efekt by im...
Może jakaś kawa by pomogła ;) Zastanówmy się co tu robimy A = 1000 A = A - 1 ..czyli A = 999... X = A czyli X = 999 i dzielimy je przez tysiąc tak? T = X / 1000 ...hmm jeśli T nie jest typu Single to 999/1000 to 0 Teraz mnożymy Zero razy tysiąc tak? Wynik = 0 Odejmujemy od 999 zero tak? Potem.. Y = T * 1000 S znowu równa się 999 / 100 ..czyli 9 Z =...
Witam, potrzebuję 2 funkcje w 1 przycisku. Długie przytrzymanie (5sekund) Sw powoduje zmianę dla D1 i D2 oraz działanie krótkich impulsów Sw, które wywołują miganie D3 (klik Sw - 1 mignięcie, klik Sw - 2 mignięcia, klik Sw - 3 mignięcia, klik Sw - 4 mignięcia, klik Sw - 5 mignięć i od nowa) długie przytrzymanie (5sekund) powoduje wyjście z krótkich...
(zmieniłeś post zanim odpisałem więc mój może być trochę nieaktualny) Hahaha z jednej strony racja i czasem się najprostszych spraw nie widzi Tak naprawdę to ASC odejmuje tylko od reprezentacji znaku 48 W sumie wiec można by odejmować od razu 48 i 32 :D Chciałbym jedynie dopisać że te wyliczenia Const robi komputer/kompilator i sa one już jako gotowe...
Witam, potrzebuję zrobić "prosty" programik w bascomie liczący ilość kliknięć switcha. Układ ma dwa przyciski. Jeden ma dodawać +1 do całości, drugi musi odejmować -1 od całości. Zakres 0 - 99. Wszystko chcę by było wyświetlana na wyświetlaczu 7segmentowym na dwóch cyfrach. Na schemacie nie ma podłączonych pinów ponieważ nie wiem czy warto wstawić jakiś...
Witam. W jaki sposób można w kompilatorze Bascom zapisywać w jednej linii więcej niż 2 operacje matematyczne - tj. dodawanie, odejmowanie, iloczyn 2 zmiennych itp.. Bo mam złożone działania, a dzielenie tego na poszczególne kroki mające za każdym razem tylko 2 zmienne które przykładowo mnożę jest bardzo uciążliwe i muszę stosować dodatkowe zmienne pomocnicze......
Witam, zacząłem pisać w programie BASCOM, jednak jestem w tym zupełnie zielony oprócz podstawowych komend. Do rzeczy: mam program z impulsatora i potrzebuję go zmodyfikować tak żeby powstał z niego pięciopasmowy equalizer na układzie scalonym TDA7317, czy jest jakiś prosty sposób aby tak to skonstruować? Program potencjometr: [syntax=basic4gl]Dim Licz...
Nie ma już czasem biblioteki do tego LCD na forum MCS? Co do obsługi tej linii przez kod to to chyba nie jest skomplikowane. Ten sub wygląda jakby był stworzony do rysowania linii różnie położonych czyli na przykład przekątnych. Jako parametry przekazujesz X i Y startu, potem X i Y ostatniego piksela linii no i kolor. Problem zaczyna się w miejscu gdzie...
Witam Mam pytanie w sprawie odczytu. Program ogólnie mi działa odczyty są w miarę fajne tylko nie wiem z skąd są te wartości, by mi zależało na tym. V = V - 0.5 V = V / 0.01 Znalazłem na stronce z arduino, ale nic nie opisali za bardzo z kad wzieli te wartości. Czujnik daje 10mV na 1stopien, przy 0 stopni ma 500mV. owszem zamiast 0.0049 dałem 0.0046...
Witam. Zna ktoś rozwiązanie jak ugryźć temat przesyłania danych taką trasą: PC <-RS232-> AVR <-RS232-> Układ docelowy Komputer i urządzenie docelowe mają ze sobą rozmawiać dwukierunkowo, AVR ma być pośrednikiem transmisji oraz dodawać / odejmować swoje dane kontrolne. Obie transmisje muszą być buforowane. Jakie znacie procki które spełnią...
Licznik taki można też zrealizować tanim kosztem na module ze starego tunera sat - kwestia napisania programu, np. w C lub Bascom (dla początkujących i niezbyt wymagających zajmujących się programowaniem okazjonalnie to dobry prosty język). Zobacz przykład wykorzystania
Pytałeś o różnicę między Reset a "= 0" więc.. Co do Timera to w Bascom jest komenda ułatwiająca jego ładowanie. Nie trzeba odejmować na piechotę. Przy Presc=8 wpisujesz Load Timer1 , 1500 Przy Presc=1 Load Timer1 , 12000 i powinno być 1kHz bo z 12000_000Hz zostają trzy zera i można to policzyć w głowie, albo na palcach :D Kompilator sam to sobie odejmie...
pewnie da sie to zrobic wstawka asemblerowa, ale ja bym to zrobil tak: dim a as single dim x as byte a=12.132 dim tekst as string *10 Tekst = Fusing(a , #) x = Val(tekst) a=a-x a=a*100 tekst=fusing(a,#) x=val(tekst) 'i masz po przecinku Jesli cos nie pokrecilem to tak (niesprawdzalem tego), IDEA jest taka: zamieniasz liczbe single na byte od single...
z tym się nie zgodzę ustawiam je na 1 a drugim końcem są podłączone do masy jeśli go naciskam wtedy pin zwiera się do 0 o procek widzi to jako zero dopiero wtedy dodawanie i odejmowanie wartości P I tymi przyciskami działa prawidłowo (no czasem potrafi dodać np 5 odrazu, ale to nie problem) więc na początek myślę że nie w tym tkwi problem no chyba że...
Witam. 1)Jeśli to urządzonko ma zliczać "do tyłu" , po co te kombinacje z dodawaniem i "odwracaniem" wyświetlanych cyfr :?: 2)uC potrafią też odejmować :wink: 3)Nie powinieneś zatrzymywać Timer0 , bo przestanie odświeżać wyświetlacze. Napisz dokładnie co chcesz osiągnąć. Pozdrawiam Piotrek Sz.
Coś znalazłem jest w kodzie obliczanie pozycji: Sta = B1 * 15 Sto = Sta + 14 Pozycja = Licznik2 - 6 B = Pozycja * 15 Licznik 2 zaczyna liczyć od 6 więc 6-6 *15 = 0 a w procedurze wyświetlającej następuje odejmowanie od b liczny jeden w każdym odświeżeniu więc zamiast ciągu 15,14,13,12... mam 255,254,253,252... i podejrzewam że to jest powodem wariowania...
na wejścia podłączony jest enkoder(pierwszy zrobiłem z myszki komputerowej) w zależności na którym wejsciu pojawi się pierwszy impuls to przerwanie jest obsługiwane jako pierwsze . może cos z tego skorzystasz. obsługa przerwań jest na dole Dodawanie: i Odejmowanie:. Ale Panowie litości w krytyce to jest mój pierwszy program w Bascomie. Tak się złożyło...
Witam i dziękuję za pomoc. Nie mam żadnego doświadczenia w pisaniu programów,chcę zrobić licznik zliczający od 9999 do 0 w dół i wgórę, procek to attiny2313,czy zlicznie zrobić poprzez zadeklarowanie zmiennej i do niej dodawać lub odejmować impulsy zliczane z wejścia procka?, w jaki sposób używając podanych wcześniej programów obsługi 74ls164 wyprowadzić...
Fajny pomysł Samuraj :) Mam też małe usprawnienie, teraz musisz przy odczycie znaku np 100 zsumować 100 danych zeby otrzymać początek znaku. Ja proponyje zamiast długości znaku, zapisać początek znaku i wtedy odczytujemy poczatek znaku 100 i 101 odejmujemy dana 100 od 101 i mamy dlugosc znaku. Dane_znakow: Data 124 , 254 , 130 , 134 , 255 , 125 , 'litera...
efekt peaks tak najwyższa dioda opada powoli. szło przełaczaś że był tylko peaks, peaks + słupek i tylko słupek ale to tylko wyświetlanie danych. co do wartości ujenych to fragmęt kodu Poziom = 0 For K = 1 To 32 Sample(k) = Sample(k) / 2 Poziom = Poziom + Sample(k) Next K Poziom = Poziom \ 32 For K = 1 To 32 Dane(k) =...
No widzę, że ktoś nie uważał na lekcji matematyki ;) Sposobów jest mnóstwo ... można dodawać, odejmować wielokrotności (potęgi) dwójki, można stosować operacje logiczne and, or, xor .... wszystko zalezy co chcesz osiągnąć lub jak szybko ma to działać.
...Mozesz sprobowac wykorzystac dodatkowo - jako uklad posredniczacy miedzy np enkoderem ,a uC jakis licznik... Jeden 7400 ustalający czy dodajemy czy odejmujemy, oraz cztery 74193 pozwalają Ci zliczyć dwubajtową wartość. Jeśli do tego dodasz nastawniki BCD, to możesz jeszcze kożystać z sygnału resetującego licznik z enkodera - będzie wtedy liczył...
taki uklad powinienes zbudowac podobnie jak serwo modelarskie moze sa jakies gotowce , czy na pewno chcesz to budowac na mikrokontrolerze? W wersji nieprogramowalnej to kazdy np poczatek impulsu wyzwala 2 monowibratory jeden dodajacy obroty drugi odejmujacy, impulsy sa porownywane(odejmowane) i to co zostaje-reszta kreci silnikiem zwiekszajac lub zminiejszajac...
No i jeszcze zamienić, gdy z odejmowania wyjdzie liczba ujemna (z poprzedniej doby).
Cześć Oczywiście że nie lepiej mierzyć osobno i odejmować, ale to osobna bajka. Do pomiaru różnicowego musisz jeszcze podać z jakim wzmocnieniem chcesz mierzyć i dla tego wzmocnienia określasz Mux Binarnie to będzie : 10000 dla x1 01001 dla x10 01010 dla x200 Tą liczbę wstawiasz do Getadc( .. ) czyli dla wzmocnienia x1 wstawiasz 16 Oczywiscie musisz...
Wiem że wewnętrzny oscylator ma odchyły ale że aż takie?? Ładuje dobrą liczbę do timera ponieważ ładuję ją poleceniem Load a to polecenie odejmuje tą liczbę od 255 i ładuje ją do timera do tego gdybym do timera ładował za małą liczbe to na pewno by nie spóźniał. Może to zatrzymywanie timera coś da. Dziwi mnie że zegar spóźnia, nigdy nie chodzi za szybko....
1) Przenieś obsługę wyświetlania do przerwania, inaczej wyświetlacz będzie zmieniał jasność w stosunku do tego jak długo będzie wykonywała się główna pętla. 2) Stwórz tablice w której kolejnym pozycjom odpowiadają kombinacje bitów zapalające dane cyfry. Tzn. po kolei kombinacja dla 0 potem dla 1 itd. Ułatwi to konwersję cyfry na kombinację bitów które...
Przecież JmL(TM) dość szczegółowo ci napisał jak to wykonać. Chyba że liczysz na gotowca, jeśli tak to nie tędy droga. Zrób sobie zmienną i w niej zapamiętaj wynik pomiaru. Przy kolejnym odczycie od tej zmiennej odejmij aktualną temperaturę: - jeśli wynik tej operacji będzie ujemny to temperatura spadła i strzałka w dół. - jeśli wynik równy jest 0 to...
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.
proszę o pomoc jestem totalnie początkującym i robię sterownik do swiateł jestem na etapie pisania programu a dokładnie wyboru programu z menu mam coś takiego i działa ale tylko na jeden przycisk i dodaje mi wartość +1 ale chce żeby drugim przyciskiem odejmować Do If Pinb.5 = 0 Then Waitms 100 If Pinb.5 = 0 Then A = A + 1 If A > 4 Then A = 1 End...
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][/youtube] 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. Odejmować reszty z tych dzieleń. Tylko czy...
Prawieprzewodnika wymieniłem dwie godziny temu. Katowałem go wrzątkiem, wszystko okazało się w porząsiu. Przy okazji poprawiłem kilka byków w programie. Układ działa rewelacyjnie! :D Z mojej strony temat zakończony, dziękuję za wszystkie wpisy :) PS. Na odsprzęganie zasilania jestem wyczulony - praktyka z układów lampowych. Lecz na te 100nF w życiu...
Dzięki kolego ale mnie zaćmiło że polecenie nest niekompletne program działa. I jest w zakresie 1-255 Muszę tylko jeszcze zrobić że: Np I min=1 i jak odejmuje to aby nie wskakiwało na 255 możesz mnie naprowadzić??? Przed odjeciem od "I" wprowadz warunek, sprawdzaj czy "I" jest minimalne , jezeli nie to pozwol odjac ,jezeli tak to nic nie rob albo daj...
Witam, Nie twierdź, że czegoś nie ma w internecie skoro tego nie znalazłeś. Dam Ci podpowiedź jak to policzyć: - musisz wyznaczyć ile w każdym miesiącu jest dni (31, 28/29, 31, 30 itd.) - musisz znać dzień 1 stycznia (np. czwartek) i określić ilość dni od 1 stycznia do najbliższej niedzieli. Jeśli ilość dni jest mniejsza od 4 to ten tydzień zalicza...
Dobrze nawet zrozumiales z tym znakiem. ale jesli temperatura jest ujemna to negujesz calosc i odejmujesz 1 zeby miec poprawna temperature (potem dzielisz na 16). i tyle filozofii.. a swoją drogą nie masz zamrazalnika? wez kostke lodu i sprawdz.... ;]
Początkową wartość Timera1 liczymy: Częstotliwość / preskaler i wynik odejmujemy od 65536 (bo timer1 liczy do tylu) czyli 16000000 / 1024 daje 15625 65536 - 15625 = 49911 I tą wartość ładujemy do timera1 A gdzie ty to wynalazles ze Timer1 "liczy do tylu" ? e marcus Tam nie jest napisane "do tyłu" tylko "do tylu" czyli do 65536. A swoją drogą dokładniejszy...
Jeżeli odczytujesz dane binarnie to można sobie darować to odejmowanie wartości 32. Tyle że wszystkie obrazki trzeba będzie jeszcze raz zakodować na kompie bez dodawania tej liczby 32.
Ok po kolei, wywalam wszystko z programu, zostawiam tylko sterowanie IR i dopisuję obsługę przerwania INT1 wyzwalanego zboczem FALLING, w przerwaniu dodaje lub odejmuje jeden od zmiennej "impulsy" zależnie od zmiennej "ścisk" zmienna impulsy jest zwiększana o kilkanaście a nie tylko o jeden $regfile = "m8def.dat" $crystal = 8000000 Config...
Witam ponownie. Mam już wykonany program do pomiaru przyspieszeni, niestety mam spory problem z obliczeniem z tego prędkości. Próbowałem odczytywać wartość z przetwornika ADC co pół sekundy (16000000/256/500/125 = 1, a dla 63 to dwa razy na sekunde) i do tego wykorzystałem: $crystal = 16000000 ... Config Adc = Single , Prescaler = Auto , Reference =...
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;
Witam. Buduje ładowarkę a właściwie sterownik ładowarki. Cośjest nie tak ponieważ gdy wrzuce kod : $regfile = "m8def.dat" 'procesor mega 8 $crystal = 8000000 '8mhz '''Zmienne Dim Wart_ac As Word Dim V As Single Dim Wart_nap As String * 3 Dim Wart_prad As String * 3 Dim M As Byte Dim G As Byte Dim Mt As Word Dim Laduj As Bit Dim Reload As Word...
Co prawda ten przykład co podam poniżej dotyczy liczenia sekundy, ale nic nie stoi na przeszkodzie przerobić kod wg swoich potrzeb. Generalnie przy 8 mhz i preskalerze 256 timer zlicza 31250 na sekundę. Czyli w przyblizeniu 31 na milisekundę. Odejmując jedną próbkę od drugiej otrzymamy czas pomiaru. Polecam zastosować timer w trybie CTC jaki podał mi...
Z bascomem zacząłem jakiś miesiąc temu, w C zacznę programować jak jeszcze trochę poduczę się bascoma (już zacząłem, to skończę). Napisałem taki program: $regfile = "m8def.dat" $crystal = 1000000 Config Portb = Input Config Portd = Output Config Portb.0 = 1 Config Portb.1 = 1 Config Portb.2 = 1 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.3...
Te oporniki są niepotrzebne- każdy ULN ma oporniki 2.7k-10k na wejściu. A silnik sprawdzasz tak jak napisałeś- tylko potrzebny jest zasilacz regulowany. No i znaleźć pojedynczą cewkę a nie dwie w szereg. Najpierw zwierasz przewody z miernika i włączasz omomierz na najniższym zakresie. Coś pokaże- to będzie oporność przewodów i styków. A potem mierzysz...
Oversampling poprawia rozdzielczosc ze wzgledu na szum (wszechobecny) ktory dziala jak dither - jednak potrzebne sa duze wspolczynniki oversamplingu by zobaczyc "efekt" - znacznie efektywniej problem mozna rozwiazac ten problem dodajac do probkowanego sygnalu dodatkowy "szum" tyle ze o wiekszej amplitudzie niz normalny - wszechobecny szum - np szum...
Użyj wejścia ICP - wtedy zbocze zgłasza przerwanie i jednocześnie zatrzaskiwana jest zawartość timera. Odejmując dwie takie wartości masz długość impulsu, musisz jedynie zmieniać zbocze, na które reaguje ICP.
Tak, będziesz mógł. Jeśli chcesz liczyć w czasie (a nie chcesz) to mierzony przebieg doprowadzasz do wejścia zegarowego timera, w efekcie każdy impuls powoduje zwiększenie wartości licznika o jeden. Skoro chcesz mierzyć szerokość impulsu to wykorzystujesz wejście ICP timera - timer taktujesz z maksymalną częstotliwością, z kolei impulsy z obrotomierza...
Naprawdę nikt nie jest w stanie nic pomoc ? Miało by to mniej więcej wyglądać tak: -sygnał podawany na ICP ma postać kwadratową -zbocze opadające powoduje zapis wartości timera do rejestru sprzętowego -odejmując kolejne wartości rejestru od siebie uzyskuję czas jaki upłynął między impulsami -obliczając odpowiednio czas uzyskuję ilość impulsów na minutę
Tak jak kolega wyżej pisał: Masz dwie zmienne ze znakiem (w bascomie to chyba integer) kierunek oraz gaz. Do pierwszej przypisujesz wartość kierunku a do drugiej przyśpieszenia. Od obu odejmujesz 150. Kierunek mnożysz przez 2. Wartość pwm dla lewego silnika to gaz-kierunek+127 a dla prawego gaz+kierunek+127. Nie wyciągniesz tak maksymalnej prędkości...
Sygnał podaję na nóżkę PORTD.6, mam go skonfigurowanego tak: [syntax=basic4gl]Config Portd.6 = Input[/syntax] Timer konfiguruje jako timer, ponieważ chcę mierzyć czas trwania zbocza: -konfiguruję za zbocze opadające -przepisuję wartość timer1 do zmiennej A -przełączam na zbocze narastające -przepisuję wartość timer1 do zmiennej B -od zmiennej B odejmuję...
Samo wykorzystanie M32 do minutnika jajek jest już nieekonomiczne, ale zakładam, że taki masz procesor na stanie. Po pierwszej nie używaj takich warunków... Jak rozwiązujecie sprawę migania dwukropka? Ja zazwyczaj dwukropek też robię w multipleksie (gdy nie mam wolnych pinów uP) łącząc go z pinem sterującym kropką wyświetlaczy i włączam podczas wyświetlania...
Zapomniałem o pull up, już poprawiam! Dodano po 6 Ostateczne wygląd ćwiczenia wygląda następująco: Dodano po 1 Teraz mam regulację jasności świecenia diody, zapomniałem napisać. Konfiguracja portu C pomogła. Dodano po 25 Teraz mam następujący kod: [syntax=basic4gl] $regfile = "m32def.dat" $crystal = 8000000 Ddrc = &B00000000 Portc = &B11111111...
Nie wiem czemu piszesz żeby odejmować od 65535 Zastanów się chwilę jeszcze nad tym, co trzeba odejmować od 65535, jak jak to obliczam (nie korzystam z żadnych podpowiedzi, tylko używam własnej głowy) - przejrzyj moje wcześniejsze wpisy i powinno być to już jasne.
Jak dla mnie to przekombinowane, raczej trudno będzie zapanować nad w miarę stabilną częstotliwością. Masz racje..sprawdziłem to właśnie w praktyce...nie dość, że obliczanie nowych (po przepełnieniu timera1) wartości OCR1x trwa trochę, to częstotliwość nie jest stabilna i niedokładna z obliczeniami. A obliczanie i odejmowanie jakichś wartości wynikłych...
To pozostaje ci podkalibrować się rejestrem OSCCAL trochę w górę lub trochę w dół. Przeglądając fusebity masz tam tez wgląd w bajt kalibracji RC dla 8MHz. Przed włączeniem przerwań wpisz OSCCAL = ileśtam Odczytaj sobie ile wynosi ten bajt dla 8MHz i dodawaj, odejmuj po 1 i testuj jak to działa. Najprościej byłoby odczytać wartość TCNT0 po wystąpieniu...
1 - doprowadź sygnały z czujników do trzech wejść jednego z portów 2- każdy z tych sygnałów doprowadź do wejścia przerwania INT0 ( odseparowane diodami lub przez transoptory np. CNY-17 ) Każde pojawienie się impulsu na jednym z wejść wyzwoli przerwanie INT0 W obsłudze przerwania sprawdzasz stan wejść i porównujesz z poprzednim stanem W zależności od...
Tak się składa, że pokusiłem się 2 lata temu o sterownik kotła CO. Zadanie jakie miał spełnić to ograniczenie szybkości dopływu powietrza do kotła aby wydłużyć czas oddawania ciepła przez spaliny w wymienniku. Mój sterownik dopuszcza utrzymanie temperatury kotła w granicach 11°C. W tym przedziale dysponuje pięcioma szybkościami obrotowymi wentylatora...
Tzn, menu główne ma się zawierać w case 1, 2, 3 zgadza się. Naciskając OK dodaję do zmiennej menu 10, czyli przechodzę na podmenu MANUAL czyli case 11, 12, 13, 14. Teraz w zależności, który case jest wybrany (przypuśćmy 11) to aby przejść niżej przyciskam DOL dodaję do zmiennej 1 i przechodzę do case 12. Aby przejść wyżej przyciskam GORA dodaję do zmiennej...
Witam mam problem z programem do trawiarki mianowicie znalazłem na necie program do sterowania trawiarką chciałem do tego dopisać wybór menu żeby było jeszcze był drugi tryb sterowania trawiarką. Wgrałem program do uC i działało poprawnie potem chciałem wgrać ten sam program bez żadnych zmian na inna ATmege8 i okazuje się że teraz program działa trochę...
A i B są poprawne :) Odnośnie jeszcze punku B. Powinieneś mierzyć szerokość impuslu, czyli czas od zbocza narastającego do opadającego. Ponieważ ATMega tego nie potrafi robić całkowicie sprzętowo, więc zostaje punkt A. Szerokość sprzętowo może mierzyć dopiero XMEGA. Można też czasy pomiędzy kolejnymi zboczami opadającymi, ale wtedy trzeba zadbać o to,...
Piszę tutaj, bo jestem już zdesperowany. Jak patrzę na układ podpięty do programatora, to aż mi już się niemiło robi. Ale do rzeczy i od początku. Znalazłem w sieci taki kod: [syntax=basic4gl] Dim Pll As Single Dim Fset As Word Dim Dane As Byte Dim A As Single [...] Nastaw: Pll = A I2cinit I2cstart I2cwbyte &HC0 Pll = Pll * 100000 Pll = Pll + 225000...
Witam serdecznie Mam pewien dylemat, problem Sprawa dotyczy Bascoma Mam Encoder 360 imp / 360 st wyjścia A, a oraz B , b (A i B stan wysoki oraz a i b stan niski) Między A i B jest przesunięcie impulsu o 50% do zliczania impulsów poszły 1 liczniki INT0 oraz INT1 Wszystko zlicza szybko itd Problem dotyczy rozwiązania a żeby bez zaprzęgania jakiejkolwiek...