Witam się miło z całym gronem...
Szukałem odpowiedzi tu na forum, ale nie potrafiłem znaleźć potrzebnych mi informacji. Więc pozwolę sobie zadać znawcą pytań kilka. Ale zacznę od pierwszego i najważniejszego.
Mianowicie mam do zrealizowania następujące zadanie...
Potrzebuję wygenerować na czterech końcówkach portu tego procesora sekwencję impulsów o stałym czasie trwania poziomu wysokiego i zmiennej przerwie między nimi i to w dość szerokim zakresie.
Impuls mam trwać 2ms. Natomiast przerwy między impulsami to od 10ms do 3sek. Oczywiście sekwencja ma być wcześniej zdefiniowana i odtwarzana w pętli przez ustalony czas.
Oczywiście dla każdego wyprowadzenia mam mieć różną sekwencję i ma się to odbywać równolegle.
Z tego co wymyśliłem to program będzie wyglądał w ten sposób:
W pętli będzie się zwiększał licznik co 1ms (komenda waitms 1 na końcu pętli wystarczy tu w zupełności, gdyż większa stabilność i dokładność nie jest wymagana) dla każdego kanału i gdy osiągnie określoną wartość włączy daną końcówkę na 2ms, czyli tu znowu zliczy do 2 (2x1ms) i ponownie wyłączy daną końcówkę licząc czas.
...i to mam napisane i działa bez problemu. Owa komenda na końcu pętli waitms1 daje mi 1ms dokładność, a zarazem nie wpływa mi znacząco na opóźnienie działaniu programu.
Teraz jest pytanie zasadnicze...
Jak przechować i odczytać sekwencję owych przerw dla impulsów?
W przypadku przerwy 3sek muszę zliczyć aż 3.000ms, więc muszę tu użyć zmiennej Integer. A dla przerw rzędu 10ms znowu tych wartości muszę mieć dość znaczną ilość dla całej sekwencji trwającej kilkanaście sekund.
Nie za bardzo wiem jak zapisać i przechowywać taką sekwencję danych i tu proszę kolegów o pomoc.
Jakąś ideę i podpowiedź. A może jakieś konkretne rozwiązanie?
Choć oczywiście z samego naprowadzenia na rozwiązanie będę bardzo kontent
A może źle podchodzę do całej idei i ktoś ma inna koncepcję umieszczenia sekwencji równoległych impulsów na 4 wyprowadzeniach o zmiennej przerwie i stałym czasie trwania (w zadanych granicach impuls 2ms przerwy od 10ms do 3sek)?
Pozdrawiam
Marcin
Szukałem odpowiedzi tu na forum, ale nie potrafiłem znaleźć potrzebnych mi informacji. Więc pozwolę sobie zadać znawcą pytań kilka. Ale zacznę od pierwszego i najważniejszego.
Mianowicie mam do zrealizowania następujące zadanie...
Potrzebuję wygenerować na czterech końcówkach portu tego procesora sekwencję impulsów o stałym czasie trwania poziomu wysokiego i zmiennej przerwie między nimi i to w dość szerokim zakresie.
Impuls mam trwać 2ms. Natomiast przerwy między impulsami to od 10ms do 3sek. Oczywiście sekwencja ma być wcześniej zdefiniowana i odtwarzana w pętli przez ustalony czas.
Oczywiście dla każdego wyprowadzenia mam mieć różną sekwencję i ma się to odbywać równolegle.
Z tego co wymyśliłem to program będzie wyglądał w ten sposób:
W pętli będzie się zwiększał licznik co 1ms (komenda waitms 1 na końcu pętli wystarczy tu w zupełności, gdyż większa stabilność i dokładność nie jest wymagana) dla każdego kanału i gdy osiągnie określoną wartość włączy daną końcówkę na 2ms, czyli tu znowu zliczy do 2 (2x1ms) i ponownie wyłączy daną końcówkę licząc czas.
...i to mam napisane i działa bez problemu. Owa komenda na końcu pętli waitms1 daje mi 1ms dokładność, a zarazem nie wpływa mi znacząco na opóźnienie działaniu programu.
Teraz jest pytanie zasadnicze...
Jak przechować i odczytać sekwencję owych przerw dla impulsów?
W przypadku przerwy 3sek muszę zliczyć aż 3.000ms, więc muszę tu użyć zmiennej Integer. A dla przerw rzędu 10ms znowu tych wartości muszę mieć dość znaczną ilość dla całej sekwencji trwającej kilkanaście sekund.
Nie za bardzo wiem jak zapisać i przechowywać taką sekwencję danych i tu proszę kolegów o pomoc.
Jakąś ideę i podpowiedź. A może jakieś konkretne rozwiązanie?
Choć oczywiście z samego naprowadzenia na rozwiązanie będę bardzo kontent
A może źle podchodzę do całej idei i ktoś ma inna koncepcję umieszczenia sekwencji równoległych impulsów na 4 wyprowadzeniach o zmiennej przerwie i stałym czasie trwania (w zadanych granicach impuls 2ms przerwy od 10ms do 3sek)?
Pozdrawiam
Marcin