Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 2 mar 2025, o 08:28


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 2 cze 2015, o 12:55 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

Witam,

Napisałem część kodu.
Program ma działać tak że jeżeli na jednym z wejść pojawi się T/F ma wykonać się instrukcja 8 razy. Tzn po każdym sygnale na wejściu niezależnie ile on będzie trwał. i tutaj mam problem bo jeśli na wejście pinów pójdzie sygnał instrukcja wykonuję się 8 razy ale jeśli już następny sygnał pójdzie na pin to instrukcja nie startuje, (zapewnie dla tego że ma się wykonać 8 razy i więcej już nie).

Macie może jakieś rozwiązanie na to.

Pozdrawiam serdecznie

Składnia: [ Pobierz ] [ Ukryj ]
język cpp
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2015, o 13:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2012
Posty: 778
Pomógł: 9

Po zakończeniu pętli for program powinien wyzerować wartość zmiennej i.
Ponieważ za drugim naciśnięciem klawisza pętla for nie jest w stanie się wykonać gdyż sprawdza czy zmienna i jest mniejsza od 8 a skoro pętla for już się raz wykonała zmienna i będzie miała wartość 8 czyli zmienna nie spełnia warunku i program automatycznie przechodzi do części else.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2015, o 13:10 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

dokładnie ;) a jak taki problem rozwiązać ?:P



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2015, o 13:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Dodam, że brakuje Ci jeszcze nawiasów klamrowych po instrukcji for {}

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2015, o 13:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2012
Posty: 778
Pomógł: 9

venciak napisał(a):
dokładnie ;) a jak taki problem rozwiązać ?:P

Napisałem powyżej
Cytuj:
Po zakończeniu pętli for program powinien wyzerować wartość zmiennej i.


Czyli po pętli for wystarczy taka linijka kodu i=0; lub podobna, ponad rok nie pisałem w C więc mogę się mylić :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2015, o 14:22 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

ok super dzięki za info ;) ale wystarczyło usnąć retun 0; ile razy pojawi się sygnał tak wyjście reaguje.
ale mam teraz inny problem i może uda mi się go w miarę zrozumiale opisać.

a więc:
jeśli na ustalonym pinie pojawi się sygnał to ma wykonać się instrukcja z pętli for to znaczy ma być puszczany sygnał na PB3 z częstotliwością 2ms. co pozwala mi na obrót krokowcami dwoma o określony kąt do ustalonego momentu, i chcę uzyskać efekt aby one doszły do ustalonego momentu i wróciły do poprzedniej pozycji niezależnie od tego czy sygnał który uruchamia mechanizm czyli ten na PC3 będzie bardzo krótki wręcz impuls czy będzie trwał np 1 minute.

aktualnie uzyskany efekt to taki że jeśli przycisk wciśnięty to silniki się wychylają do ustalonej pozycji i są tam tak długo dopóki nie odpuszczę przycisku.

Dodam że próbowałem zwiększyć ilość "i < " w pętli for ale im zwiększam tam ilość tym zmniejsza się kąt wychyłu.
próbowałem tez skopiować z 40 razy samą funkcję z pętli for ale to też nic nie daje.

macie jakieś pomysły jeśli w ogóle ktoś zrozumiał co tu próbowałem wypocić :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2015, o 14:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 lut 2012
Posty: 778
Pomógł: 9

Nie wiem czy dobrze cię zrozumiałem :) ale chcesz uzyskać taki efekt ?

Jeżeli klawisz zostanie naciśnięty to na pinie PB3 ma się pojawić stan niski/wysoki na czas 2ms ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2015, o 14:38 
Offline
Użytkownik

Dołączył(a): 17 lis 2014
Posty: 30
Pomógł: 0

hmmm

Jeżeli na PC3 pojawi się masa czy tam plus, no sygnał/ impuls to ma rozpocząć się instrukcja stan niski, 2ms, wysoki, 2ms, niski itd.
przerwą między stanem niskim a wysoki wyznaczam kąt wychylenia krokowca, po prostu częstotliwość impulsów sterujących,
ale ta częstotliwość impulsów musi trwać tak długo albo inaczej mówiąc tyle razy żeby silnik zdążył dojść do określonej pozycji nawet gdy na PINC sygnału już nie ma bo był tylko chwilowym impulsem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 cze 2015, o 15:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Nie wiem czy do końca o to Ci chodzi, ale spróbuj tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Gdy wciśniesz przycisk to procesor będzie podawał na wyjściu PB3 impulsy co 2ms w nieskończoność, aż do momentu, gdy wciśniesz przycisk jeszcze raz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO