Skocz do zawartości

Generowanie impulsu około 50mikrosekund bez delay


Bogdan_aug

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 do komentarza
Share on other sites

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 do komentarza
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 do komentarza
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 do komentarza
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 do komentarza
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 do komentarza
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 do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.