Nie ma bufora. Operacja (od wywołania funkcji do jej zakończenia) trwa tyle, ile potrzeba na zapis do EEPROMu całego bloku danych podanych w argumencie. Dla przykładu, wywołujesz zapis: [syntax=c]#include <EEPROM.h> void setup() { uint8_t var[5] = {1,2,3,4,5}; EEPROM.put(0, var); } void loop() {}[/syntax] Wtedy kompilator tworzy funkcję z szablonu...
Ta funkcja wcale nie jest dziwna. Ot po prostu 32-bitowe odejmowanie. Śmiał możesz to zastąpić inną funkcją delay. Weź też pod uwagę, że transmisja z SGT jest transmisją synchroniczną, taktowaną generowanym przebiegiem CLK, w związku z tym opóźnienia są tylko po to, aby zwolnić transmisję do wartości akceptowanych przez czujnik.
Jest z góry wiadomy przecież procesor taktowany jest odpowiednią czestotliwościa.
temat wałkowany już kilka krotnie. funkcje delay mają argument typu float jeśli podajesz zmienna jako argument do dodajesz również operacje zmiennoprzecinkowe na tej funkcji które .... dają efekt jaki uzyskałeś
Jeśli dana funkcja się kilka razy, to zwykle nie zwraca się na optymalizację kodu, a jeśli okazuje się, że wykonuje się to wiele razy, wtedy zaczyna mieć spore znaczenie. Optymalizacja algorytmów to przydatne zagadnienie ;)
Kod masz tak napisany, że odebranie jakiekolwiek kodu wyłącza przekaźnik, a tylko odebranie 4472242 go załącza, po tym jak go dajesz na HIGH masz delay 1000 i już go nie wyłączasz, nie ma kolejnego polecenia digitalWrite(13,LOW);. Poza tym możesz być już wdzięczny, bo funkcja delay działa prawidłowo.
Tak się objawiają uszkodzone czujniki. Sprawdź go jeszcze raz w bascomie. Pozatym masz jakieś dziwne te delay'e czemu używasz funkcji owire_delay przecież masz _delay_ms? Trochę wróżąc z kodu wnioskuje że funkcja delay odmierza 0,25us * przekazany argument. Piszesz w komenarzach że niby ta pętla for + funkcja poniżej jej trwa 470ms. Jak nie przestawiałeś...
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...
To zależy co masz na myśli, delay też nie blokuje przerwań, ale jest uznawana za funkcję blokującą. Jak w loop wywołasz pulseln() i będziesz będziesz mierzył impuls 500ms to w tym czasie żadna funkcja z loop się nie wykona, tak samo jak z delay().
Masz 2 błędy: 1. Funkcja delay nie jest static. 2. Przekazujesz do _delay_ms wartość nie znaną na etapie kompilacji. [syntax=c]static inline void delay(uint16_t cnt) { #if !DEBUG while (cnt--) _delay_ms(1); #endif }[/syntax] BTW: Wklejając tutaj kod + komunikaty błędu kompilacji będziesz miał większe szanse na uzyskanie pomocy niż w przypadku screen...
No to teraz się wyjaśniło. Funkcja _delay_ms() wywołuje makro __builtin_avr_delay_cycles(), które: Delay execution for ticks cycles. Note that this built-in does not take into account the effect of interrupts that might increase delay time. ticks must be a compile-time integer constant ; delays with a variable number of cycles are not supported . Jestem...
Problem masz gdzieś indziej. W kompilatorze Codevision funkcja systemowa delay ma wewnątrz kasowanie watchdoga. Spróbuj zamienić ją na pętlę while(1); a powineś zuważyć efekt zadziałania watchdoga.
W sklepie mówili, że to nie zagra dobrze bez procesora, tak jak powinno A powiedzieli co masz na tym procesorze ogarnąć? Jak nie to resztę sobie sam dopowiedz. Generalnie procesor głośnikowy daje Ci do dyspozycji: - gain - masz pokrętła w paczkach - korektor albo graficzny albo PEQ do korekcji podbarwień systemu. To masz zrealizowane w paczkach, choć...
Dziwna rzecz z tym delay'iem. O ile proste miganie ledem nieznacznie przyspiesza po optymalizacji o tyle taki delay w funkcjach obsługi LCD jest "na oko" 20-30 razy szybszy. Nawet jeśli te dwie rzeczy występują w tym samym programie. Przy włączonej optymalizacji ten delay sprowadza się do wywołania PUSTEJ funkcji, bo cały "środek" zostanie zoptymalizowany....
opoznienie bedzie wynosic w przyblizeniu 256*100*2 czyli 51200 cykli instrukcji, takie to proste :) Wynika to z tego, ze 100 razy wywolujemy petle, ktora wykonuje 256 razy instrukcje djnz a ta instrukcja trwa 2 cykle. Teraz w zaleznosci od zegara twojego procesora i od ilosci cykli jakie potrzebuje twoj procesor na wykonanie tych instrukcji bedzie zalezec...
Do RS485 są biblioteki, może lepiej to zadziała. Nadawanie w Arduino jest na przerwaniach, wysyłasz napis do bufora i funkcja Serial.print się kończy, w tle uruchamia się funkcja do faktycznego wysyłania w przerwaniach i nadaje znak po znaku, ale ty przełączasz na odbiór, więc nie wysyła. Pierwszy wysyła bo masz delay 500. Po wysłaniu tekstu możesz...
... Czujka DS podłączona jest do Portu D pin 0 poprzez rezystor 4,7 kOhm. Oto moja procedura RESETu #define DQ_PORT PORTC // Port czujnika DS #define DQ_PIN PINC // Pin czujnika DS #define DQ_DDR DDRC // Rejestr portu czujnika DS #define DQ_BIT 0 // numer pinu czujnika Nic dodać , nic ująć :D Piotrek
Ok, napisałeś zrozumiale :) Mam prośbę o podesłanie kodu jak teraz wygląda u Ciebie funkcja setup(). Ale to dopiero po kolejnym teście, który proponuję. Dodaj niewielki delay przed lcd.begin(); np. jakieś 100-200ms, jeśli to zawiedzie, to proszę pokaż kod.
Dla 3 sygnałów ttl (przetłumacz sobie z Pascala na dowolny język jaki potrzebujesz): {Przebiegi na poszczególnych bitach wyjściowych} bit0 111000 bit1 001110 bit2 100011 { Ograniczenie częstotliwości do zakresu akceptowalnego} if f<10 then f=10; if f>200 then f:=200; { Wyliczenie okresu } Okres:=Int(1000/f);...
Na potrzeby obsługi termometru DS18B20U (1-wire) potrzebuję funkcji, która oczekuje określoną ilość czasu z dokładnością do mikrosekund. Znalazłem coś takiego: [url=http://forums.xilinx.com/xlnx/attac... Niestety z moich testów wynika, że ta funkcja nie działa prawidłowo - wydaje mi się, że ze względu na...
Jeszcze jedna rzecz, kompilujesz z -O3? delay.h nie dziala bez optymalizacji. Nie masz zadnych warningów?
w ten sposob pozbylem sie delaya w ogole Jeżeli nie masz żadnych delay w loop() to tym bardziej możesz przenieść obsługę przycisku w to miejsce. Proponuję użycie EasyButton: https://github.com/evert-arias/EasyButto... Funkcja read() z tej biblioteki też nie wprowadza żadnych delay(), a detekcję naciśnięcia przycisku można sobie elegancko podpiąć pod...
W uC od NXP do zapoznania się z rejestrami i jego działaniem jest User Manual (w skrócie UM), natomiast Data Sheet opisuję ogólnie parametry danego uC - taka mała dygresia. UM dla Twojego uC można pobrać z www.lpcware.com w linku Downloads dla lpc11xx . Jest pod nazwą UM10398 aktualnie Rev. 12.3 — 10 June 2014. W podanym linku znajduje się też...
Jakie środowisko? Zakładam, że CooCox, ponieważ w innych takie rzeczy raczej nie występują. Odkąd pamiętam, to taki zapis zawsze poprawnie konfigurował SysTick do generowania przerwań co 1ms (1000Hz): [syntax=C] #include core_cm4.h #define FREQUENCY 168000000ul // lub dowolna inna, ale prawdziwa ///... jakiś fragment programu... if (SysTick_Config(FREQUENCY...
int i; for(i=0;i<=255;++i) { OCR0B=i; } a żeby powoli, to byś musiał delay funkcje zastosować. #include <util/delay.h> ... for(i=0;i<=255;++i) { OCR0B=i; _delay_loop_2(100); } gdzie 100 w funkcji to jest odstęp (chyba cykle procesora razy cośtam, ale nie mam pewności) Dodano po 12 funkcja for(xxx;yyy;zzz)...
przecież pokazana funkcja USART_ReceiveByte czeka do skutku aż bajt zostanie odebrany, więc delay w niczym nie przeszkodzi. Tym niemniej jest szansa na zgubienie danych.
Dane pokazywane oczom użytkownika mogą być zupełnie inne niż te przechowywane w programie. Wpisywanie wartości liczby po cyferce jest uciążliwe. W piekarniku mam ustawianą godzinę jednym przyciskiem (czy dwoma), wystarczy w programie zauważyć że przycisk został wciśnięty, przytrzymany przez 1s, przytrzymany przez 5s,itd. Jak nie używasz delay nie jest...
Moim zdaniem dla tak małego ARM lepiej używać CMSIS. W czym piszesz program, czy nie podpowiada Ci IDE co dana funkcja robi ? Poniżej mruganie diodą dla Twojej płytki. Uważam, że należało kupić coś nowszego np. opartego [url=https://www.embeddedartists.com/pro... [syntax=c]#include "LPC11xx.h" int main(void) { unsigned...
1. Jak nie korzystasz z przerwań to ustaw GIE=0; 2. przykładowe ustawienia działające #include <dspic30f2010.h> /****************************** * Configuration Bits ******************************/ //_FOSC(CSW_FSCM_OFF & FRC_PLL8); /* Fast RC with PLLx8 = 16MIP Clock Mon/Switch OFF */ _FOSC(CSW_FSCM_OFF & XT_PLL8); /* 8MHz Crystal with...
Napisz tak swoje podprogramy by były w nich powtarzalne pętle, wtedy można użyć poleceń break (dla pętli) i return (dla całej funkcji) by ją przerwać gdy przycisk zostanie wciśnięty: if (digitalRead(A2) == 0) return;. Można to wstawiać dowolnie często, ale jak odpowiednio napiszesz funkcję (podprogram) z millis to ona może działać cały czas "równolegle"...
Zanim zaczniesz programować Arduino poczytaj trochę o programowaniu Arduino. W Twoim programie są 3 funkcje: void setup(), void loop() i void menu(). Po włączeniu mikrokontrolera wykonuje się funkcja void setup(), a następnie zaczyna się wykonywać w kółko void loop(). void menu() nie wykona się w takim kodzie nigdy, bo... nigdzie nie napisałeś kiedy...
uzupełniłem sobie piny i chciał bym na początek zrealizować jednym klawiszem tak: jedno kliknięcie- miganie diody przetrzymanie klawisza- zaświecenie się diody Tak jak Ty to robisz to jest nie bardzo poprawnie. Zauważ że kiedy robisz te delay to program tkwi tam jakiś czas i nie podgląda sygnałów wejściowych. Również tym sposobem możesz robić tylko...
oki oldboy.....przepraszam zapomniałem dodać "np. sprawa linii opóniającej w TVma się tak:"- kolega się pytał co to jest - to mu mówie na przykładzie TV pzdr
Nawet z uwzględnieniem zmniejszenia dokładności (które przy wykorzystaniu aktualnej wersji avr-gcc przy typowych opcjach kompilacji nie występuje – patrz fragment If the avr-gcc toolchain has __builtin_avr_delay_cycles(unsigned long) support w dokumentacji) te funkcje (jako same w sobie) są całkiem niezłe. W praktycznych zastosowaniach ich niedokładność...
jeśli chodzi o inne przerwania od układów peryferyjnych to poza ustawieniem rejestrów tego układu muszę włączyć to przerwanie i czy tu wystarczy funkcja z core_cm3 np. NVIC_EnableIRQ( RTC_IRQn ); tak I dlaczego nie musiałem włączyć globalnych przerwań żeby SysTick działał?;] Przerwanie SysTick jest w grupie exceptions, ich się nie da wyłączyć w NVIC....
https://obrazki.elektroda.pl/4024863600_... W tym temacie zbuduję od 0 prosty ściemniacz LED sterowany dwoma przyciskami. Projekt będzie oparty o PIC12F683, którego tu zaprogramuję bez użycia zewnętrznych bibliotek - GPIO i PWM zostanie skonfigurowane wedle informacji z noty katalogowej. Do tego dobiorę kilka zewnętrznych elementów...
Problem był dosyć trywialny - jeden marker który ustawiłem aby zmienił wartość z false na true w momencie wywołania attachInterrupt miał wartość true, a funkcja wykonywana w tym poleceniu działa tylko wtedy gdy marker1==false. Bez urazy ale zrobiłeś coś, co generalnie jest bez sensu. Wsadziłeś do ISR kawał kodu, który robi różne rzeczy, ustawia parametry,...
Witam wszystkich forumowiczów. Mam głupie pytanie czy mogę zapisać funkcję delay tak: [syntax=c]while(1){ int x=1; delay_ms(x); x=x+1; }[/syntax] Czy w takim przypadku funkcja dealy będzie poprawnie działać? Czy z każdą pętlą mój czas będzie się wydłużał o 1ms? Niestety nie mam możliwości tego sprawdzić :( Pozdrawiam i dziękuję za odpowiedź :)
https://obrazki.elektroda.pl/5325188100_... Przedstawię tutaj ADS1115 czyli 4-kanałowy, 16-bitowy przetwornik ADC. ADS1115 dostępny jest do kupienia w naszym kraju za kilkanaście złotych, a zza granicy można go sprowadzić nawet o połowę taniej. ADS1115 korzysta z protokołu I2C, więc można na jedną magistralę podłączyć aż 4 osobne takie...
...więc się zgadza wszystko... Wprost przeciwnie - nic się nie zgadza :!: K ma być 8 bitowa wartością wpisana do rejestrów 16-31 :) No właśnie , a Ty jako argument K , podajesz time , który to jest adresem(wskaźnikiem) do komórki pamięci RAM i na dokładkę , ten adres w procesie kompilacji nie jest znany , bo time jest zmienną lokalną. Argument K ,...
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...
https://obrazki.elektroda.pl/9666499900_... Tego ptaszka musisz odznaczyć.
https://obrazki.elektroda.pl/8545401100_... Mój poprzedni temat o Pierwsze kroki Jakiś czas temu publikowałem temat o https://obrazki.elektroda.pl/4535548900_... Wyszukujemy DHT. Biblioteka DHT wymaga też dodania Adafruit Unified Sensor Library, więc dodajemy obie biblioteki. Najpierw Unified Sensor: https://obrazki.elektroda.pl/1839946000_...
Ja tam nie mam żadnego problemu żeby go skompilować, ściągnij sobie najnowszą wersje arduino, między 1.0 a wcześniejszymi trochę pozmieniał się kod. Ja mam 1.0 i wszystko działa [syntax=c]int buttonPin = 2; int ledPin = 13; int buttonState = 0; void setup() { pinMode(ledPin, OUTPUT); pinMode(buttonPin, INPUT); } void loop(){ buttonState = digitalRead(buttonPin);...
w pierwszej fnkcji zadeklaruj "u" jako volatile, druga nie powinna być optymalizowana. 4\/3!!
#include <util/delay.h> #include <avr/io.h> void TWI_start(void); void TWI_repeated_start(void); void TWI_init_master(void); void TWI_write_address(unsigned char); void TWI_read_address(unsigned char); void TWI_write_data(uint8_t); void TWI_read_data(void); void TWI_stop(void);...
IRQ tester https://obrazki.elektroda.pl/3243423400_... IRQ Tester to proste narzędzie, głównie do testowania czasu odpowiedzi na impulsy, lub czasów międzyzboczowych dostarczonego sygnału. Program został napsiany na ukontroler AVR Atmega168, a jego głównym zadaniem jest funkcja multiwibratora monostabilnego, którego działanie polega...
Niestety program sie nie kompiluje bo wyskakuje mi błąd "Type 'RCC_APB2Periph_GPIOB' undeclared (first use in this function)" Tam był przykład dla STM32F1 dlatego zmień na: RCC_AHBPeriph_GPIOB Najprościej opóźnienie realizuje się tak: [syntax=c]for (volatile uint32_t i = 0; i < 0xFFFFF; i++);[/syntax]
https://obrazki.elektroda.pl/9760997100_... Witajcie moi drodzy. Przedstawię tu wnętrze starego tunera sat Kathrein Innovatron UFD 41 260211 a potem spróbuję pokazać działanie kilku ciekawszych części ze środka i omówić ich zastosowanie w projektach DIY. Uruchomię tutaj m. in. modulator RF od ALPS, przełącznik A/V TDA8440 (poprzełączamy...
PIT- Głownie do przełączania wątków czas miedzy 0,03 us a 0,3 sek. Taktowanie ma z kwarcu. Jest małe ale, pamiętaj że ten czas zależy jeszcze od opcji kompilacji, nie pamiętam teraz dokładnie ale chyba chodzi o optymalizacje kodu. RTT - on jest taktowany z generatora RC. Podstawę może mieć od 100 us. Na mim można zrobić dokładny zegar. PWM może mieć...
funkcja delay arduino stm32f4 funkcja delay delay pamięć delay pamięć
kolor pixela tranzystory mj11015 zmywarka electrolux kupić
koszulki firmowe bateria parkside
Microsoft LifeCam HD-3000 brak obrazu i diody na Windows 7 Pro Konwersja złącza IDE na SATA w Compal HEL81