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



Teraz jest 6 kwi 2026, o 17:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
 Tytuł: Serwo - problem
PostNapisane: 24 wrz 2015, o 19:48 
Offline
Nowy

Dołączył(a): 25 lut 2014
Posty: 14
Pomógł: 0

Witam, stworzyłem program do obsługi serw, poprzez programowy PWM, jednak coś nie chcę działać tak jakbym tego oczekiwał. Serwo próbuje się obrócić jednak tylko drży i tyle.
Jeżeli mógłby ktoś zobaczyć gdzie popełniłem błąd byłbym wdzięczny.Wydaje mi się że dobrze policzyłem czas przerwania jednak wiadomo każdy może się pomylić :)
Używam attiny2313 taktowany zegarem 8MHz

Przesyłam kod:

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


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


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


Oczywiście przesłany tu program to jedynie uproszczona część obsługująca serwo, poza tym wykorzystuje usart i wyświetlacz LCD. Jednak pozostałe rzeczy działają prawidłowo.

Obliczenia czasu:
F_CPU = 8000000, preskaler = 8, TCNTO = 256-156 = 100
8000000/8/100=10000MHz

1/10000 = 0,1ms co tyle zwiekszam licznik cnt, wiec w momencie gdy licznik wyniesie 10 minie czas 1ms
dla cnt = 200 minie czas 20ms i proces zaczyna sie na nowo


PROSZĘ POPRAWNIE WKLEJAĆ LISTINGI PROGRAMÓW -- >> topic7402.html
---> SunRiver



Ostatnio edytowano 24 wrz 2015, o 20:30 przez baryla92, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2015, o 20:26 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Na wstępie zobacz to Wstawianie listingów programów w postach.

Upewnij się czy przypadkiem serwo nie jest już na pozycji, albo zrób tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 wrz 2015, o 20:35 
Offline
Nowy

Dołączył(a): 25 lut 2014
Posty: 14
Pomógł: 0

ok syntax poprawiony :),
hmm zastosować przerwę miedzy okresami ok zaraz spróbuje, jednak gdy zrobie to w taki sposób to raczej za wiele mi to nie da gdyż u mnie pwm generowany jest w przerwaniach, jedyne wyjscie to zrobic to w taki sposób
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

bazowałem na wykresach link
jednak na ile są poprawne to nie mam pojęcia gdyż 1 raz bazuję na serwomechaniznach

popróbowałem jednak niestety nie działa



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 25 wrz 2015, o 15:04 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

baryla92 napisał(a):
hmm zastosować przerwę miedzy okresami

Nie o to mi chodziło tylko, aby poruszać serwem raz w lewo, a raz w prawo. Jeden z prostszych programów bez używania przerwań wyglądałby tak. Pamiętaj aby ustawić taktowanie w opcjach projektu zgodne z rzeczywistym:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 wrz 2015, o 11:36 
Offline
Nowy

Dołączył(a): 25 lut 2014
Posty: 14
Pomógł: 0

Ok wstawiłem właśnie twój kod i działa ;)
W takim razie już coś wiemy że wina leży nie po stronie serwa a po stronie programu ;)

Teraz tylko gdzie tu mam błąd błędne ustawienia Timera ? złe przypisanie do tablicy number_pwm[] ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 wrz 2015, o 15:30 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Ustawienia timera są w porządku. Sprawdź czy częstotliwość jest taka jak myślisz. W przerwaniu dodaj sobie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 paź 2015, o 17:10 
Offline
Nowy

Dołączył(a): 25 lut 2014
Posty: 14
Pomógł: 0

Ok problem udało się rozwiązać :)
Nie wiem dlaczego nie działało jednak gdy zmieniłem częstotliwość przerwania co 1ms a nie jak było wcześniej co 0,1 ms to zadziałało.



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

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