Skocz do zawartości

Generowanie impulsu około 50mikrosekund bez delay


Pomocna odpowiedź

Arduino Leonardo.  Jak wygenerować pojedyńczy impuls np. 50us  (mikrosekund) bez funkcji delay delay.

Przerwanie od timera też jest chyba problematyczne, gdyż przy 16 MHz w czasie 50us to 800 taktów. Obsługa przerwania to zrzut na stos rejestrów, obsługa przerwania...

W sumie chyba za dużo czasu to przerwanie by zajmowało w stosunku do działania programu.

Czy można inaczej?

Link to post
Share on other sites

To jak nie chcesz blokowac delay'em to raczej tylko timery Ci zostaja...obsluga ISR to ~4us, plus obsluga kodu w przerwaniu...powiedz co konkretnie chcesz zrobic

Link to post
Share on other sites
(edytowany)
3 godziny temu, farmaceuta napisał:

To jak nie chcesz blokowac delay'em to raczej tylko timery Ci zostaja...

Kolega zapomniał o możliwościach elektroniki analogowej i multiwibratorze monostabilnym 😉 Może nie jest to rozwiązanie stricte na mikrokontrolerze, ale jak skuteczne...

Edytowano przez H1M4W4R1
  • Lubię! 1
Link to post
Share on other sites
20 minut temu, H1M4W4R1 napisał:

Kolega zapomniał o możliwościach elektroniki analogowej i multiwibratorze monostabilnym 😉 

A no tak, wiem ze cos takiego istnieje (choc z pamieci bym schematu nie narysowal😜) i nie wiem na jakiej zasadzie takie cos dziala (nie znam sie😢), ale chyba w tym przypadku trzeba by bardziej rozbudowac uklad bo autor chce pojedyncze impulsy...

Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

33 minuty temu, farmaceuta napisał:

A no tak, wiem ze cos takiego istnieje (choc z pamieci bym schematu nie narysowal😜) i nie wiem na jakiej zasadzie takie cos dziala (nie znam sie😢), ale chyba w tym przypadku trzeba by bardziej rozbudowac uklad bo autor chce pojedyncze impulsy...

Mylisz multiwibrator astabilny (lub bistabilny) z monostabilnym. Schemat monostabilnego masz tutaj:

image.thumb.png.e403e24358db4d57a5b974e726133e30.png

Czas impulsu kontrolujesz za pomocą R2 i C1 😉 

https://www.electronics-tutorials.ws/waveforms/monostable.html#:~:text=Monostable Multivibrators have only ONE,of the RC coupled circuit.

  • Lubię! 1
Link to post
Share on other sites

Pytanie kontrolne: dlaczego nie można zastosować delayMicroseconds w połączeniu z digitalWriteFast? Co takiego robi ten mikrokontroler, że 50 usec przerwy w działaniu jest niedopuszczalne?

Link to post
Share on other sites

Chyba najprościej będzie na NE555 .NE555 gwarantuje generowanie najkrótszego czasu 5µs.Natomiast jeśli idzie o mikrokontrolery to najlepiej na stm32 a oprogramowanie narzędziowe to STM32Cubeide.

Link to post
Share on other sites

Dziękuję za odpowiedzi. Impulsy potrzebne do sterowania dwoma silnikami krokowymi, typowymi sterownikami (pulse, dir) współbieżnie. Prosto, przerwanie timera w trybie CTC  w obsłudze przerwania  timery programowe co 10ms do pracy z podziałem czasu.  Kontroluję położenie silnika, dlatego wysyłam określoną ilość impulsów, paczkami kontrolowanymi przez timer programowy , wyliczam o ile powinien obrócić się drugi silnik, aktualizuję dane wyświetlane dane i muszę zareagować na klawiaturę albo obrócić silnik na zadaną przez encoder pozycję.   Impulsy generuję za pomocą delayMicroseconds. i zmianę stanu na wyjściu.  To mi działa, ale może być lepiej bo nie jest to optymalne.

Przepraszam może powinienem opisać wcześniej,  że  robię sterownik, wspomniałem co prawda, że chodzi mi o generowanie impulsu z arduino.

  

 

 

Link to post
Share on other sites
(edytowany)

Najlepiej zajrzyj do żródełek Marlina czy grbl - wątpię abyśmy tu wymyślili coś lepszego 🙂

Edytowano przez ethanak
Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.