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



Teraz jest 31 maja 2026, o 13:37


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 6 sie 2015, o 03:00 
Offline
Użytkownik

Dołączył(a): 04 lis 2012
Posty: 108
Pomógł: 0

Witam.
Chcę wykonać urządzenie które steruje silnikiem poprzez pwm. Regulacja poprzez potencjometr działa fajnie tylko problemy zaczęły się od obsługi przycisków.
Silnik ma kręcić się w w lewo lub w prawo w zależności który z przycisków jest wciśnięty a jeżeli nie jest wciśnięty to ma się wyłączyć.
Problem polega na tym że jak nie dodam delaya w 111 linijce to jak wciskam przycisk KEY_PIN2 to dioda nie zapala się pełną jasnością i silnik szarpie, z KEY_PIN1 nie ma takiego problemu. Dodatkowo nie wychodzi mi napisanie funkcji powoli rozpędzającej silnik do wartości ADC, problem tkwi w tym że silnik nie może się ustabilizować jak i wyłączyć po puszczeniu przycisku. Napisałem funkcję:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

Myślę że problem polega na tym że źle jest napisana funkcja obsługi przycisku względem moich wymagań że funkcja ma się wykonywać jak klawisz jest wciśnięty w przeciwnym razie inna. Jeżeli koledzy mają pomysł jak to napisać to proszę o pomoc.
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2015, o 06:57 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 517
Pomógł: 26

Kolego wywal delay bo one tylko wstrzymują całkowicie program. Zrób sobie odmierzanie czasu na timerze.

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2015, o 10:20 
Offline
Użytkownik

Dołączył(a): 04 lis 2012
Posty: 108
Pomógł: 0

Jak wywalę delay z 111 linijki to dioda led nie zapla się w pełni. Timer mnie nie ratuje bo chcę aby funkcja działała dopóki trzymam przycisk jeden lub drugi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2015, o 11:36 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 517
Pomógł: 26

Kolego chodzi o to że ten delay zatrzymuje ci program i nic nie wykonuje. Jeśli zrobisz go na timerze program będzie pracowac dalej tylko będzie wykonywać co innego.Jeśli za pomocą timera wyznaczysz sobie odcinek czasu np 30ms to co 30 ms będzie sprawdzany twój warunek z przyciskami a w pozostałym czasie czyli od 0-30 będzie wykonywany warunek ze 129lini

Dziwisz się że jak usuniesz delaya to ci dioda nie świeci z pełną mocą. Bo jak byś ten kod przeanalizował w zwolnionym tempie to najpierw ją zaświecasz a potem ją gasisz gdy masz wcisnięty klawisz. Teraz wyobraź sobie co sie dzieje jak cały program wykonuje się z prędkością twojego kwarcu To nie jesteś w stanie zobaczyć tego zapalania i gaszenia w efekcie widzisz nie pełną moc świecenia

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2015, o 15:11 
Offline
Użytkownik

Dołączył(a): 04 lis 2012
Posty: 108
Pomógł: 0

Może koledzy mają gotowe rozwiązanie, siedzę nad tym i nie mogę zrobić tych przycisków w przerwaniach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2015, o 18:34 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 517
Pomógł: 26

Pokaż wypociny to ci podpowiem.

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2015, o 18:43 
Offline
Użytkownik

Dołączył(a): 04 lis 2012
Posty: 108
Pomógł: 0

Teraz mam tylko tyle, specjalnie utworzyłem nowy projekt:
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: 6 sie 2015, o 18:55 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 517
Pomógł: 26

Kolego ja robię sobie tak ustawiam tak przerwanie żeby wykonywało się co 10ms
Następnie robię sobie takie flagi w przerwaniu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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


I ten system u mnie działa Czy coś ci się rozjaśniło?

_________________
Przewodnik|Sterownik akwariowy



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sie 2015, o 20:00 
Offline
Użytkownik

Dołączył(a): 04 lis 2012
Posty: 108
Pomógł: 0

Coś nie działa, chyba nie do końca zrozumiałem albo mam coś źle skonfigurowane. Używam atmegi 32 8Mhz. Używam do tego PWM i ADC może jakiś konflikt?
Oto co wymyśliłem :)
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  
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 4 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