Skocz do zawartości

Nie działa sterowanie serwa za pomocą ATTiny 2313


Gall Anonim

Pomocna odpowiedź

Witam,
Mam problem taki jak w temacie. Chciałem sterowac normalnym serwem modelarskim tak aby po naciśnieciu przycisku wychylało sie w jedną strone czekało określoną ilośc czasu i znów zmieniało swoje wychylenie, całośc powtarzała by sie kilka razy. Napisałem program:

$regfile = "attiny2313.dat"
$crystal = 8000000

Config Pinb.7 = Input

Config Pinb.4 = Output
Config Servos = 1 , Servo1 = Portb.4 , Reload = 1

Enable Interrupts

Set Portb.7

Do

If Pinb.7 = 0 Then
Gosub Program
End If
Loop

Program:
Servo(1) = 15
wait 1
servo(1) = 23
wait 1
servo(1) = 36
wait 1 

End

Jednak serwo wychyla sie tylko do pierwszego położenia i tak już pozostaje. Wartości reload jak i zmiennej dobierałem doświadczalnie w zależności od zastosowanego serwa (tak zalecano w artykule ep i na kilku forach). Układ nie ma zewnetrznego rezonatora.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Musisz przestawić fusbity oraz w programie zmienić $crystal na wartość rezonatora podaną w Hz (w przypadku rezonatora 8Mhz, ta wartość będzie wynosiła 8000000). Nie zapomnij o kondensatorach 22p przy montowaniu zewnętrznego rezonatora.

Link do komentarza
Share on other sites

A czy jest jakaś metoda na to bo cały dzień już straciłem na takie kombinowanie. Czy jeżeli wbuduje do płytki rezonator kwarcowy 8MHz to musze to jakoś uwzglednic (input/output)?

Na serwo musisz podać sygnał o określonym wypełnieniu. Najlepiej użyć do tego sprzętowego PWM (jeżeli ATTiny to posiada, bo nie wiem). A do generowania PWM używasz timera, więc musisz go odpowiednio ustawić. Szczerze mówiąc to nie musisz wbudowywać żadnego rezonatora. W zupełności wystarczy wewnętrzny. Dobierz tylko odpowiednie wartości do generowania PWM.

Link do komentarza
Share on other sites

Fusebity miałem 0100. To wykonywac to za pomocą timera i pwm czy tą standardową procedurą Config Servo

Eh sorry. Ja piszę w C i tam nie ma gotowych bibliotek.

Jak masz gotowe procedury to ich oczywiście używaj

Link do komentarza
Share on other sites

Mam jeszcze jedno pytanie, a nie chciałem zakładac nowego tematu, mianowicie jeżeli wstawie zewnetrzny rezonator pod wyjścia xtal to czy musze to jakoś uwzgedniac w programie poza szybkością taktowania? Chodzi mi o to czy jest jakaś komenda, aby poinformowac mikrokontroler, że ma korzystac z zewnetrznego timera? Przeszukałem specyfikacje procesora programy innych robotów i internet i nie znalazłem odpowiedzi dlatego pytam Was.

Link do komentarza
Share on other sites

Po pierwsze to musisz zmienić fusebity, aby uC zaczął pracować na zewnętrznym rezonatorze. Po drugie trzeba zadeklarować w programie częstotliwość rezonatora (w Bascomie jest to polecenie $crystal = xxx, gdzie xxx to częstotliwość taktowanie uC podana w Hz).

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.