pobudzanie generatora impulsow z Windows

Czesc,

potrzebuje zrobic w Windows nastepujaca rzecz:

co 1 sek. wyslac na RS-232 (podlaczonego via USB) i wyzwolic generator impulsow (na NE556). Czas trwania impulsu (np.

200/100/800/500ms) jest ponizej 1 sek, wiec nie bedzie zazebiania.

Nie chcialbym dawac jeszcze procka malego, ktory po odebraniu zadania "wachlowalby" odpowiednimi pinami (np. rts, cts itp). Chcialbym bezposredni z windowsa ruszyc te linie i nimi wyzwolic generator. Da sie to tak zrobic?

Reply to
adressss
Loading thread data ...

na razie nie chce z pewnych wzgledow generowac impulsow w malym procku (to pozniej).

Reply to
adresss

Am 18.10.2012 14:14, schrieb snipped-for-privacy@poczta.pl:

Jest parę możliwości, zależy też od wersji Windowsa. W wersjach < W2000 to jest proste, możesz pisać bezpośrednio na porty. W wersjach późniejszych musisz zainstalować drivery. Szukaj pod hasłem "virtual COM ports". Używam podobnego tricku do napędzania silnika krokowego przez port drukarki. State machine jest na windowsie, port równoległy służy wyłącznie do "machania nóżkami". Podobny system mam do sterowania tablicą z LEDami (matryca 121 sztuk). Do USB dałbym osobiście międzymordzie na FT232RL. Do sklejenia w parędziesiąt minut na płytce uniwersalnej, jak się sprężysz, to zmieści się toto do wtyczki USB. Coś takiego mam do sterowania wskaźnikiem laserowym z poziomu programu. Napędzane jest to jednak nie przez RS232 (to jest wolne), ale w trybie bit bang FT232R.

To, że timing w Windowsie jest niespecjalnie deterministryczny to chyba wiesz?

Waldek

Reply to
Waldemar Krzok

W dniu 2012-10-18 14:14, snipped-for-privacy@poczta.pl pisze:

To zależy jakiej dokładności/niezawodności oczekujesz. Ale z grubsza da się. Do majtania linią RTS wystarczy funkcja EscapeCommFunction

formatting link
Wcześniej trzeba sobie otworzyć port szeregowy, bez kontroli przepływu:
formatting link

Reply to
Zbych

snipped-for-privacy@poczta.pl snipped-for-privacy@poczta.pl napisał(a):

A czy nie będzie przypadkiem problemu dla tego generatora, jeśli jako pobudzenie dostanie po prostu bajt (kilka mikrosekundowych impulsów)? Wtedy nie trzeba by się bawić w żadne machanie nogami, bezpośredni dostęp do portu i inne wynalazki, tylko po prostu otwierałoby się port COM, wysyłało bajt i już. Byłoby to bardzo proste w realizacji.

Reply to
Grzegorz Niemirowski

W dniu 2012-10-18 18:06, Grzegorz Niemirowski pisze:

Zawsze można wysłać bajt 0x00, 0xff (sam bit startu) lub inny pomiędzy (taki, by na początku ramki były same zera a na końcu same jedynki). Można to zrobić nawet takim programem terminalowym (jeśli chodzi o wysyłanie z interwałem czasowym):

formatting link
Zmieniając prędkość transmisji można regulować czas trwania impulsu (jeśli kombinacje bitowe nie wystarczą).

Pozdrawiam, Paweł

Reply to
Paweł Hadam

Ciekawym rozwiązaniem jest też wykorzystanie DTR i RTS jako linii I2C i użycie np. PCF8574 lub innego extendera. W jednym projekcie musiałem ustawić przez port szeregowy kilka wyjść i to się okazało najprostsze. Dwa tranzystory, dwie diody, cztery rezystory i gotowe.

Reply to
Adam Wysocki

Rozwiązanie dobre ale pytanie czy autor dopuszcza generowanie impulsów podczas startu komputera. Różne systemy lubią wysyłać różne rzeczy na różne porty przy starcie.

Reply to
Adam Wysocki
Reply to
Grzegorz Niemirowski

Tylko czasami nie działa z kabelkami USB, bo timing się rozjeżdża.

Waldek

Reply to
Waldemar Krzok

Timing w I2C?

Reply to
Adam Wysocki

LPT to swoją drogą, z COM-em też tak bywa.

Reply to
Adam Wysocki

Am 22.10.2012 09:40, schrieb Adam Wysocki:

Też. Niektóre scalaki nie lubią, jak SCL ma "dziury" i np po 6 impulsach clocka jest przerwa na 3-4 takty, a kabelki USB (a konkretnie drivery do nich) potrafią zrobić przerwę w transmisji w najmniej odpowiednim momencie.

Waldek

Reply to
Waldemar Krzok

Nie spotkałem się z tym... jakie scalaki? Proste extendery IO też, czy raczej jakieś bardziej skomplikowane, pamięci, itd?

A to na pewno, z tym trzeba się liczyć...

Reply to
Adam Wysocki

Am 22.10.2012 14:24, schrieb Adam Wysocki:

Numerka w głowie nie mam, ale mieliśmy to raz z akceleratorem, raz z przetwornikiem 4xDA (MAX5cośtam) i (też MAXIMA) expander/LED-Driver. Odkryliśmy w czasie debugowania. Robiliśmy przerwy po 4 SCLach by lepiej widzieć na oscyloskopie, czasami wyskakiwał nam NACK od scalaka, przy pełnym burst tych problemów nie było.

Dlatego gotowych kabelków nie używam do tych celów, ale mam pudełko FT232R pod łapką. Do machania nóżkami nadaje się świetnie, a i RS232 niezależnie od nóżek można użyć. A w jednym ustrojstwie użyliśmy drania też do identyfikacji, używając kodu z EEPROMa.

Waldek

Reply to
Waldemar Krzok

Am 23.10.2012 17:02, schrieb J.F:

Ja używałem statycznie (załączanie i wyłączanie laserów), więc mi zwisało. Jak potrzebujesz z większą szybkością, to stosujesz bit-bang-mode. Masz wtedy 1us między zmianami, ale RS232 wtedy nie działa. Używając tylko GPIO i mając RS232 możliwe, że wyżej 1ms nie wyciągniesz.

Waldek

Reply to
Waldemar Krzok

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.