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



Teraz jest 14 sty 2025, o 16:28


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 29 cze 2015, o 21:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 mar 2014
Posty: 197
Lokalizacja: Kielce
Pomógł: 3

Witam. Nie wiem za bardzo jak ugryźć temat zaprzęgnięcia Timerów programowych do napędzania regulacji fazy, a mianowicie tej funkcji:

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


Jak pozbyć się tych delajów :|

_________________
BlueBook



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2015, o 21:48 
Offline
Użytkownik

Dołączył(a): 01 sty 2014
Posty: 116
Pomógł: 14

Chyba nie za bardzo wiadomo o co Tobie chodzi. Do czego zmienna k w drugiej pętki for? Nic z nią wewnątrz pętli się nie dzieje..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2015, o 22:12 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27345
Lokalizacja: Szczecin
Pomógł: 1041

timery programowe i takie paskudne delaye 2000 ms ??? też kompletnie nie wiem o co tu chodzi

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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

Dołączył(a): 12 mar 2014
Posty: 197
Lokalizacja: Kielce
Pomógł: 3

W książce są użyte delaje. Natomiast ja chce wyrzucić je i użyć timerów programowych. Czyli:

krok1: Inkrementacja zmiennej "i" do 100 (np. 15ms);
krok2: Odczekanie 2 sekund
krok3: dekrementacja zmiennej -- (np.15ms)
krok4:Odczekanie 2 sekund

Problem jest taki, że nie wiem jak to zrobić. Gdyż najpierw jest czas pracy(inkrementacja "i") potem 2 sekundy przerwy potem znów czas pracy (dekrementacja "i") i znów odczekanie 2 sekund. Jak użyć do tego Timera programowego???

_________________
BlueBook



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 cze 2015, o 23:25 
Offline
Użytkownik

Dołączył(a): 01 sty 2014
Posty: 116
Pomógł: 14

Możesz w przerwaniu od timera, ustawionym na 15ms inkrementować zmienną i w określonych zakresach zmiennej inkrementować lub dekrementować zmienna "i" :

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: 30 cze 2015, o 08:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 mar 2014
Posty: 197
Lokalizacja: Kielce
Pomógł: 3

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



zrobiłem coś takiego. Niby ok działa ale jest dziwne działanie urządzenia 230. Nie takie płynne i nie za fajnie wygląda efekt końcowy...

Nie wiem od czego to zależy, stosując pętle for z niebieskiej książki wszystko jest ok ale są tam delaje co blokuje procka :(

------------------------ [ Dodano po: 37 minutach ]

A inaczej niż delajem to jak opóźnić pętle for ???

------------------------ [ Dodano po: 41 minutach ]

Daniel880 napisał(a):
Możesz w przerwaniu od timera, ustawionym na 15ms inkrementować zmienną i w określonych zakresach zmiennej inkrementować lub dekrementować zmienna "i" :

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



Ok, ale zmienna "i" zasuwa z pęłną prędkością i w rzeczywistości brak efektu :(

_________________
BlueBook



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

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Jeśli zmienną i inkrementujesz/dekrementujesz w kodzie przerwania, to zasuwa z taką prędkością z jaką ustawisz.
Przerwania (też) są podane w BB "jak krowie na miedzy".
Jak ustawisz przerwanie np. co 10ms, to co tyle będzie się zmieniało i.

------------------------ [ Dodano po: 17 minutach ]

Proponuję w ogólny zarysie:

deklaracja np. licz - zmienna volatile, która będzie odliczała 2 sekundy

Ustawiasz timer aby przerwanie wykonywało się np. co 10ms - wykładnia w BB.
W obsłudze przerwania co 10 ms zwiększasz licz

main:
licz = 200
pętla {
sprawdzasz licz, jeśli licz > 199 to {
krok1: Inkrementacja zmiennej "i" do 100 (nie więcej niż 1ms przy samej inkrementacji);
}
licz = 0
krok2: Odczekanie 2 sekund - sprawdzasz licz, jeśli > 199 to {
krok3: dekrementacja zmiennej i}
licz = 0
}
main koniec

Ina opcja:
Inkrementujesz licz i sprawdzasz go na 200 w przerwaniu.
Po przekroczeniu 2 sekund ustawisz flagę, którą sprawdzasz i wykonujesz kolejne fragmenty kodu w main, jak jest ustawiona.
Zerujesz i w momentach kiedy chcesz 2 sekundowego "delaya"

------------------------ [ Dodano po: 26 minutach ]

Rozumiem, że zwiększenie/zmniejszanie i to sterowanie mocą.
Te fragmenty będą za szybko się wykonywały.
Dlatego zamiast tych operacji na i możesz zastosować zmienną licz:
kanal1 = procent(licz/2);
Zmiana od 0 do 100% będzie trwała 2 sekundy w tym przypadku + przerwa 2 sekundowa na koniec.
Nic nie stoi na przeszkodzie, żebyś zastosował jeszcze jedną zmienną obok licz w przerwaniu dla dodatkowego timera programowego
i z niej korzystał.

------------------------ [ Dodano po: 37 minutach ]

Jak z licz korzystać zamiast dekrementacji i?
To banalną zminę zostawiam dla ciebie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 30 cze 2015, o 18:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Rafal9018 napisał(a):

Nie wiem od czego to zależy, stosując pętle for z niebieskiej książki wszystko jest ok ale są tam delaje co blokuje procka :(

Mógłbym powtórzyć pytanie - o co chodzi? Czy tak bardzo Ci zależy na usunięciu delajów ?
Ja proponuję za komentować wnętrze funkcji while(1) i odpowiedzieć Sobie - dlaczego żarówki świecą (niepełnym światłem)?
Coś z tą blokadą jest nie tak!
Wpisując procent w odpowiednie miejsca - możesz ręcznie zmieniać świecenie. Co o tym myślisz - odpisz



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: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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