Stos dla przerwań ustawiłeś? 4\/3!!
Zmienną używaną w przerwaniu deklaruje się jako volatile (wykluczona z optymalizacji), inaczej będzie cyrk... volatile unsigned char licznik Ładniej by to wyglądało scalone... tzn... void czekaj(void) { licznik = 30; TCCR0 = 0x05; do{}while(licznik); } ISR(TIMER0_OVF_VECT) { licznik--; TCCR0 = 0; //wypadałoby...
F 08 - poszukaj bo dużo tego. Prawdopodobnie grzałka.
Zmienna count powinna być volatile .
Witam, chciałbym stworzyć funkcję delay za pomocą sprzętowego timera. W tej chwili mój kod wygląda tak: main , czyli standardowe miganie diodą. [syntax=c] delayus(10000); GPIOC->BSRR=GPIO_BSRR_BS9; delayus(10000); GPIOC->BSRR=GPIO_BSRR_BR9;[/syntax] Funkcja delay_us: [syntax=c] void delayus(unsigned int us) { TIM3->ARR = us; // Auto reload value TIM3->CNT=0;...
W dobrze napisanym kodzie delay nie jest potrzebny. OW robi się na przerwaniach - UART albo timer.
Nie używaj delay() tylko timera lub funkcji millis(): https://www.arduino.cc/en/Reference/Mill...
Inaczej się ominąć problemu zmiennej nie da? Bo pętla np. o wartości 100 z funkcją _delay_ms(1); wykona się jednak nieco dłużej niż w 100ms, a tu akurat są to czasy dość krytyczne. Dodano po 2 Po usunięciu błędów z delayem, został jeszcze inny, ale nie potrafię go zidentyfikować. Dołaczam ekran: http://obrazki.elektroda.pl/3451236200_1...
Nie każę stosować timera. Tylko takie użycie delay powoduje dość sporą jego niedokładność. Jeżeli mamy stałe skoki czasu to można to zrobić tak: [syntax=c]uint8_t delayTimeInSeconds; void delay() { int i; for (i = 0; i < delayTimeInSeconds; i++) { delay(1000); } }[/syntax] I obsługę przerwania/przycisku zrealizować tak: [syntax=c]#define MAX_DELAY_TIME_IN_SECONDS...
Zamiast delay użyj timera i usypianie uC. Dodam, że moje połączenie i2c nie zawiera tych oporników i magistrala do działania potrzebuje włączonych wszystkich czujników. Planuję to poprawić ale potrzebuję informacji jak / dlaczego / po co. Przeczytaj więc o podstawach I2C i zapoznaj się ze schematami modułów, których używasz.
Najprymitywniej: [syntax=c]void mydelay(uint16_t delay) { int f; for (f = 0; f<delay; f++) _delay_ms(1); } [/syntax] A powinienes zrobic w przerwaniu timera.
Wiem że zaraz mi się oberwie od innych ale na szybko to pokombinuj z wartością OCR0 - zwiększ ją np do 150 , po drugie możesz przełączyć na inny preskaler mniejszy niż 256. Lecz nie spodziewał bym się wielkiego efektu. Aby otrzymać pożądany efekt musisz zmienić plik ds18b20.c i zamiast wyłączać i włączać przerwania w funkcji temperatura musisz je włączać...
akurat delajka z timer32.c [syntax=c]******************************... void delay32Ms(uint8_t timer_num, uint32_t delayInMs) { if (timer_num == 0) { /* setup timer #0 for delay */ LPC_TMR32B0->TCR = 0x02; /* reset timer */ LPC_TMR32B0->PR = 0x00; /* set prescaler to zero */ LPC_TMR32B0->MR0 = delayInMs *...
Zgadza się, ale autor miał już problem z ogólnym działaniem programu. Wybór delay, millis, czy przerwania timera, to raczej szczegóły. Kod z #6 zadziała tak samo, ale łatwiej do niego dojść. Chyba. Pozdrawiam.
użyłbym timera :)
asm na pewno jest taki sam (szczegolnie ten ktorego uzywalem, bo to same podstawy), gorzej z timerami na ktorych opieraja sie dluzsze opoznienia (od ms w gore). nigdy nie zajmowalem sie dspic30, wiec... nie wiem jak to tam jest z tymi timerami. najwyzej dostosujesz sobie <: __________________________ modul sklada sie standardowo z pliku c i h. ponizej...
Ja kupiłem całkiem sporo rzeczy, ale ostatnio przyszedł taki oto timer, przekaźnik czasowy, czy jak go tam zwać: https://obrazki.elektroda.pl/8812632600_... https://www.aliexpress.com/item/Trigger-... Jak za 10 zł,...
Ustaw skok omijający szczebelek z timerem lub użyj timer "SS": retentive on-delay timer.
Ta biblioteka nie używa sprzętowego PWM. Według opisu używa jednego 16Bit Timera na każde 12 serv. Tak wiec Timer 16Bit jest już zajęty, PWM sprżętowy tego timera również jest niedostępny, ale możesz sobie te serva podłączyć pod dowolne piny a do odmierzania czasu zamiast Delay musisz/możesz użyć innego Timera :D
P.S: W timerze delay jest mi potrzebny bo wysyłam dane po rs485 i muszę odczekać czas ze względu na konwerter. Wiesz dobrze, że wcale nie musisz do tego używać delay'a... 4\/3!!
Dziękuję za odpowiedź. W takim razie mam jeszcze jedno pytanie: czy użyć do tego timera zamiast delay ? I w jaki sposób mam wywołać timera kilka razy w jednej funkcji ?
może cos takiego ?? [url=https://www.ebay.com/itm/DC-5V-12V-...
Akurat odmierzanie czasu na podstawie takiego delay opartego o timery jest całkiem precyzyjne. Z drugiej strony tak właśnie implementuje się delay na ARM, jako timer używa się SysTick. Z pewnością. Ale nie robi się tego w tak brutalny sposób, że angażujemy jeden timer do tylko jednego odliczania opóźnienia. Lepiej to zrobić w taki sposób: [syntax=c]void...
Witam Serdecznie Na początek kod: [syntax=c]#define F_CPU 4000000UL #include <avr/io.h> #include <avr/iom128.h> #include <util/delay.h> #include <avr/interrupt.h> volatile uint8_t i=0; int main(void) { DDRA = 0xFF; ASSR &= ~(1<<AS0); TCCR0 |= (1<<CS01) | (1<<CS02); TIMSK |= (1<<TOIE0); TCNT0 = 131;...
Też tak mi się wydaje. Sprawdzę po niedzieli czy to problem z delayem od HALa bo z tym programowym problemu raczej nie ma. Stosuję dwie funkcje ponieważ jedna daje opóźnienia w ms - HAL_Delay(), a druga to zrobiona programowo na timerze funkcja delay() która ustawia opóźnienie w mikrosekundach.
Mnie razi używanie delay(). O ile przebolałbym to w samym setupie to w pętli głównej jest nie do przyjęcia. No ale czat uczył się na kodach z netu. Poproś go by zamiast delay() użył timera lub choćby millis() ciekawe czy dobrze mu pójdzie.
Porada: napisz to od nowa. W obecnej wersji masz delay w przerwaniu EXTI i brak przerwania timera do obsługi wyświetlacza.
Witam, poniżej program, którego celem jest zliczanie impulsów zewnętrznych. Problem polega na tym, że po skonfigurowaniu rejestru TCCR0B, program się blokuje ( nie ma komunikacji z monitorem portu). Jeśli ktoś ma pomysł na to, to będę wdzięczny. void setup () { TCCR0B |= (1 << CS02) | (1 << CS01) | (1 << CS00); Serial.begin(9600);...
Można zamienić mam findera 80.01 nowego (BE) Signal OFF delay. Power is permenently applied to the timer. The output contacts transfer immediately on closure of the Signal Switch (S). Opening the Signal Switch initiates the preset delay, after which time the output contacts reset. https://www.finder-relais.net/en/finder-...
CZEKAJ3: MOV R2,#255 CZEKANIE: DJNZ R2,CZEKAJ3 obawiam się że to będzie chodzić w nieskończoność. Rzeczywiście, wrzuciłem to do jagody i była nieskończona pętla, jednak trochę nad tym posiedziałem i wyszło coś takiego: LJMP START ORG 100H START: ... LCALL CZEKAJ ... LJMP START CZEKAJ: MOV R0,#255 MOV R1,#255 MOV R2,#255 ODLICZAJ: DJNZ R2,ODLICZAJ...
Tak, niedokładność czasu delay wynika głównie z tego, że dodaje się do tego czas wykonania innych funkcji, w tym szczególnie funkcji obsługi przerwań. W przypadku odpowiedniego użycia timera tej niedokładności nie ma, a w każdym razie nie akumuluje się ona, tak jak w przypadku delay. Oczywiście jeśli coś ma być wykonywane w superdokładnych odstępach...
Używanie delaya jest niemądre (marnujesz prąd). Zrób coś takiego (pisane z palca, więc może wymagać poprawek). [syntax=c]#include <avr/interrupt.h> #include <avr/sleep.h> unsigned long int timer=0; ISR(TIMER0_COMPA_vect) { timer++; } ISR(ISR_from_pin)//check which in doc { timer=0; } int main(){ config_timer(); config_sleep(); config_ports();...
Edit: 14:48 (at)mpier dobra wskazówka, jednak chodzi w trybie PWM, Phase Correct, 8-bit clk/64 . Przy czym nadal nie rozumiem czemu wartość przeze mnie wpisana ginie, a nie przepisze się w kolejnym cyklu. To będzie chyba to. Nie ma się kiedy zapisać, jeśli timer nie zdążył się "przekręcić". Wstaw odpowiednio długie delay() po zapisie do OCR1A, to się...
Jak przeprowadzałeś ten test dla tych 2 kanałów (wschód - zachód)? Uzywając już docelowych fototranzystorów? Co z wejściami dla sensorów północ-południe, też miały coś podłączone czy wisiały w powietrzu? Co do kodu to przydałaby się jakaś histereza, i zmiana algorytmu żeby nie blokował się na jednym kierunku - aktualnie jak jest nierówność na jednym...
Moim zdaniem za cienkie kable i nieodpowiedni tranzystor na ogrzewanie szyby. Może sterować tylko przekaźnikiem do szyby lub lusterek, ale nie będę się przy tym upierał bo można go kupić jako "ENGINE MANAGEMENT DELAY TIMER RELAY DBC3203"
Nie umiem arduino i zrobiłem na rejestrach dla UNO z megą 328/328p. Powinno działać. Dla mega wystarczy zmienić nazwy rejestrów w funkcjach startujących i zatrzymujących timer. Obsługa opóźnienia zrealizowana na timerze pierwszym. [syntax=c]#include <avr/interrupt.h> volatile int timer_cnt=0; // tutaj definiujesz co po jakim czasie przekaznik...
Dlatego tak się dzieje, że _delay_ms(50); powoduje, że procesor mieli sobie coś w pętli przez 50ms nie interesując się niczym innym niż przerwaniami. Jeżeli chcesz coś robić w pewnych określonych interwałach czasowych użyj przerwań od timera.
https://www.ebay.com/itm/Chromalock-CS-3... Dokładnie taki sam.
Ja dorzucę jeszcze jedno - jakby nie napisał ISR to odmierzanie przerw przez delay w pętli głównej już nigdy nie będzie działało prawidłowo - odliczany czas powiększy się o czas realizacji wszystkich przerwań. To można ominąć w prosty sposób wywalając te delaye i robiąc opóźnienia na timerze.
Impulsy sterujące już masz zatem potrzebujesz jeszcze logikę sterująca bo sam impuls siłownikiem ruszał nie będzie, potrzebujesz podać sygnał aż do osiągnięcia zadanej pozycji. Zatem zdecyduj na czym to chcesz robić i w czym czujesz się mocny. Np można to zrobić na najtańszym przekaźniku programowalnym. Przycisk START Zawór 3-2 sygnał z wagi Naciskasz...
Zwłaszcza jak NWW wyjdzie dosyć wysoki np 1000. Jesteś optymistą. Przy podanych parametrach (50 i 0,1s) Maksymalne NWW (najmniejsza wspólna wielokrotność a nie dzielnik) to NWW=47*43*41*37= ponad 3000000. Zastanowiłbym się także nad użyciem przerwania od timera zamiast pętli z delayem. Nie ma się nad czym zastanawiać. Użycie timera to konieczność....
Cześć, w tej chwili znalazłem łatwiejsze rozwiązanie - "Cyfrowy Timer czasowy 5 V 2 s-2 h - C005 - delay - moduł opóźniający". Można kupić za niecałe 2 złote; jak myślisz, nada on się? https://abc-rc.pl/pl/products/cyfrowy-ti...
Masz prawie stale aktywną linię E - błąd. delay(1) może dać opóźnienie 0, bo możesz tę funkcję wywołać tuż przed "cykmięciem" timera - przy delay() argument musi być większy od 1. Ponazywaj te bity i maski, bo kodu z magicznymi liczbami nie daje się czytać.
Problem pewnie leży w procedurze. therm_read_temperature(temp); Tam zapewne masz jakiegoś delay-a ustawionego (na czas potrzebny na konwersje temperatury przez DS-a). Musiał byś pokombinować, żeby przebudować tą funkcję a delay-a wbudować najlepiej w obsługę przerwań z timera z którego korzystasz. Np. Timer przerywa częściej, za każdym razem...
(at)Pawel_1985 Jeżeli już blokujesz to po Ci te wszystkie przerwania etc etc. Zakładając jeden tick na µsek [syntax=c]void delay_us(unsigned delay) { //uint32_t start = TIM1 -> CNT; //dla 32 bitowego timera uint16_t start = TIM1 -> CNT; //dla 16 bitowego timera while(TIM1 -> CNT - start < delay); //while((uint16_t)(TIM1 -> CNT -...
BlueDraco i tak właśnie zrobię jak mówisz wyrzucę delay. Opóźnienia zrobię na flagach i timerze . Po prostu coś delay nie służy przy obsłudze uart choć nie wiem dla czego teoretycznie powinno śmigać bez problemu.
Wprowadzono aktualizację dla delay_us na BL602. Teraz używa bl_timer_delay_us zamiast nops. Nieprzetestowane.
Ja też dorzucę swoje 5 gr :) Poniżej delay oparte o timer, chcąc wykorzystać inny timer należy LPC_TIM0 zamienić na inny np. LPC_TIM1. [syntax=c] #include "LPC17xx.h" #include "lpc17xx_gpio.h" #include "lpc17xx_timer.h" void delay_us(uint32_t czas) { TIM_MATCHCFG_Type MatchConfigStruct; LPC_TIM0->IR = 1; // zresetowanie flagi przerwania od rejestru...
Szkoda, że nie wiadomo na czym jest zrobiony( rzeczony timer oczywiście). Dokładnie, miałem właśnie o tym pisać znając życie Chińczycy ukryli układ pod wyświetlaczem aby nie czynić dodatkowej roboty i zdzierać z niego symbolu. Widać od spodu PCB (w miejscu wyświetlacza) piny prawdopodobnie odpowiedzialne od programowania układu sterowania. Mym skromnym...
Jeśli nie delay, to zastanawiam się jak inaczej to rozwiązać... Ustawić przerwanie od timera, albo przenieść delay do głównej pętli programu.
Witam Nigdzie jakiejś w miarę definicji licznika i timera nie znalazłem. Może mi ktoś powiedzieć czy takie coś jest poprawne? Moduł czasowy (timer) - Działanie modułu czasowego odpowiada sposobowi działania przekaźnika czasowego z opóźnionym załączaniem lub wyłączaniem. Maksymalnie można zaprogramować 128 modułów czasowych oznaczonych instrukcją T0...
Pozbądź się delay-ów. Opóźnienia licz za pomocą timera. Wtedy wyłapiesz dokładnie moment, w których ma się dziać to co planujesz.
Nie widzę nic śmiesznego w "zestrojeniu". Wcześniej realizowałem kod w oparciu o delay(), i jak chciałem interwał jednosekundowy to okazało się, przy wartości delay(1000) timer opóźniał się, dopiero przy delay(765) pracował synchronicznie z zegarem komputera (do wiadomości kolegi Jankowskiego) :)
U mnie w pracy są tacy, co co drugie słowo mają sficzurowane ;] Niech będzie Panie Janie - to nie jest żaden scheduler, tylko PLANISTA :D I nie LP (low-pass) tylko dolno-przepustowy. Timer - czasomierz Delay - opóźnienie
Źle podchodzisz do problemu - zmienna i (czyli numer wyświetlanej cyfry) powinna być zmienną globalną, którą w przerwaniu od timera zwiększasz, a następnie wykonujesz blok switch (i) { ... }. Oczywiście delay w przerwaniu to "bluźnierstwo" :) Preskaler ustaw sobie na 64, wtedy przerwanie od timera dostniesz ok. 400x na sekundę, czyli odświeżanie całego...
No tak, nie podałem że po main() jest definicja. To teraz dalej całość: [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> volatile uint8_t pwm0=56; volatile uint8_t pwm1=108; volatile uint8_t pwm2=60; volatile uint8_t pwm3=70; volatile uint8_t pwm4=80; volatile uint8_t pwm5=85; volatile uint8_t pwm6=90;...
To może wykorzystać układ 555? Czy poniższy schemat zadziała jeśli cewkę przekaźnika 5V podłączę do pinu 3 oraz do GND? https://obrazki.elektroda.pl/9263745600_... Cewka przekaźnika będzie pobierać jakieś 150mA. Dodatkowo do pinów cewki trzeba będzie dostawić równolegle diodę w celu zniwelowania impulsów przy włączeniu cewki. [url=http://www.learningaboutelectronics...
http://www.tutorialspoint.com/java/util/... Jeźeli dalej bedziesz miał problem to podaj kod ktory stworzyłeś.
Mi bocik uparcie podawał, że w funkcji timerAlarm nie podaje się us lecz liczbę ticków timera. Niestety w Arduino powyżej 3.0 to nie działa - próbowałem bardzo wiele kombinacji, również taką. Przerwanie się nie generuje. Ale udało się wkońcu z botem dogadać i zrozumiał, że podaje ciągle podobne nie działające rozwiązanie :) Podaje, gdyby ktoś szukał...
Oj kolego jest wyraźnie napisane: Jestem początkującym programistą... wiec gotowca nie ma co dawać bo człowiek się nie uczy tylko bezmyślnie go używa. Podejrzewam że nie potrafiłby jeszcze zainicjować odpowiednio timer, skoro nie znalazł odpowiedzi na prosty problem. Tak poza tym z timerem tez procek się kreci bez celu oczekując na wciśniecie przycisku....
Kolego, zacznij od skasowania tego co napisałeś i zrób to jeszcze raz, tym razem tak jak należy. Czyli przerwania + timery. żadnych delay, a już w szczególności delay w ISR, podobnie jak pisania po LCD w ISR. Przejrzyj w tym celu noty katalogowe Atmela - np. AVR410 - stara jak świat, ale masz tam ideę.
I wszystko działa ok. Problem pojawia sie dopiero gdy timerem chcę obsłużyć sonar: Wg. mnie to takie umieszczanie delay'a w przerwaniu Timera jest ryzykowne. Czy oby na pewno w czasie tych 40 ms nie nastąpi ponowne żądanie przerwania? Trzeba by policzyć czasy i nie mieszać Timera z delay.
Wysyłasz procesor pod przerwanie którego niema. To jak myślisz co biedny procesor ma robi jak tam niema nic. [syntax=c] ISR(TIMER0_COMP_vect) { }[/syntax] To musi być dodane. Resztę zrobi kompilator i przestanie się zawieszać.
Zacznij od przerwania timera. Na waitms i innych delay daleko nie zajedziesz - to ślepy zaułek, tak się nie da napisać żadnego sensownego programu.
Pytanie: reaguje na uchylenie o parę mm, czy dopiero wtedy, gdy włączy się oświetlenie wnętrza lodówki? Pewnie to drugie... A baterie kosztują. Trafiłem na moduł, na którym można zrobić opóźnienie alarmu: [url=https://abc-rc.pl/product-pol-14390... Timer czasowy 5V 2s-2h - C005 -...
Czemu nie używasz timerów? Czemu używasz delay'ów? Czy funkcja delay wie, jaki masz zegar docelowy? To jest i na timerze i na delayach. Ale i tak pytanie które zadałeś to już raczej dla autora biblioteki którą kompiluję powinno być a nie do mnie. :D
I najważniejsze: Przy wykorzystaniu timera, zapomnij o funkcjach delay-opodobnych.
https://abc-rc.pl/pl/products/cyfrowy-ti... podłącz pod przycisk MODE może tak..
Do odmierzania odcinków czasu służy timer, a nie delay(). Nic nie piszesz o kasowaniu impulsu ECHO. Czy zajrzałeś do wątków i linków w nich zawartych?
Nie licz na gotowe biblioteki, które najczęściej zawierają masę błędów. Napisz swoją obsługę serwa. Timerem wygeneruj impuls zależnie od tego jaki kąt chcesz uzyskać. Wiele serw nie wymaga przerwy pomiędzy impulsami ok 20ms, jeśli jednak ma ona być to też jest proste, po wygenerowaniu impulsu, wywołane zostanie przerwanie, które zmieni konfigurację...
Problemem jest to jakieś. Jesli timer ma np. okres 550us, a twoja pętla np. 551us to się robi problem - synchronizacja będzie się co raz bardziej rozjeżdżać, a kolejnej impulsy PWM będą co raz bardziej zniekształcone. Zamiast delay zrób tak jak pisałem - w funkcji obsługi przepełnienia timera uaktualniaj OCR. W dodatku musisz tak ustawić preskaler,...
Nie, chodzi o całą obsługę OW zrobioną w przerwaniu timera, bez użycia jakichkolwiek funkcji "delay", a na to narzuca się jeszcze automat związany z pomiarami temperatury, też zrobiony na przerwaniach timera. Motto nr 2: Delay - to twój wróg. Użycie Delay gdziekolwiek poza inicjowaniem działania urządzenia (czyli przed "pętlą główną", o ile ona w ogóle...
[syntax=c] { alltime.setValue(Lengthoftitle); calyCzas = (Lengthoftitle - actualSeconds ); tim.setValue(calyCzas); alltrack.setValue(calyCzas); timProcent++; if (timProcent == Lengthoftitle ); { timProcent = 0; } delay(200);[/syntax] Lengthoftitle - cały czas timera actualSeconds odliczanie sekund [/code]
(at)ebson1307 Tak jak napisał kol. (at)bart-projects - przejrzyj notę użytego procesora, niewykluczone, że timer ma możliwość wprowadzania czasów martwych w generowany przebieg. Jeśli nie - to z pewnością w użytej rodzinie znajdziesz MCU, które taką możliwość posiadają. Robienie tego softwarowo jest możliwe - zrób sobie po prostu pętlę, w której wykonujesz...
Spróbuj tak... Styk NO (ten którym chcesz wyzwalać) dalej w szeregu timer z delay'em ustawionym na 5s i za tym znów styk NO którym chcesz to wyzwalać. Powinno to działać tak, że po wciścięciu przycisku zaczyna się odliczanie i po 5 s timer wystawi 1 na wyjściu, ale nie uruchomi ona cewki, jeśli w tym czasie przycisk nadal nie jest wciśnięty.
Witam Próbuję napisać program do sterowania myjnią pod sterownik s7 200 CPU 214, z tego co widzę w dokumentacji ten sterownik nie ma timera off delay (wyłączenie po zadanym czasie) , w programie step7 micro/win oczywiście jest taki timer , lecz po wyeksportowaniu programu i zaimportowaniu do symulatora s7-200 wyrzuca błąd, że dany typ sterownika nie...
Kwestia "wiecznego krzemu" wystąpiła po podaniu zasilania za pierwszym podejściem po upływie około 5-6 sekund. Zatem nie było wyłączenia i ponownego włączenia bo już nie było co zasilać Waść coś tam źle "skaliłeś" i stąd problemy. Schemat podobny do twojego (ale z diodą) proponują tu: http://555-timer-circuits.uk/operation/d... Można też podejść...
ok, dzięki za wyjaśnienie. Tym razem spróbowałem to samo z CTC. I jak zwykle coś schrzaniłem... [syntax=c]#include <avr/io.h> #include <util/delay.h> #include <avr/interrupt.h> ISR (TIMER1_COMPA_vect) { PORTC ^= 0x0F; //zmiana stanu 4 młodszych diod co sekundę } void ini(void); int main(void) { while(1) { PORTC ^= 0xF0; //zmiana stanu...
Zamiast delay wykorzystaj inny timer.
z wersją klasyczną też nie będzie problemów jeśli nie będzie korzystać się z żadnych delay'ów. Co to znaczy? Przecież obsługa 1-wire wymaga w miarę dokładnych opóźnień. Miałem zamiar napisać funkcje delay oparte na timerach. To jak mam "rozmawiać" z DS18B20 bez delay-ów?
Parametr, który chce mieć możliwość zmiany, to nastawa PT , czterech timerów TON... W ten sposób pokazany przez Ciebie, uda mi sie to..? Źle cię zrozumiałem, pisałeś o czasie cyklu w poście, a chodziło Ci o delay dla timera. W bloku TON wejście PT przyjmuje tylko zmienną tupu TIME, możesz użyć: T#5s dla 5 sekund Albo użyć INTa i castować go do TIME...
wiadomo ze chodzi o cos co odczeka jakis czas, czy to delay czy timer to sprawa drugorzedna
Na pierwszy rzut oka w Twoim kodzie, jak i u autora, nie ma żadnej manipulacji trybem wyjścia portu - pinu. Po wrzuceniu tego na STM32F722RE okazuje się, że nie ma to znaczenia. Przy ustawieniu trybu pinu na wyjście z open drain, odczytanie rejestru IDR daje poprawne działanie, bez zmiany trybu na wejście. Sprawdziłem to na porcie A i pinie PA0. Nie...
Witam... Najprościej chyba będzie użyć gotowych funkcji opuźnienia czasowego... Raczej nie ma sensu w tym przypadku pchać się w timer... #define F_CPU 1000000 /* Tu wpisujesz częstotliwość zegara z jakim pracuje uC #define CYCLES_PER_US ((F_CPU+500000)/1000000) /* cpu cycles per microsecond */ void delay(unsigned int us) {...
Spróbuj tego : .delay NOP DEC A JRNE delay RET .wait LD Y, #55 .wl1 LD A, #255 CALLdelay DEC Y JRNEwl1 RET Mam nadzieje, że ledon i ledoff zakończone są instrukcją RET? Najlepiej pokaż cały program.
Ponieważ jest sobota i jestem leniem to gotowego programu pisał nie będę. Poza tym cała frajda z Arduino to napisać własny program, który będzie działał. funkcja Delay jest najgorszym z możliwych rozwiązań, bo podczas jej wykonywania program stoi. Proponowałbym zapoznać się z funkcją timer. Proste przykłady są tutaj https://playground.arduino.cc/Code/Timer...
Przepraszam, mógłbyś wyjaśnić dlaczego tak się dzieje? Jest to dla mnie jakieś nieporozumienie. Odświeżanie LCD działa tylko przy zmianie wyświetlanych parametrów, dlatego jeśli urządzenie jest zostawione samo sobie, to generuje czysty przebieg. Ale jak użytkownik coś zmienia, to update LCD zajmuje chwilę. Wtedy urządzenie nie generuje sygnału, tylko...
Do tego celu stosuje się timery. Zapomnij o istnieniu delay. Rzuć okiem na: http://mikrokontrolery.blogspot.com/p/sp...
Migaj diodą w przerwaniu timera, a nie w pętli z delay().
Dzięki pomocy jednego z forumowiczy ( dziękuję mrh :) ), udało się ustalić, że przyczyną problemów komunikacyjnych z ds18b20 są źle skonfigurowane opóźnienia. Opóźnienia chciałem zrealizować na jednym z timerów 2-5 w trybie one pulse mode. Niestety nie udało mi się do tej pory znaleźć błędu, więc proszę o pomoc w walce z opóźnieniami. Zamieszczam kod...
Kolego Robaku w bibliotece lcd.h mam taką linijkę: #define XTAL 1000000 /**< clock frequency in Hz, used to calculate delay timer */ Jednak czy to w jakiś sposób może wpływać na działanie funkcji delay.h w pętli głównej programu ? Nie ukrywam, że to właśnie także do obsługi LCDka ten poprawny delay, ktory powinien dawac równo sekunde przy wywołaniu...
Błędy są wszędzie. Pierwszy - to użycie przerwania zmiany portu zamiast sprawdzania stanu przycisków w przerwaniu timera. Drugi - to użycie delay w przerwaniu. Trzeci - to źle napisane if else w przerwaniu timera. Czwarty - użycie własnego bool zamiast standardowego _Bool. To tak na początek.
Witam, cytat z opisu timera On-delay: The time in parameter T can be provided by the actual value of another already-programmed function: Analog comparator: Ax - Ay Analog threshold trigger: Ax Analog amplifier: Ax Analog multiplexer: AQ Analog ramp: AQ Mathematic instruction: AQ PI controller: AQ Up/Down counter: Cnt Wykorzystujesz wejście analogowe,...
Jeśli zrobisz obsługę OW na przerwaniu timera baz głupotek typu delay, to nie będzie tam oczekiwań i nie będzie to zakłócało wyświetlania. Jeśli dobrze zrobisz wyświetlanie, to nie zakłóci to obsługi OW na przerwaniu timera. Więc pewne szanse powodzenia są.
Ciesze się, że się udało. Teraz możesz postawić przed sobą ambitniejsze zadanie i spróbować wykorzystać timery zamiast funkcji delay. Może w tym projekcie nie zrobi to różnicy, ale będzie okazja do nauki wykorzystania timerów, co będzie jak znalazł, gdy w przyszłości przyjdzie pisać funkcje nieblokujące. Funkcja delay zatrzymuje całkowicie na pewien...
Mój program jest oparty o program mirka tylko attiny13 ma jeden timer i dlatego używam delay. Arduino ide to nie rozwiązanie . Chcę wiedzieć dlaczego to tak źle działa.
Szybko Ci poszło przeczytanie wszystkich artykułów na mikrokontrolery.blogspot. W każdym programie jakoś musisz obsługiwać upływ czasu, na pierwszej lekcji do zamigania led użyłeś delay, do paru innych prostych programów to też wystarczy, ale generalnie należy to robić na timerze. Jest to tak oczywiste, że w Arduino zrobili do tego gotowe funkcje, w...
Jeśli chcesz mieć to jako numer wejściowy, musisz wykonać następujące czynności. 1. zmień wszystko: // wait 60 seconds delay_s 60 Do // wait $CH4 seconds delay_s $CH4 więc wykorzystuje wartość kanału 4 2. Następnie dodaj na górze skryptu: // description SetChannelLabel 1 Close SetChannelLabel 2 Stop SetChannelLabel 3 Open // NEW // set label of timer...
Witam, widzę iż nikt tu nie zaglądał ostatnio najwyraźniej. Napisałem nowy program obracający silnik w lewo i prawo. Problem mam z timerem. Czy ktoś mógłby dopisać kod w funkcji timer ? Byłbym wdzięczny, bo ciężko mi jest zrozumieć te timery. A siedzę nad tym już jakiś czas. Zapalanie diody i gaszenie to jedno, tutaj musiałbym przypisać pętli timer...
Jeżeli w programie występuje konieczność odmierzania czasu ATmega musi mieć swój "zegarek" na którym będzie ten czas odmierzał. Tym zegarkiem jest Timer, natomiast funkcje typu delay() wstrzymują tylko wykonywanie programu.
delay timer stm32 timer delay timer zamiast delay
canon przesunąć głowica oscyloskop serwisu wymiana baterii czujki
sterownik pieca tigra mikrokomputer cobra1
Programowanie radia Toyota Avensis III T27 Norma PRO 4.54 – klucz licencyjny USB Cipher, migracja do klucza software, Athenasoft