1. Odczytaj czas (time_t) 2. Dodaj do niego okres który chcesz "poczekać", zapisz w zmiennej. 3. Odczytuj w pętli czas (time_t) sprawdzaj z zapisaną wartością, czy czas już upłynął. Trudne? Jeśli chciałbyś nie blokować procesora trzeba - wejść w np. w wątki.
Jeżeli dodamy w pętli for pomiędzy funkcjami analogwrite opóźnienie około 2 ms aby złagodzić zatrzymanie, ale aby było nadal w miarę szybkie, silnik podczas zatrzymywania generuje podwyższone napięcie, które przez mostek cofa się przez chwilę do zasilacza. Przy łagodnym zatrzymywaniu problem przepięć nie występuje. Silnik DC podczas hamowania nie generuje...
Jak nie radzisz sobie na razie z tym timerem to przynajmniej nie nadużywaj bezpodstawnie Wait. To co Ci zaproponuję nie zwalnia Cię od ogarnięcia timerów! Ustal sobie jakie dopuszczasz maksymalne opóźnienie pętli i użyj go tylko raz np. 10ms. Za rozwiązanie, może nie do końca eleganckie, zaraz zbiorę burę od fachowców ale w wielu przypadkach to naprawdę...
Mając laser możesz użyć małych luster i odbić wielokrotnie promień lasera by w końca trafił na fotoelement. Trudniejsze jest wtedy ustawienie lasera ale zmniejsz się ilość elementów oraz można użyć wejść cyfrowych. Przy takich programach na arduino trzeba pamiętać albo o krótkim czasie wykonania pętli pomiarowych (tak by możliwie często sprawdzać stan...
Witamy na forum :) Proste opóźnienie to pętla, która wykonywana jest w przez określony, czas odliczany jakąś zmienną. Znając ilość cykli zegara, które na jeden obieg pętli mikrokontroler zużywa oraz znając czas trwania jednego cyklu zegara (obliczony z częstotliwości zegara) , można wyliczyć ile czasu taka pęta się wykonuje. Poprzez odpowiedni dobór...
Nie potrzebujesz kolejnego licznika. Już masz jeden skonfigurowany do pracy cyklicznej i to w zasadzie już Ci mniej więcej wystarczy. Masz w tym momencie przerwanie co 1/18750sekundy czyli co jakieś 53,33(3)us. Jeśli chcesz zrobić opóźnienie w pętli głównej o na przykład 500ms to wystarczy, że poczekasz 500000/53,333=9375 takich przerwań. W tym celu...
po 1 primo :-) for(float x=0;x<0x32;++x) W języku C deklaracja zmiennej w pętli jest niedopuszczalna :) jak już chcesz jakieś opóźnienie uzyskać to możesz zrobić: unsigned int x; for (x = 0; x < 65535; x++) ; // średnik tu jest kluczowy ;) ale żeby to zadziałało musisz w opcjach kompilatora wyłączyć optymalizację. Opóźnienie...
for (i=1 ; i<=NWW; i++) { if (i%(NWW/li_A)== 0) PORTC |=0x02; if (i%(NWW/li_B)== 0) PORTC |=0x08; if (i%(NWW/li_C)== 0) PORTC |=0x20; if (i%(NWW/li_D)== 0) PORTC |=0x80; // zerowanie pinów ABCD PORTC &=0x55; // opóźnienie _delay_ms(czas_kr/NWW); } Wszystko...
Znaczy, w głównym programie masz obsługę PWM i do niego dokleiłeś obsługę kolejnych kanałów PWM z działającego programu? Czy przypadkiem oba fragmenty kodu nie mieszają sobie wzajemnie w ustawieniach? Jeżeli masz opóźnienie zrobione na pętlach i w trakcie wykonywania takiej pętli wystąpi przerwanie to czas jej wykonania będzie dłuższy niż zakładany....
jak napisać program w arduino powodujący miganie diody 10 razy a następnie kończący działanie? Wstępna ocena dostępnych informacji Przeanalizowałem Twoje pytanie dotyczące napisania programu w Arduino, który spowoduje miganie diody 10 razy, a następnie zakończy działanie. Celem jest stworzenie programu sterującego diodą LED, który wykona określoną...
napisz program do arduino aby zaprogramować przyciski i dwa limit switche połączone według obrazka https://obrazki.elektroda.pl/7053605400_... Na podstawie dostarczonego schematu, można zaprogramować Arduino tak, aby obsługiwało sygnały z przycisków i limit switchy (przełączników krańcowych). Oto przykładowy kod, który może spełniać te funkcje....
Ten silnik ma przekładnię i dla operacji pełnych kroków ma ich 2048 na pełen obrót a dla kroków "połówkowych" to już nawet 4096. To jest prosta wielokrotność rozdzielczości ADC (1024) więc nawet przeliczanie tego na volty jest niepotrzebne. Nie wiem jaki zakres potrzebujesz, ale jak wykonasz dwa kroki na każdy punkt ADC to od 0V do 5V to będzie pełen...
Timer już masz zastosowany. Jeśli tylko przeniesiesz warunki sprzed pętli do pętli wszystko będzie działać. Już niebezpiecznie zbliżyłem się do podania gotowca, więc z mojej strony na razie koniec.
Tak, jak będzie gdzie indziej to może nawet działać. Napisz jeszcze co znaczy "zmodyfikowałem procedurę obsługi" I dlaczego z powodu otwartego drenu zmieniasz polaryzację? Mi to wygląda, że z powodu wolniejszego narastania zegara jego dodatnie zbocze występuje później niż następna dana. Daj testowo opóźnienie po ustawieniu CLK w pętli - jeśli jest tak...
Opoźnienie powstaje dlatego: Podczas wykonania pierwszej pętli (jesli z generatora jest 1) czekasz 2ms, następna pętla i znowu czekasz 2ms, w czasie tych 2ms sygnał z generatora zmienił się na zero ale ty dalej czekasz... Pozdrawiam
Jeśli chcesz aby np. dwie diody mrugały z różną częstotliwością to w najprostszy sposób możesz to zrobić tak: na początku pętli głównej dajesz małe opóźnienie powiedzmy 5ms. Potem w każdym obiegu pętli (co 5ms) zwiększasz wartość dwóch zmiennych np. Licz1 i Licz2. Kiedy Licz1 osiągnie wartość 50 wtedy zerujesz ją i zmieniasz stan pinu do którego dołączona...
Kolego mikroprocesor jest na tyle szybki że jak ty naciśniesz przycisk to on zdąży kilka razy zwiększyć zmienną A. Spróbuj w pętli ustawień wstawić jakieś opóźnienie np. 1 sekundę. Zobacz jak się zmieni działanie programu. Nie masz tez ograniczonej zmiennej A. Trzymając przycisk możesz sobie zmieną A zwiększyć lub zmiejszac że może przyjąć wartości...
Jeśli termometr będzie w przerwaniu np co 1 sec, to możesz usunąć : " Waitms 750 'przeczekaj czas konwersji" To opóźnienie będzie tylko spowalniało powrót do pętli głównej. Konwersja i tak się dokona bo przecież program będzie tam skakał co sekunda. Różnica jest tylko taka, że przy pierwszym włączeniu zasilania do układu termometr pokaże 85 stopni....
Witam, można napisać własną funkcję, która będzie w pętli wywoływać _delay_ms(1). Liczba iteracji da wtedy opóźnienie w ms. Można także wykorzystać timer do generowania opóźnień jeśli jest jakiś wolny. Pozdrawiam, TQelektronik Dodane: Tutaj [url=]http://mikrokontrolery.blogspot.co... jest dokładnie opisany...
Ciepło, ciepło :) Na początek selekcje najlepiej umieść jako podprogram wywoływany z pętli głównej - w sumie może być razem z podprogramem "Wlacz:". W pętli głównej natomiast zastosuj jakieś opóźnienie zrobione w nieblokujący sposób - możesz się oprzeć o rozwiązanie jak [url=http://www.elektroda.pl/rtvforum/vi... które...
Błądzisz. 0. Dlaczego wybrałeś muzealny mikrokontroler, dla którego informacji trzeba szukać w skanowanych artykułach z gazet wydawanych w latach 80-tych i 90-tych zeszłego wieku? 1. Dlaczego nie chcesz korzystać z timera? To jest najlepszy i najpewniejszy sposób odmierzania czasu. 2. Czy program w którym potrzebujesz opóźnienie 5ms nie robi nic innego...
........ a jak to wstawiłem do mojego skecza to dzwięk jest jakby cichszy i pikanie dużo wolniej idzie (przerwy pomiędzy piknięciami ok 1 s , a to gorzej brzmi )... ...bo masz zbyt długą pętlę, która wprowadza dodatkowe opóźnienie odczytu aktualnego stanu zegara millis(). Jeżeli czas wykonania pętli jest większy niż przyjęty interval, to moment odczytu...
on nie korzysta z funkcji _delay_ms . Nie dziwie się, bo duzo zasobow zżera. Dokładnie nikt jeszcze nie pisał o _delay_ms() , a ja się dziwię, że ty się dziwisz , że rzekomo ta funkcja zżera dużo zasobów. Owszem może tak być jak się nieumiejętnie z niej korzysta w przeciwnym wypadku zżera ich mniej niż nieraz tworzone przez programistę różne inne udziwnienia!...
Zamiast robić tam opóźnienie można policzyć ile taktów zajmie uartowi wysłanie ostatniej ramki i robić sobie inne potrzebne operacje ,które zajmują czas a po odpowiedniej ich liczbie zmienić stan porty i tyle . Asembler daje wiele możliwości wykorzystania czegoś co się nazywa opóźnieniem . A jak masz wolny licznik to można na nim zrealizować opóźnienie...
Jeśli procesora nie wprowadzasz w tryb uśpienia, to zmiana poboru prądu przez procesor jest porównywalna jak by cały czas wpisywał te dane, jak i co jakiś czas.. jak chcesz, to możesz wykorzystać timer do odmierzania jakiś odcinków czasu np 200ms (w przerwaniu ustawiać jedną flagę, nic więcej) a w pętli głównej jeśli ta flaga jest ustawiona, to aktualizacja...
W pętli głównej ostatni if nie ma end if'a. Napisz mi jaki dokładnie jest to typ pamięci, powinno być jeszcze opóźnienie przy zapisywaniu do pamięci. Jeśli masz w tym układzie wyświetlacz LCD to spróbuj najpierw transmisji po rs w pętli głównej wstaw procedure odbioru znaku i od razu go na wyświetlacz, wtedy będzie wiadomo czy komunikacja z kompem chodzi...
Grala1 - Nie wiem czy ta wersja spełni oczekiwania : '$prog &HFF , &HE1 , &HD9 , &H00 ' Fusebity fabryczne !!! $sim ' dyrektywa opuszczania zwłoki (usunąć ten wiersz przy wgrywaniu w chip) $regfile = "m8def.dat" ' dyrektywa kompilatora o rodzaju procka ATMega 8 $crystal = 16000000 ' określenie kwarca 16 MHz Config Pinb.1 = Output...
W pierwszym przypadku w celu jak największej dokładności czasu opóźnienia jest wyliczana liczba przebiegów wewnętrznej pętli (która wykonuje się w 3 lub 4 cyklach, zależnie od tego, czy licznik może mieć 1 bajt, czy musi mieć 2 bajty) - te obliczenia są wykonywane na liczbach zmiennoprzecinkowych. Co do drugiego kodu, nie jest on funkcjonalnie taki...
Ja nie wiem, jakim cudem wyszło Ci 40us. Jeden obieg wewnętrznej pętli (wait_us_1) wykonuje się w 10 cyklach. Wartość w R16 jest nie w mikrosekundach a w dziesiątkach mikrosekund. Pętla wykona się w czasie: 255 * 10 (255 obiegów wewnętrznej pętli, każdy po 10 cykli) +1 * 9(ostatni obieg wewnętrznej pętli - bez skoku) +17 cykli na resztę razem: 2576...
Również nie jestem Bascomowcem ale być może moje uwagi okażą się cenne. Po instrukcji Print "{008}5r", dane jest 10 ms opóźnienia. W tym czasie slave mógł już przesłać wszystkie swoje dane - a master jeszcze nie rozpoczął nasłuchu. Inną sprawą jest to, że 100 obiegów pętli w procedurze Odczyt_zn może trwać krócej niż transmisja jednego znaku przez UART...
Opóźnienia nie są krytyczne - masz przecież zegar sterujący transmisją. Więc zamiast 4us (o ile to opóźnienie istotnie tyle miało) możesz dać większe - chodzi tylko o to, aby CLK nie miało częstotliwości wyższej niż akceptowana przez SHT dla danego rezystora podciągającego. Co do samego delay - działa ono w ten sposób, że wartość opóźnienia jest przeliczana...
Jeżeli ma się to wykonać tylko jeden raz możesz cały kod umieścić w "setup" (po wywołaniu wszystkich metod "attach") a "loop" zostawić puste, będzie się kręciła w nieskończoność nic nie robiąc. Wszystkie ruchy serw realizujesz za pomocą pierwszej pętli "for" z twojego postu #5, for (początek; koniec; zmiana), jeżeli "jedzie w górę" to zmiana jest i++...
Problem jest taki, że diody "pokazują" dźwięk z 3-4 sekundowym opóźnieniem. Na początek przełóż strip.show(); za wewnętrzną pętlę for. Nie ma po prostu sensu wielokrotnie wywoływać przesył (który swoje trwa) dla jednej wartości height. A w pętli zostaną tylko mało czasochłonne operacje wpisu do tablicy w RAM (setPixelColor). Operacje w pętli loop,...
czy lepiej jest zapisać opóźnienie w postaci: 1. _delay_ms(250) czy w postaci pętli for: 2.(int i=0; i<250; i++){delay_ms(1)} Dla opóźnień, w których wartość jest stała - bez większej różnicy, dlatego lepiej jest to zapisać pierwszym sposobem. Jeśli jednak potrzebowałbyś zmiennych czasów opóźnień - dobrze jest zrobić sobie funkcję zawierającą pętlę...
Generalnie port jest zatrzaskiem więc nie ma sensu się martwić czy dana informacja się zmieni czy nie do czasu kolejnego zapisu do portu :) To daje ci sytuację taką korzystną sytuację że nie musisz się martwić o to co rozbi procek w tym czasie. Pytanie jak bardzo zależy ci na dokładności odmierzenia czasu w przypadku zapalania diody na około 1s lub...
Nie mam zewnętrznego kwarcu podłączonego, w fuse bitach jest ustawiony 1MHz, nic nie zmieniałem tam. Pewność mam, bo tranzystorami steruje dobrze z odpowiednimi czasami. Kolego czemu jesteś taki uparty - przecież chcemy Ci pomóc. Nic nie stoi na przeszkodzie (oprócz Twojego uporu), abyś dodał w tej pętli co wyświetlasz tekst na LCD zapalanie i gaszenie...
Podpiąłem się oscyloskopem pod linię UARTU - mikrokontroler <-> modem i na TX (z punktu widzenia mikrokontrolera) mam w ramce dokładnie AT+\n\r czyli poprawnie wysłaną komendę AT, natomiast na lini RX mam w ramce "OK". Czyli mikrokontroler wysyłA poprawnie ale nie "odbija" w dalszym ciągu tego "OK" na uart6. HAL_GPIO_TogglePin jet wywoływana...
SIGNAL(SIG_OVERFLOW0){ straznik = 0; cli(); } #1 Skoro 'straznik' przyjmuje tylko wartości 0 lub 1, to po co 16-bitowy typ 'int'. Wystarczy w zupełności 'uint8_t'. Ta sama uwaga dotyczy również zmiennych 'i' oraz 'j' w pętli 'for'. #2 Jeżeli używasz zmiennej 'straznik' zarówno wewnątrz procedury obsługi przerwania i w programie...
Jeżeli istnieje podejrzenie, że druga przetwornica może się uruchomić w czasie, gdy napięcie wyjściowe pierwszej nie ustaliło się (z jakąś tam dokładnością) i może to niekorzystnie wpłynąć na prace przetwornicy, parametry lub obwód zasilany, to można zastosować zabezpieczenia w postaci układu UVLO (chyba najpewniejszy sposób), ewentualnie kombinować...
MC34063 nie jest be tylko niespecjalnie się nadaje do przetwornic typu flyback. Zresztą w tej nocie nawet nie podają takiego zastosowania. Zrobić taką przetwornicę oczywiście można, sam ją zrobiłem, jednak charakterystyka regulacji może spowodować niespodziankę w niektórych sytuacjach. Mi nie chciało się bawić w dobieranie charakterystyki pętli sprzężenia...
Wracać najlepiej skokiem bezwarunkowym, albo wywoływać je instrukcją call i wtedy z ret nie będzie problemów. Elegancko byłoby to mniej więcej tak: .INCLUDE "tn26def.inc" .cseg .org 0x00 LDI R20, RAMEND // Inicjalizacja Stosu (dla poprawnego działania skoków i pętli). OUT SP, R20 RJMP Ustawienia // Program nie skacze do "Ustawienia",...
Ano dlatego, że gdy wciskasz przycisk w procku wywoływane jest przerwanie... A że trwa ono sekundę... o tyle "wydłuża" się czas tego delaya w pętli głównej... Po tej sekundzie (gdy masz wciśnięty przycisk) wywoływane jest kolejne przerwanie - kolejna sekunda... itd... Rozwiązanie... wywal delaya z przerwania. Edit: Maksymalny czas opóźnienia wynosi...
Witam. Ja nie dobierałem w ten sposób nastaw regulatora, ale wydaje mi się, i z tego co można przeczytać w książce "Regulatory wielofunkcyjne" L.Trybusa, że okres drgań przekażnika będzie zależał od szerokości pętli histerezy, tj. dla obiektów wysokiego rzędu, lub z dużym opóźnieniem, drgania powinny powstać przy szerekości histerezy H=0. Dla obiektów,...
A ja zacznę od początku. Co autor miał na myśli? Czy uzyskanie precyzyjnego przebiegu na wyjściu o częstotliwości 1kHz czy precyzyjne generowanie Przerwania? I teraz poprawcie mnie jeśli się mylę. Jeżeli mam precyzyjnie generowane przerwanie i softwarowo generuję przebieg na wyjściu to i tak otrzymam przebieg tak dokładny jak dokładne przerwanie generuje....
Wykluczone! _delay_ms jest makrem które działa tylko na wartościach stałych, użycie zmiennej spowoduje wkompilowanie biblioteki liczb zmiennoprzecinkowych a same opóźnienie będzie się miało nijak do tego oczekiwanego. Time może być stałą preprocesora (#define), nigdy zmienną. Dla zmiennej lepiej napisać osobną funkcję, która w pętli wykonuje _delay_ms(1)...
Nie wiem czy zamykanie pętli stabilizacji napięcia poprzez mikrokontroler to dobre rozwiązanie, a z Twojej wypowiedzi wynika, że tak chcesz zrobić. Z tego co się orientuję, tak się raczej nie robi. Odpowiednia rozdzielczość PWM to tylko jeden problem. Układ taki będzie prawdziwym regulatorem cyfrowym i jako taki należy go analizować, a analiza tak może...
Wg opisanej zasady powinien działać poniższy program ‘ Program swiatła samochodowe – opis działania ' ‘ Po włączeniu zasilania, gaszone są swiatła postojowe i mijania ' (gaszenie w sensie wyłączenia przekaźników) ‘ Program czeka na pojawienie się sygnału zapłonu ze stacyjki ‘ Następnie program czeka na znikniecie...
A może by tak jednak w "asm": [syntax=asm] ; ========================================... ; Deklaracje zmiennych ... ; ========================================... cblock 020h key_state ; stan switcha/y R1 ; endc ; ========================================...
Kiepsko kombinujesz. Po pierwsze aparat który będziesz wciąż włączał i wyłączał w pętli nie tylko zużyje więcej prądu ze źródła zasilania, ale też sam się szybko zużyje, nie wspominając o wzięciu pod uwagę opóźnienia jakie potrzebne jest do tego by od momentu włączenia zasilania aparat był gotowy do zrobienia fotki - Twój sterownik musiałby brać to...
po pierwsze po dyrektywie .cseg podaj .org 0 a program niestety leci ci w maliny bo troszeczkę namieszałeś. gdy już zaczyna się pętla główna programu main: to sprawdzasz poleceniem SBIS PINC, 0 czy przycisk jest naciśnięty i jesli tak czyli PINC0 zwarty jest do masy to robisz skok do etykiet zwieksz i do tąd w takich rozważaniach jest ok a delej to...
rezystancja pętli generator pętli separator pętli
głośny wiatrak sterować makieta kolejowy estradowy subwoofer aktywny
bateria milwaukee zmywarka bosch programy
Lokalizacja sterownika silnika Iveco Daily 2006 2.8 Wyłącznik LCA 1 nie załącza się - diagnostyka i naprawa