Skocz do zawartości

Podzielnik Atmega8


Felipe

Pomocna odpowiedź

Mam problem z uruchomieniem serw na atmedze8, jest ona taktowana kwarcem 16 MHz podłączonym z 2 kondensatorami 33p

$regfile = "m8def.dat"
$crystal = 16000000

Config Servos = 1 , Servo1 = Portb.0 , Reload = 20
Config Portb = Output
Config Portd = Input

Enable Interrupts

Do

Servo(1) = 100
Wait 1
Servo(1) = 200
Wait 1

Loop

End

Serwo ustawia się w neutralnej pozycji.

zrobiłem też program na diodę, żeby migała co 0,1 s i mryga ok co 1,6 s

słyszałem coś o podzielnikach ale dokładnie nie wiem jak je ustawić

Proszę o pomoc 😃

Link do komentarza
Share on other sites

bity konfiguracyjne dla uC - informuja go o trybie pracy, zrodle taktowania itp - standardowo procki dzialaja z wbudowanym wewnetrznym zegarem 1MHz - stad tez wynikaja roznice w czasie mrygania lampki - 16 razy dluzej niz kazales mu mrygac. Musisz ustawic fusy na zewnetrzny kwarc 16mhz.

Tu masz calc do wyliczenia high and low fuse: http://www.engbedded.com/fusecalc/

A co zapisania fusow do ukladu uzyj np. avrdude gui, buromata albo bezposrednio z BASCOMA - zalezy jakiego programatora tam uzywasz i jak wolisz.

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

Adresami sie roznia 😉

powiedzmy, ze masz do wyboru 16 opcji konfiguracyjnych - 0 jako wlaczone i 1 jako wylaczone (tak jest w fusach)

wiec ustawiasz wszystko i masz sliczny ciag:

0000111011001011

prawda, ze latwy do zapamietania? Zamiast tego zamieniasz je na wartosc w systemie hexadecymalnym:

0000 1110 1100 1011

0 E C B

OE dla high i CB dla low o ile nic nie pomerdalem - ot i wygodniejszy zapis po prostu.

Co do Bascoma - jakiego programatora uzywasz?

Link do komentarza
Share on other sites

czytaj data sheeta do megi16...

albo skorzystaj z kalkulatora co wyzej podalem - tam masz lopatologicznie opisane opcje- zaznaczasz jakie chcesz, wybierasz z listy zrodlo sygnalu i on Ci poda do wklepania wartosci fusow.

w BASCOMie wchodzisz w Program > Send to chip a potem Lock and Fuse Bits

Link do komentarza
Share on other sites

A czy można zamieścić zmiany dotyczące tych fusebitów w programie bo ja wchodzę w program>send to chip>manual program to nic się nie dzieje, a jak wchodzę w program>send to chip>program to się ładuje program do procka

Link do komentarza
Share on other sites

Obsługa serw poleceniem servo jest krótko mówiąc do d...

Wiem bo walczyłem z tym sam, o ile 1 servo da się jeszcze jako tako obsłużyć (tylko i wyłącznie przy zastosowaniu określonego opóźnienia), o tyle 2 czy więcej serw bascom nie pociągnie już tym poleceniem. Osobiście polecam użycie sprzętowego PWMa, jeśli będziesz zainteresowany podam ci wzór na dobranie rezonatora i dzielników.

Link do komentarza
Share on other sites

Widzę, że masz wysokie wymagania, ale żeby wysterować 8 serw również musiałbyś mieć procesor z ośmioma wyjściami sygnału PWM, o poleceniu servo możesz całkowicie zapomnieć. Np atmega168 ma 6 kanałów PWM, ale są też procki, które mają więcej, aczkolwiek nie wiem jak z obsługą ich przez bascoma. Możesz również komplikując elektronikę, zrobić jakiś układ przełączający sygnał PWM pomiędzy poszczególnymi serwami, ale stąd już niedaleko do gotowych sterowników.

  • Lubię! 1
Link do komentarza
Share on other sites

Powinna zainteresować Cię funkcja "PULSEOUT" (poczytasz o niej w polskiej pomocy do BASCOM'a). Przy sterowaniu 8 serw z trzech kanałów sprzętowego PWM (atmega8) chyba nie obeszło by się bez multipleksowania...

  • Lubię! 1
Link do komentarza
Share on other sites

No tak trochę będę musiał pokombinować aby te serwa działały 🙂 , ale dalej nie mogę odblokować podzielnika 🙁 mógłby mi ktoś opisać to jakoś łopatologicznie.

Link do komentarza
Share on other sites

o jakim podzielniku Ty mowisz? Fusy?

Sciagnij program burn'o'mat - http://avr8-burn-o-mat.aaabbb.de/avr8_burn_o_mat_avrdude_gui_en.html

Ustaw w opcjach sciezke do avrdude, wybierz swoj programator i port oraz uC jaki programujesz. Wejdz w Fuses i sprawdz czy mozesz odczytac fusy - jak mozesz to jest komunikacja. Nastepnie rozwin liste przy zrodle sygnalu i daj external ceramic crystal rezonator czy jakos tak - wybierz przedzial predkosci z gorna granica 16Mhz i juz. Zapisz fusy.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.