Albo z drugiej strony: wprowadzasz dodatkową zmienną przechowującą wartość aktualnego czasu w minutach (niestety potrzebna będzie zmienna typu word), podobnie czas załączenia - oczywiście przeliczanie to tylko x = Godz * 60 x = x + Min Pozostaje jedynie porównać obie zmienne.
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...
Coś w ten deseń chociaż żeby to przetłumaczyć toczka w toczkę to najlepiej by było użyć Config Base = 0. Wtedy tablice mogą się zaczynać od indeksu zero czyli można by wpisywać do Delays(0) - Delays(Steps-1) a tak tego nie masz. Tutaj może nawet nie jest potrzebny warunek If I > 1 bo to chyba w Arduino jest po to by nie było mnożenia I * 4 + 1 bo...
Załóżmy że chcesz uzyskać 100Hz. Procesor kreci się na przykład 8MHz. Timer napędzany jest sygnałem takim jak procesor, ale można ten sygnał podzielić tak żeby, na przykład co 1024 takty procesora do Timera trafiał jeden takt. Taki podział uzyskuje się za pomoca preskalera. Teraz wiadomo że Timer jest już taktowany wolniej bo co 1024 takty z 8MHz, ale...
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...
Problemy: 1)Nie wiem czy tak ma być, ale nie ustawiłeś na PortB.1 stanu wysokiego, aby podciągnąć złącze. 2)Źle zagnieżdżone IFy. Powinno być: [syntax=basic4gl]Do If Pinb.1 = 0 Then Waitms 20 L = L + 1 If L = 3 Then Set Portb.2 End If If L = 6 Then Reset Portb.2 L = 0 End If End If Loop [/syntax]
może zrób to na przerwaniach .,Jedno obsługiwało by dodawanie drugie odejmowanie
http://obrazki.elektroda.net/84_11998286... Witam! Kolejnym układem, którym zamierzam się Wam tu "pochwalić" jest miniaturowa stacja meteo.. Kilka projektów, które widziałem na elektrodzie nie były żadnymi stacjami tylko termometrami ;) Moja, choć prosta mierzy jeszcze ciśnienie oraz wilgotność względną powietrza. Układ oparty jest na procesorze...
Czym mniejsze zmienne tym szybciej działa program , jak są 8 bitowe to super bo każde dodawanie , odejmowanie mnożenie to 1clk . tego tyczyła się dygresja "na marginesie" Ahahaha :D Co do tej konwersji to jest ona dokonywana w zarezerwowanej ramce której wielkość jest określana parametrem $framesize. Z ramki korzysta wiele wbudowanych funkcji i dlatego...
Czysto informacyjnie - licznik domyślnie liczy w górę, stad odejmowanie wartości CTC(właściwa wartość do odliczenia przez licznik) od 65535. PS: LordBlick czyli w końcu twierdzisz (nie używam CTC),że powinna być wartość 49910? Nie twierdzę nic w tej kwestii, ponieważ obsługa tego przerwania w Bascom nie jest dokładna i nie nadaje się do odliczania sekund...
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...
W tym subie co jedną sekundę masz odejmowanie od jedności sekund ale żadnego wiecej warunku wiec.. masz sec 0 i potem 255. Zobacz co się stanie jak trochę pomodzisz :P [syntax=basic4gl] Dim 1sec As Byte Do If 1sec = 1 Then 1sec = 0 Jesli liczymy w dół Then Gosub Zmniejsz Else Gosub Zwieksz End If Jesli End if 'end if 1sec Loop End Co1s: Counter1 = Counter1...
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...
Deklarujesz zmienną czas jako integer i wszędzie dajesz waitms czas. Teraz deklarujesz np. zmienną poz_czas - będzie ona posiadała wartości np. 1-10. Piszesz obslugę tych przycisków (tak jak dla góra/dół), tylko umieś je w odpowiednim miejscu kodu (my go całego nie widzimy). W instrukcjach warunkowych dla przycisków obsługujących czas daj Incr poc_czas...
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...
Dzień dobry, Popełniłem prosty programik na ATtiny2313. Przy naciśnięciu któregoś z guzików (Pind.0 lub Pind.1), zmienia się wartość rejestru Pwm1a - porównywanie ze stanem timera1. Dzięki temu uzyskujemy efekt rampy i rosnącą częstotliwość na wyjściu. Niestety program działa o tyle dziwnie, że czasami się zacina - tzn czasami zmiana częstotliwości...
Witam. Przeszukałem dokładnie internet i nie znalazłem podobnego przykładu stąd zapytanie. Czy może ktoś podpowiedziec jak napisać obliczenia na zmiennych ? Mam zadanie napisać listing i zaprogramować procka , który będzie mierzył ile impulsów z timer1 mieści się w przerwaniu INT1 , tzn. kiedy INT1 =1 wtedy ile w tym czasie impulsów zliczy Timer1. Licznik...
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ż...
Jeśli chcesz to możesz zmienić program na pc choć to odejmowanie 32 jakoś dużo czasu nie zabiera.
Np. W helpie do Bascoma.
Czyli masz już w systemie przerwania zgłaszane ze stałą częstotliwością, zapewne na poziomie przynajmniej kilkuset Hz. Oznaczamy tę częstotliwość jako f. Mamy zmienną a - długą i całkowitą. Inicjujemy ją na 0. W każdym przerwaniu timera: - Dodajesz do tej zmiennej liczbę kroków na 10 s (czyli od 1 do 99) - Jeśli wartość tej zmiennej przekroczy 10*f,...
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...
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.
Nie opanowałeś nawet poprawnego podłączenia diodek LED do procesora :D Jak myślisz, jak często do wartości PWM'a będzie dodawane 10 lub odejmowane 10?
Wszystko gra tylko co zrobic żeby przyciskiem S2 odejmowac?
Na naciśniecie przycisku robisz żeby jakiejś zmiennej przypisał (w momencie jego naciśnięcia) odczytaną wartość z przetwornika a później za każdym razem od aktualnego odczytu odejmujesz wartość tej zmiennej. Poza tym nie ma raczej sensu w przerwaniu od przycisku (czy w jakimkolwiek innym sposobie odczytu stanu przycisku) robić ponownego odczytu przetwornika....
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...
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 mowie o Twoim wpisie, tylko ogólnie - jak postrzegam rozwiązywanie problemów na tym forum. Ktoś o coś zapytał? Ok, więc zajmujemy się wszystkim innym, byle nie tym o co autor pyta. 3, 2, 1 start! :) Wracając do ukladu: Jest to stan zastany i próba dorobienia do tego płynnego migania Led (rozjazsnianie/ściemnianie, ale nie 1/-1 tylko np kiedy jedna...
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...
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,...
Może kiedyś zaczniesz myśleć "inaczej" :D Jak zrobisz tak to program utknie tutaj na 128ms aż petla się wykona co nie? [syntax=vbnet]Do If Audio = 1 Then For R = 255 To 0 Step -2 Waitms 1 Next R R = 0 End If Loop End[/syntax] Teraz zobacz ciut inne podejście do tematu [syntax=vbnet]Do If Audio = 1 Then If R = 0 Then R = 254 'wartosc zostanie nadana...
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:)
Nie wiem czy odbierasz tam jakieś komendy. Wywal te Wait`y. Tutaj po zmianie stanu do zmiennej Blokada zostanie wpisana wartość do odliczenia w dół. Jeśli nastąpi następne przerwanie to w zależności od tego czy minął już czas blokady, to albo zostanie przedłużony jej czas bo ktoś trzyma przycisk dłużej albo.. :D [syntax=basic4gl]Dim Blokada As Word...
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...
"attiny13.dat" $hwstack = 32 $swstack = 18 $framesize = 8 ' tiny13 Dlaczego na samym wstępie wyrzuca mi błąd w liniach: Pwm1a = 0 Pwm1a = 0 Pwm1a = 255 czy nie można przypisać stałej wartości dla Pwm1a? Kolejne błędy są również powiązane z pwm1a. Oczywiście że możne jeżeli taka funkcja jest dostępna. ATtiny13 takowej nie posiada bo nie ma Timera1,...
Adres juz mam, ale nie chce sie dać wysterowac, chodzi mi o sterowanie jednym potencjometrem albo następnym, dokładnie chciałbym się dowiedzieć jak wygląda kawałek kodu który wybiera potencjometr i dodaje wartość lub odejmuje.
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...
Ok, no powiedzmy, że dociera. Jedno pytanie jeszcze: Masz użyte zmienne Wlacz_zima i Wylacz zima, które trzeba zadeklarować osobno, a czy nie lepiej zadeklarować je w podprogramie, bo zdaje się, że nie są potrzebne poza tym podprogramem? A "zwracana-odliczana" jest wartość zmiennej Zima_lato na podstawie której dodajemy lub odejmujemy godziny np z GPS...
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ć???
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.
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......
http://www.nalanda.nitc.ac.in/industry/a... http://class.ece.iastate.edu/vlsi2/docs/... http://www.freepatentsonline.com/4447803... Oversampling poprawia rozdzielczosc ze wzgledu na szum (wszechobecny) ktory dziala jak dither - jednak potrzebne sa duze wspolczynniki oversamplingu by zobaczyc...
(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...
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 https://www.elektroda.pl/rtvforum/topic3...
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
Pomysł jest straszny. Poczytaj o timerach. :D No dobra, ale w tym przypadku timer ma zliczać impulsy i ilość tych impulsów dodawać lub odejmować od zmiennej? I czy do tego wystarczy jeden timer, czy dwa (do dodawania jeden i do odejmowania jeden)?
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ć ?
Witam wszystkich i mam pytanie czy ktoś zajmował się licznikiem do CNC . Chodzi mi o zliczanie kroków jakie wykonuje silnik krokowy sterowany sygnałami STEP/DIR . chciałbym aby licznik liczył w obie strony czyli dodając lub odejmując . Ważna była by możliwość wprowadzania przelicznika przekładni silnik/śruba napędowa . Oczywiście proszę o pomoc w napisaniu...
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...
Program do czujnika temp ds18b20 ktory mierzy z dokladnoscia dwoch miejsc po przecinku. Sprawdzony ale tak jak juz koledzy mowili wyniki po przecinku bardzo czesto skacza Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32 Config Pind.7 = Output Config Pind.4 = Output Config Pind.5 = Output Config Pina.6 = Output Config Pina.7 = Output Set Portb.0 Set...
Witam Ogólnie zmienna Zx jest większa od 255, ale nie większa od 350, i po to odejmuje od niej 100, aby "zmieściła" się w Byte. Nawet jak Zx jest mniejsza od 255, to i tak dzieje się to samo. Pozdro
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ć.
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. 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....
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.
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ę
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;
Dodajesz jeden warunek przed decr by wykonać zmniejszenie o 1 tylko jeśli dajmy na to M jest większe od zera. W przeciwnym wypadku w ogóle program pomija odejmowanie tylko nadaje wartość 59. Przy okazji prawdopodobnie masz zmienne Byte - w tym wypadku nie ma jako tako wartości ujemnych (są w C dla signed char, int8_t) więc ten kawałek: If M < 0 Then...
Witam. Potrzebuje zrobić układ którego zadaniem będzie obniżenie wartości napięcia wejściowego (zmieniającego sie w granicach od 0 do 5V) do napięcia proporcjonalnego do napięcia wejściowego ale w zakresie od 0 do 2V. To tak jakby od wartości napięcia wejściowego odejmować ileś tam procent. Myślałem nad zastosowaniem jakiegoś małego procesorka np. attiny13,...
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....
Aby rozwiązać ten problem wystarczy przejrzeć notę MCU. Offset, który jest wprowadzany celowo, dla pomiaru napięć oniżej GND można usunąć, albo przez kalibrację - trzeba offset zmierzyć i go odejmować od pomiaru, albo wykorzystując tryb różnicowy ADC. W tym trybie wystarczy jedno z wejść (-) programowo podłączyć do GND i mamy pomiar bez ofsetu.
Dziękuje ... wpis i odczyt działają a jak mam przechodzić po po szczególnych zapisach bo jak dodam wyświetlanie [syntax=basic4gl]Plus: '/reczna incrementacja czestotliwosc poczatkowej freq_0 = freq_0 + 200 Locate 1 , 1 : Lcd Freq_0 Return minus: '/reczna decrementacja czestotliwosc poczatkowej Freq_0 = Freq_0 - 200 locate 1,1:lcd freq_0 return[/syntax]...
Po drobnej zmianie kodu działa dobrze (matematycznie) domind A na razie problem rozwiązałem tak, że od zadanej wartości Y odejmuję zakładany czas wykonania pętli i jest OK.
...to banalnie proste :D zalaczasz timer gdy pojawi sie na pinie masa...czekasz na wystapienie jedynki...i patrzysz ile timer zdazyl zliczyc...:D lub... timer chodzi caly czas...gdy pojawi sie masa zapisujesz stan timera a gdy sie skonczy takze zapisujesz... odejmujesz to pierwsze i juz masz :D prawda ze bardzo proste ?? :D Nikt nie bedzie pisal kodu...
To norma że mają taki offset. Jednym z rozwiązań jest oprogramowanie jednej nogi procka jako wyjście i zwarcie nią pinu ADC do masy. Wtedy mierzysz ten offset który potem odejmujesz od następnych pomiarów (już bez tej masy) Poczytaj o ADC w Xmega - są trochę "inne" :D Bajty kalibracyjne w sygnaturze itp kwiatki.
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...
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...
PANOWIE DZIALA!!!!!!!! Juz tlumacze oco chodzi i gdzie blad ale najpierw skladam WIELKI SZACUNECZEK i PODZIEKOWANIA DLA PANA "WADER_669"!!!!! Oraz wszystkim tym ktorzy mieli szczere checi w pomocy. CYTUJE: POCO INCR ZMIENNEJ ENKODER SKORO BASCOM JUZ SAM DODAJE I ODEJMUJE IMPULSY, ZRESZTA ON LICZY NA TEJ ZMIENNEJ TYLKO DO 4. A JA MU NA DODATEK JESZCZE...
Nie znam wszystkich aspektów radii, ale pisałem już kilka programów dla innych na nie. Mam emulator radia do programu HAM i takie tam różne :D W Twoim przypadku odpowiedź wydaje się oczywista. Użyłbym odpowiednio dużej zmiennej która będzie trzymać wynik i na niej działał (dodawał albo odejmował) po czym wynik zamieniałbym na string i tak wysyłał. Zmienna...
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ą...
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...
Witam, wystarczy od zadanych wartości PWM odejmować wartość dodatkowej zmiennej np SKRET na silniku w którą stronę chcesz skręcić a zwiększać na drugim np. zmniejszając wartość dla LEWEGO silnika o 5 przy prędkości 120 a zwiększając dla Prawego uzyskasz skręt. Pytanie dodatkowe: Czy przewidujesz jazdę do tyłu? Skręt w miejscu?
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...
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...
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ć...
Jak w tytule . Znalazłem pdf dla teg czujnika ale tam właściwie wszystko oparte jest o funkcje API a ja chcę użyć ten czujnik w bascom . Potrzebuje opis rejestrów .Znalazłem coś takiego , przekonwertowałem i pomiar robi ale to nie jest zadowalające . [syntax=c]#chip mega328p, 16 #option Explicit #include <glcd.h> #include <uno_mega328p.h >...
Mowa o Bascom. Ale tak to jest jak się chce przedobrzyć. Wart_adc0 = Getadc(0) Wart_adc0_1 = Wart_adc0 * 0.501942605 'kalibracja temperatury wewnętrznej Wart_adc0_2 = Wart_adc0_1 - 273.15 ' od °C odejmujemy °K Wart_adc0_3 = Wart_adc0_2 Lcd Str(Wart_adc0_3) ... i ładnie wyświetla w stopniach Celsjusza z dokładnością do 1°
Witam wszystkich!! mam taki problem... napisalem program w BASCOMIE: Dim Generator As Byte , Czujnik As Byte , Wynik As Byte , Gen As Byte , Czas As Byte Portd = 3 Cls Do Debounce Pind.0 , 0 , Gen , Sub Debounce Pind.1 , 0 , Czu , Sub If Generator = 10 Then Wynik = Generator - Czujnik Generator = 0 Czujnik = 0 Lcd "WYNICZEK= " Lcd Wynik End If Waitms...
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) =...
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...
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ć...
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...
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...
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...
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...
Jeśli będzie sterował napięciem np. 5V to od tego napięcia odejmujesz spadek napięcia na diodzie i dopiero dzielisz przez prąd diody. W praktyce ja zawsze biorę ciut większy rezystor - w tym przypadku dla 5V możesz spokojnie użyć nawet 330-470om. Tak, podciągniecie wejścia to Set PortX.Y tylko wg Twojego schematu to będzie port D, a nie B, czyli Set...
Ktoś tu zaraz wstawi pewnie gotowy kod ale. Napisałęś około wiec dokładność chyba nie gra roli. Zrobić tak aby tajmer przepełniał sie sam (config timerx timer, start timerx, enable timerx, enable interrupts). W procedurze obsługi tajmera (on timerx przerwanie_tajmerx, przerwanie_tajmerx:) zrób zwiększanie (if jakas_zmienna>0 then decr jakas_zmienna)....
....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ł do lub od zadanej wartości. .... Idąc dalej w domniemaniach ...... ten cały zestaw o którym wspomniał ucy74...
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ę...
Proszę. Przycisk Menu włącza je i wyłącza więc przycisk wyjścia z Menu praktycznie jest niepotrzebny, ale go zostawiłem. Subów którym nie przekazuje się żadnych zmiennych nie trzeba deklarować. Miałeś odświeżanie wyświetlacza w pętli głównej z prędkością procesora. Zmieniłem to tak że wyświetlaczem zajmuje się tylko wtedy jeśli coś się zmieniło i wymaga...
Wklejaj kod z użyciem opcji Listing kodu . Dlaczego co druga linia jest pusta? Co to jest Liczba ? Chyba nie zajrzałeś do dokumentacji co zwraca funkcja Byte obsługuje wartości od 0 do 255, więc nigdy nie spełni warunku < 0. Nie wiem, po co to sprawdzasz? W procedurze Prawo odejmujesz zamiast dodawać. 0 - 1 daje 255. Wygląda, że w Twoim zegarze doba...
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...
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"...
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...
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...
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...
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...
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...
bascom string odejmowanie excel odejmowanie odejmowanie godzin
s5610 sieć przeniesienie licznik elektryczny częsty pralka whirlpool
zgrzewarki kondensatorowe zgrzewarki kondensatorowe
Schemat podłączenia centrali Nice MCA2 – instrukcja, zaciski, konfiguracja Panel nawiewów Renault Espace nie wyświetla informacji