Tyle rad i nadal żadnego pomysłu nie masz?;p Nie ważne w którym miejscu będziesz włączał timer, możesz to zrobić chociażby na początku funkcji main. Ważne jest żeby PRZERWANIE od tego twojego timera zgłaszało się tak często jak jak chcesz odświeżać wynik na wyświetlaczu (czyli te twoje 10 sekund) i w tym przerwaniu musisz wykonać odejmowanie na zmiennych...
Witam serdecznie! Mam pewien problem z dodawaniemn i odejmowaniem dwoch wartości liczbowych ktore zadajemy z panelu operator. Jedna wartość zadajemy z góry np 1000 wage główną i teraz zadajemy skok, maszyna kontrolujac wage produktu bedzie dodawać albo odejmować skok od zadanej wartości głównej wagi. W tym programie ponizej dzieja sie dziwne rzeczy...
Nie zagłębiam się o co dokładnie chodzi w kodzie, bo to i tak fragmenty, ale nie ma żadnych szans, żeby mikrokontroler był w stanie wyrobić z taką częstotliwością przerwań. Tak jak pisałem wcześniej, musisz zmienić podejście, ale wnioskując z fragmentów kodu, w grę wchodzi jedynie zwiększenie zegara systemowego, prawdopodobnie połączone z trybem CTC...
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...
http://obrazki.elektroda.pl/2126980700_1... System monitorowania środowiska, oparty o interfejs LoRa IoT składa się z stacji bazowej zbudowanej z wykorzystaniem modułu Arduino Mega z bramką LoRa oraz zdalnych stacji opartych na Arduino Feather, które łączą się z stacją bazową poprzez radiowy interfejs LoRa. System pozwala na monitorowanie...
Witam, mam już jaśniejszy pogląd na te moduły, rzeczywiście da się krócej napisać te procedury. Dziękuję. Które obiekty Range były błednie zdefiniowane i na co w tym przypadku mam zwracać uwagę? Grafiką komórek narazie się nie przejmuję, to temat kosmetyczny. Najbardziej zależy mi, aby kalkulacja działała bez problemów i intuicyjnie. Muszę przyznać,...
Siedzę, czytam, czytam i mam już mętlik ... Czyli generalnie do tego co mam nie da się dodać przeciążenia w sposób taki, żeby działało, jak zwykły kalkulator ? Chodzi mi o możliwość zapisu... naciskam 1 naciskam + naciskam 2 naciskam + naciskam 3 naciskam = i otrzymuję wynik 1 + 2 + 3 = 6 Rozumiecie o co mi chodzi ? Bo z mojego kodu działa mi na zasadzie...
Pracuję nad pewnym projektem, który pozwoli z kabiny zabytkowego tramwaju zrobić symulator jazdy z wykorzystaniem mechanizmu oryginalnego nastawnika i ekranu do projekcji tylnej w miejscu przedniej szyby. Nastawnik nie jest kompletny, ale mechanizm kręcenia korbą i nawrotnikiem działa, więc pozostaje tylko kwestia odczytania zadanej pozycji jazdy lub...
system mam 32bit. Błąd jest taki że niby część zmiennych z tych plików i zadeklarowanych bibliotek wyskakuje jako niezdefiniowane.
Nadmiar w operacjach na zmiennych całkowitych nie jest nigdy wykrywany i faktycznie dodawanie i odejmowanie są tak samo wykonywane na liczbach ze znakiem i bez. Tak samo jak w asemblerze. Jest tylko kwestia, czy wynik jest interpretowany bez znaku, czy w kodzie uzupełnieniowym do dwóch.
Najszybciej powinno pomóc to ;) ..ale mógłbyś sam pomyśleć... Zdecydowanie lepiej zrobi jak pomyśli samodzielnie bo to co napisałeś nie działa poprawnie , poza tym ma sporo ograniczeń . Napisałeś to nie biorąc pod uwagę budowy mikrokontrolera i najgorzej jak można było . Czym mniejsze zmienne tym szybciej działa program , jak są 8 bitowe to super bo...
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, nie zagłębiam się teraz zbytnio w ten kod ale 3 rzeczy mi się rzuciły w oczy: 1. 1Hz to za mało, wyświetlacze muszą się tak szybko "podmieniać", ażeby oko tego nie zauważyło - o to właśnie w tym chodzi. 2. volatile przez zmienną w funkcji Sound? - Bez sensu. Pozdrawiam, GSM
a nie mówiłem...drugi zajmie jeszcze więcej :) Drugi pomysł używałem na Atmega16, lecz nie wywoływałem fprintf_P(); tylko kilka razy. Jeśli wiesz jak będzie wyglądał wynik tzn ile będzie miał miejsc po przecinku i w sumie ile cyfr to zawsze możesz użyć pomysłu kolegi: elektronik12z Możesz też bawić się w dzielenie, mnożenie, odejmowanie i modulo (czyli...
Cały proces musiałby trwać. Mógłbyś zbierać wyniki z ADC do bufora kołowego (np. próbki co 0,1s, bufor na 20 próbek), i po każdym wpisie do tego bufora uśredniać wszystkie próbki i wyliczoną w ten sposób średnią ruchomą jako wynikiem, sterować PWM. Inna metoda, dużo prostsza ale o nieco innym rezultacie to, w pętli odczytującej ADC (np. co 0,1s) dokonywać...
Pisze drugi raz o tym odejmowaniu i coś tam wymyśliłem. Wersja pierwsza: MOV R0,#2 MOV R1,#8 MOV A,R1 CPL A MOV R1,A MOV A,R0 ADD A,R1 CPL A MOV R3,A END Gdy odejmuje np mniejsza - większa daje wynik dobry tylko że dodatni. Co gorsza program całkowicie nie działa gdy odejmujemy większa-mniejsza. PROSZĘ o POMOC!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!...
Dodawanie i odejmowanie z przeniesieniem to chyba najprostsze operacje ;) i wcale nie takie wolne. Mnożenie też jest szybkie. Zdecydowanie ładowanie zmiennych do rejestrów może być dłuższe. Jak chcesz mieć wydajnie to nie mierzysz czasu i tyle :) Jeśli pomiar trwa więcej jak 3% algorytmu, to imho nie ma sensu, poza początkowym testem na bawienie się...
PS: odnośnie obliczania Andrzej__S, dołożyłbym jeszcze sprawdzenie przekręcenia Timera: // jeżeli opadające - oblicz różnicę else if (TCNT0<prev_tcnt) T = TCNT0 - prev_tcnt; else T = prev_tcnt - TCNT0; Po pierwsze: w ten sposób otrzymasz błędny wynik. 'T = prev_tcnt - TCNT0;' odpowie na pytanie, ile brakuje licznikowi do osiągnięcia poprzedniego...
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...
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...
Niby czemu nieporozumieniem? Jeśli się wyrabia czasowo i pamięciowo to w czym problem? Implementacja zmiennych 64-bitowych w gcc jest ok, w końcu skoro to działa na innych procesorach to i na AVR będzie. Miejsce zajmowane przez funkcje łatwo sprawdzić analizując wygenerowany plik map. Co do kosztu - najprościej zapuścić na symulatorze, np. w AVR Studio...
PO. : ad 1/ avr'y są ośmiobitowe, ale obsługa zmiennych 16-bitowych jest optymalna. W przypadku średnim obsługa zajmuje 2* więcej czasu: podstawienie pomiędzy rejestrami (2*mov=2 cykle lub w szczególnym przypadku movw=1 cykl), inkrementacja (subi+sbci = 2cykle, odejmowanie wartości ujemnej, gdyż nie ma dodawania o stałą podaną bezpośrednio; w przypadkach...
bez urazy, kolego olekewaagata, zanim zaczniesz kogoś pouczać przeczytaj tekst ze zrozumieniem! ;)) Autor wątku miał problem z propagowaniem przeniesienia - moja odpowiedź dotyczy DOKŁADNIE zalecenia, jaką instrukcją uwzględnia się przeniesienie. A podany przeze mnie przykład dotyczy sumowania, z jakim ma problem autor - czyli dokładnie liczby _16bit_...
Witam Zaciąłem się podczas pisania programu na woltomierz. Układ opiera się o uC Atmega 16. Pomiar napięcia z zakresu 0 - 5 V. Wynik ma być standardowo wyświetlany na LCD 2x16. Procedury do obsługi lcd mam napisane. ADC wywołuje przerwanie w którym chce skonwertować otrzymany wynik na znaki wysyłane do LCD Zamieniłem już wynik z HEX na DEC. liczbę danej...
Program chyba ukończyłem: ;Program do "modyfikatora sygnału" ;Parametry techniczne dla taktowania 4MHz: ;- skrócenie czasu o wartość max ponad 2,5ms z krokiem co 10us ;- lub wydłużenie czasu o max stałą wartość ponad 20ms z krokiem co 80us ;- mnożenie czasu przez współczynnik około 1,00 do 2,55 ;- wejścia sygnałowe portB 0-3 ;- wyjścia...
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....
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,...
Przyjrzyj się tej pętli i popraw oczywisty błąd. Odejmowanie zera raczej nie spowoduje zmiany wartości zmiennej, na którą czekasz w tej pętli.
Nie pamiętam składni C, ale jak pisałem: 1. Robisz w klasie okna prywatne pole typu czasowego 2. Na start przypisujesz mu wartość aktualną (Now()) 3. Różnicę liczysz po prostu odejmując od Now() wartość zapamiętanej zmiennej. Do wyświetlenia możesz potem sformatować (TimeToStr())
Gdzie mam oczy! Przecież w kodzie zrobiłeś odejmowanie :) W załączniku prawidłowo testowane wartości... Zwróć uwagę na zmienną 'prf' i jej wartość.
Rozumiem, że można timerem obsłużyć procedurę programowego pwm, ale i samo miganie Led, czylindodawanie/odejmowanie zmiennych odpowiedzialnych za jasność i to będzie sobie działało niezależnie od tego co w pętli głównej, czy tak? Dokładnie. Czyli timer generuje np. 1000 przerwań/s, tam sobie inkrementujesz/dekrementujesz zmienne, robiąc programowy...
Zobacz na http://www.avrbeginners.net AVR Assembler->Math->Multiple byte maths. Są tam co prawda krótkie, ale dobrze opisane przykłady operacji na liczbach 2 i nawet 4 bajtowych: dodawanie, odejmowanie, porównania itp. Pozdrawiam
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.
Pisząc o dodawaniu masz na myśli, że jeżeli base jest np. 2 to jak przekształcamy na dziesiętnt to musimy dodawać wartości wymnożone i odpowiednio podniesione do potęgi drugiej? Nie.... Przykładowo masz ciąg "124" reprezentujący liczbę 124, a więc Bierzesz pierwszy znak z lewej (1 - kod ASCII 49) taka jest wartość bajtowa zmiennej char. Odejmujesz...
Użyj do tego instrukcji switch. Przycisk będzie dodawał lub odejmował do wartości zmiennej.
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ę...
Jeśli dobrze zrozumiałem algorytm, to najlepiej zastosować 3 liczniki. Wejście I1 dodaje na wszystkich trzech, a wyjścia odejmują. Każde swój licznik. Trochę zabawy z nawrotką ścieżki. Warto zastosować też andy ze zboczem, oraz flagi dla opóźnień.
Jeszcze jedno mam pytanie. Szybciej w STM32 wykona się dodawanie/odejmowanie 32 bitowych zmiennych, czy 8 bit ? A jak w powyższym jest z mnożeniem i dzieleniem ?
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)?
Na pewno wymaga to pomyślenia nad algorytmem - na wejściu dostajemy sygnały "kroków" enkodera, na wyjściu mamy dawać kroki dla silnika, gdyby pierwsze miały być dużo gęściejsze, to dla każdego dodajemy pewną wartość w1 (dużo mniejszą od 1) do zmiennej, a gdy suma z dodawania przekroczy 1, generujemy krok silnika i odejmujemy 1 od zmiennej; przy niezbyt...
Nie podałeś ja są przechowywane te dowolne liczby (chyba myślałeś o zmiennych). Dla jednobajtowych (8-bit) użyteczny jest skutek uboczny rozkazu "movf x,x" w postaci ustawienia bitu Z w rejestrze stausowym jezeli ruszony rejestr ma wszystkie bity równe 0. Jeżeli zmienna jest wielobajtowa to wystarczy wykonać "or" na wszystkich jej bajtach i jeżeli w...
No więc tak jak mówiłem, gdy podaję wartość stałą to wszędzie jest 0 nie licząc prążka na 0Hz. A Ty jak sam pisałeś masz około 512 bo coś tam skacze na wejściu i dlatego chciałem żebyś sprawdził co się stanie gdy wpiszesz na sztywno 512. Druga sprawa, wynik ładujesz do tablicy unsigned char. Na jakim procku to robisz? Bo w DSP char jest 16-bit ale jeśli...
Po pierwsze, jeżeli stosujesz własne funkcje do dokonywania obliczeń, to możesz sprawdzać właśnie w tych funkcjach, czy ich argumenty "są odpowiednie". Zamiast : function pierwiastkowanie(a:real):... begin pierwiastkowanie:=sqrt(a); end; Zrób coś takiego : function pierwiastkowanie(a:real):... begin if...
Pewnie wystarczy moduł STM32C8T6 ("blue pill", zegar 72 MHz), z programem w asemblerze; najlepsze, co można uzyskać, to zmiana stanu wyjścia w tym cyklu zegara, który będzie najbliższy wymaganego czasu zmiany, co oznacza, że sygnał wyjściowy na ogół będzie miał "jitter" na poziomie kilku ns, gdy 72 MHz nie podzielą się równo przez wymaganą częstotliwość....
Chyba będzie najlepiej jak posłużę się przykładem. Przedstawiam wartości maksymalne. przyklad 1. x=ADC/timer - x to bedzie duży ułamek np. 0,00 999 999 999 będzie użyty jako stała wyliczona na początku z przetwornika ADC i timera, timer może przyjąć nawet wartość 9 999 999 999 999 przyklad 2. y=timer2*x - timer2 moze przyjmowac wartosci 9 999 999 999...
Czy zamiast wstawiać ten epsilon, mogę po prostu wynik operacji odejmowania zaokrąglić do 2 miejsc po przecinku i wtedy porównać ze zmienną $z?
Zrób na dwa szybkie klaśnięcia od razu bo Ci się coś przewróci w nocy (kij od miotły nawet ) i jesteś bez światła. To samo pies... pies nie szczeka tak szybko jak podwójne klaśnięcie. U mnie logika jest taka że od wykrycia pierwszego klaśniecia włącza Timeout i zwiększa wartość zmiennej. Timer odejmuje od tej zmiennej co ~500ms. Jak zdążysz klasnąć...
Zaletą wzmacniacza zasilanego symetrycznie jest możliwość wzmacniania sygnałów wolnozmiennych lub składowej stałej o biegunowości zarówno dodatniej jak i ujemnej. Przy wzmacniaczach zasilanych niesymetrycznie w takiej sytuacji musimy przesuwać punkt pracy o jakąś wartość napięcia a następnie to napięcie odejmować. Innym rozwiązaniem jest modulacja napięciem...
Ja bym to zrobił tak: zadziała pierwszy czujnik - ustawiasz jego zmienną na 1 i czekasz aż zadziała drugi czujnik, jeśli tak, zerujesz zmienną , dodajesz jeden do licznika, i czekasz aż drugi czujnik wróci do stanu zasadniczego. Jeśli nie - zerujesz zmienną po określonym czasie. (znaczy że ktoś uruchomił jeden z czujników i nie aktywował drugiego) zadziała...
Na pytania 1 i 2 dostałeś wyczerpujące odpowiedzi. Do 3 dodam, że czas wykonania tych funkcji jest bardzo krótki, więc można sobie poradzić sposobem - wykonać te funkcje dużo razy (np. milion) i zmierzyć czas wykonania całości. Dla porównania napisz dodatkową funkcję, która niemal nic nie robi (np inkrementuje zmienną statyczną, żeby kompilator nie...
excel odejmowanie odejmowanie godzin liczby odejmowanie
windows samba domena czasy wtrysku vectra sprawdzenie czujnika ciśnienia oleju
elektromnika praktyczna papierowe panel solar tanie sposoby
Toyota Corolla Sedan 2006 – podłączenie taśmy LED pod maskę, schemat, bezpiecznik, przekaźnik Scania S500 RTC2305 – błąd zasilania zegara RTC, objawy i diagnostyka