• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Jak ustawić funkcje czasu wyjścia na określony i off
#11
(03-07-2019, 06:02)Jarewa0606 napisał(a):
(02-07-2019, 19:20)es2 napisał(a): To jedno z najprostszych ale i najgorszych rozwiązań 
A czemu millis to jedno z najgorszych rozwiazań??
Skoro pytasz, to masz małe doświadczenie w programowaniu i nie zrealizowałeś żadnego poważnego projektu a nawet na AVR czy 8051 jest to możliwe ale wymaga większego wkładu pracy niż w przypadku nowoczesnych rozwiązań (ARM, FPGA/CPLD).

Stopniowanie rozwiązań od najgorszego:
- Delay.
- Millis i inne rozwiązania realizowane w pętli głównej.
- Przerwania od timera.
- Wykorzystanie sprzętu.
W ostatnim przypadku najczęściej do wyboru są dwie opcje:
- Wykorzystanie układów peryferyjnych bez użycia DMA.
- Jak wyżej z DMA.

Najlepszym, najdokładniejszy, nieabsorbującym czasu procesora rozwiązaniem tego konkretnego przypadku jest wykorzystania timera w trybie one pulse (na AVR to sprzętowo chyba nie da się zrealizować).

Mills ma ta wadę, że gdy jakieś operacje wykonują się długo, przykładowo wysyłanie danych do LCD, poprzedzone odczytem 1-Wire przez beznadziejne arduinowskie biblioteki korzystające niepotrzebnie z float, do tego ładowanie pliku JPG z karty SD, to zdarzenie, może wykonać się z opóźnieniem prawie 3 sekund a nawet więcej.
Oczywiście, pojawią się głosy, że można robić po kawałku, odczytać 1-Wire, później plik z SD, po kawałku (kto to potrafi?), wysyłać dane do LCD po kawałku (kto próbował?) czyli narobić się a i tak, opóźnień nie da się wyeliminować. Prościej, skuteczniej, użyć przerwań od timera, bo w tym przypadku, sprzętowe sterowanie wyjścia timerem, to przerost formy nad treścią.

Ułomności "metody" delay chyba nie muszę uzasadniać?
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Jak ustawić funkcje czasu wyjścia na określony i off - przez es2 - 03-07-2019, 07:57

Skocz do:


Przeglądający: 1 gości