Skocz do zawartości

Zamiana taktowania atmega 328p-pu


Apsor

Pomocna odpowiedź

Witam,
czy jest jakiś łatwy sposób na zmiana taktowania w atmedze 328p-pu? Da się to zrobić bezpośrednio z programu eclipse ? Jest do tego jakaś prosta instrukcja? Wystarczy zwykły programator USBasp czy potrzeba do tego coś innego ? Z góry dziękuję za pomoc : )

Link do komentarza
Share on other sites

Jeżeli "z programu eclipse" możesz w pewnym sensie zmusić procesor do wykonywania programu, to możesz i zmienić mu taktowanie. Nie wiem dokładnie o czym myślisz: czy o zmianie źródła zegara czy o zmianie częstotliwości. Aby zmienić to pierwsze, musisz pogrzebać w tzw. fuse-bitach procesora czyli jego podstawowej, nieulotnej konfiguracji. Masz tam specjalne pole (4 bity) decydujące o tym czy procesor jest "napędzany" np. zewnętrznym kwarcem czy własnym generatorem wewnętrznym 8MHz. Masz jeszcze bit określający czy domyślnie ma być ta częstotliwość dzielona przez 8, w wyniku czego masz 1MHz i mniejszy pobór prądu. A w samym programie? Przede wszystkim masz rejestr CLKPR w którym trzymany jest aktualny podzielnik zegara systemowego. Możesz go ustawić na 1, 2, 4, 8, 16,.., 256. Szczegóły jak z tego korzystać znajdziesz w danych katalogowych procesora:

http://www.atmel.com/images/Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf

To podstawowy dokument - odpowiedź na większość pytań i Twoja wyrocznia w sprawach dotyczących rodziny ATmega48-328. Musisz go zawsze mieć pod ręką, czytać i rozumieć.

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

Czyli mam taką tabelke:

i w eclipse takie cos:

z tym że w eclipse w Select Clock Source nie ma opisane który bit jest który.

W dobrą opcję w ogóle wszedłem ?

Link do komentarza
Share on other sites

W sumie to nie potrzebujesz opisu bitów w Eclipse. Masz tam: "direct hex values"

Na podstawie noty katalogowej powinieneś zrozumieć co musisz wpisać w te 3 textboxy.

Nikt Ci jednak nie gwarantuje, że się nie pomylisz i nie zablokujesz procka...

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

Nie wiem czy "w dobrą wszedłeś", bo wciąż nie napisałeś co konkretnie chcesz zrobić. Jeżeli próbujesz zmienić źródło taktowania - to tak, musisz poprzestawiać bity należące do grupy "Select Clock Source" ale to jest niebezpieczne o tyle, że gdy nieostrożnie zmienisz źródło na zegar zewnętrzny (np. generator kwarcowy) a nie masz nic mądrego do pinów XTAL podłączone to procesor zamiera, bo do pracy potrzebuje zegara. O tym pisał sosnus.

Jeżeli chcesz tylko zmienić z 8MHz na 1MHz, to klikasz w bit "Divide clock by 8 internally" a jeśli możesz zostawić taktowanie jak jest (jakkolwiek jest), ale chcesz spowolnić procesor jakimś współczynnikiem 2..256, to w ogóle tu nic nie ruszasz. Musisz wtedy wstawić odpowiedni wpis do rejestru CLKPR gdzieś na początku programu. Przeczytaj jak to zrobić - to nie jest oczywiste.

Z resztą podział zegara przez 8 ustawiany jednym z fuse bitów jest właśnie sprzętowym załadowaniem do rejestru CLKPR stałej 0011 oznaczającej współczynnik 1/8. Gdy ten bit jest niezaprogramowany, rejestr CLKPR ma po resecie procesora wartość 0000 i współczynnik podziału wynosi 1/1 (rozdz. 9.12.2 w danych katalogowych).

Link do komentarza
Share on other sites

Nie jest bardziej niebezpieczne niż podłączanie mostka silnikowego. Przecież w każdym projekcie w którym chcesz mieć więcej niż 8MHz lub dowolną inną "dziwną" częstotliwość (np. często używane 3.68MHz) musisz użyć zewnętrznego kwarcu lub generatora. Musisz to jednak zrobić zanim przełączysz fuse bity. Montujesz procesor, obok niego stawiasz system zasilania, całą tę menażerię LEDów itp i nie zapominasz o generatorze (kwarcu?). Dopiero wtedy podłączasz programator, grzebiesz w ustawieniach taktowania, chwila wstrzymanego oddechu, reset (bo wtedy fuse bity są "wciągane") i.. jeśli przy nowych ustawieniach programator wczyta sygnaturę procka i nadal go "widzi", jesteś w domu 🙂 Jeżeli nie, też żadna katastrofa. Najlepiej mieć oscyloskop i sprawdzić co się na pinach XTAL dzieje. Jeżeli kwarc jest źle podłączony, jakieś zwarcie lub za duże kondensatory do masy, trzeba poprawić i próbować raz jeszcze. Dobrym lekarstwem jest zmontowanie prostego generatorka np. na 555, zasilenie go z Vcc procesora (żeby pracował na tym samym napięciu) i podłączenie wyjścia do XTAL1. To zwykle ożywia procesor. Częstotliwość dowolna: kilkadziesiąt kHz do MHz tylko trzeba pamiętać, by poinformować programator że nie może za szybko gadać po SPI. Niektóre programatory mają takie ustawienia - można określić aktualną częstotliwość taktowania procesora lub wprost zegar SPI. Oczywiście ten sposób nie zdziała gdy korzystamy z bootloadera jak np. Arduino, bo zmieni się prędkość UARTa i proc nie dogada się z portem szeregowym komputera.

  • Pomogłeś! 1
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.