(15-07-2018, 21:53)kaczakat napisał(a): Millis odpowiednio używane działa bez zarzutu.Ten co wymyślił millis musiał być kretynem albo naćpany. Jeśli chciałbym zrealizować swoje timera 8 czy 16 bit, i wepnę się w przerwanie od timera0 to muszę robić jakieś chore korekty co 125ms. Wszystko dlatego, że ustawione jest przerwanie od przepełnienia a ni porównania w trybie CTC. Większego idiotyzmu jeszcze nie widziałem.
Problem przepełniania jest o czym niejedne już się dowiedział. Co się stanie jak czekając np 60 minut, użyję rozkazów:
x=millis() + 60*60*1000;
if( millis() > x )
a millis będzie równe 0xFFFFFF00 ?
Czy zajechał kartę? Wątpię. Pętla loop nie wykonywała się tysiące czy miliony razy na sekundę. Otworzenie i zamknięcie pliku jest czasochłonne. Strzelam, że zajmuje z pół sekundy albo i dłużej.
Zapisywany plik jest mały a karty mają mechanizm zapobiegający zapisom tych samych bloków. Powiedzmy, że karta jest mała 2GB. Sektor duży 4kB. Daje to ok 500'000bloków. Zakładając zapis co 500ms daje to 250'000 sekund = 4100min = 69godzin = ok 3 dni. Po 3 dniach bloki będą zajmowane od początku. Standardowy flash to 10'000 zapisów czyli 30'000dni = ok 82lata. Dobrze liczę?
Niech będzie, ze zapisywał co 100ms w co wątpię to da jakieś 16 lat.
No dobrze, hyper Arduino z roku 3000, zapis co 10ms. 1,6 roku.
Miał szansę zajeździć kartę?
Trzeba pamiętać, że blok raczej nie ma 4kB a 512 bajtów, co oznacza, ze czas życia karty należy pomnożyć przez 8.
Dobrze policzyłem?
A kolega sprawdził:
(15-07-2018, 21:53)kaczakat napisał(a): Tak optymalnie to można próbować zacząć od zapisu raz na 1 minutę, a mln/s to mocne nieporozumienie.?
Jeśli tak to proszę o wyniki, ile do tego miliona brakuje?