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



Teraz jest 9 lip 2026, o 04:03


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 26 lut 2015, o 20:41 
Offline
Nowy

Dołączył(a): 12 paź 2013
Posty: 20
Pomógł: 4

Witam.
Próbuję ustawić taktowanie ATXMega16D4-AU na 32MHz, a jak na złość otrzymuję 40MHz.

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


Podłączony mam zewnętrzny rezonator kwarcowy 16MHz, który działa prawidłowo, bo jak ustawię go jako sygnał zegarowy otrzymuję 16MHz.
Wg. RM 16MHz * 8 / 2 / 2 = 32MHz.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2015, o 16:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 gru 2012
Posty: 188
Lokalizacja: Świnice Warckie woj. łódzkie
Pomógł: 12

Witaj,

pytania pomocnicze....

1. Na pewno masz dobry kwarc...
2. W jaki sposób sprawdzasz że masz 40MHz

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


ewentualnie aby wykluczyć zewnętrzny kwarc spróbuj to samo zrobić z wewnętrznym kwarcem ustawionym na 32 MHz i mnożnikiem PLL na poziomie 16 co też da przed podziałem 128MHz


Autor postu otrzymał pochwałę

_________________
ATMEL-ICE+ATXmega256A3BU oraz dużo samozaparcia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2015, o 17:17 
Offline
Nowy

Dołączył(a): 12 paź 2013
Posty: 20
Pomógł: 4

Dzięki za odpowiedź
1. Raczej tak, bo gdy ustawiam kwarc jako główny sygnał zegarowy mam ładne 16 MHz (sprawdzone trzema niżej opisanymi sposobami).
2. Na 3 sposoby: delay (#define F_CPU 40.000.000 i po 6 minutach dioda mrugająca co 1s nie wypada z rytmu), timer skonfigurowany tak, żeby migał co 1s, zakładając clk 40MHz i usart 19.2 baud też konfigurowany zakładając 40MHz działa prawidłowo. Gdy konfiguruję te peryferia dla 32MHz, usart krzaczy, a mrugająca dioda widocznie wypada z rytmu w 2s.

Twój kod wpada w nieskończoną pętlę przy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


~dziś koło 21 gdy wrócę, sprawdzę z oscylatorem, tak jak doradzałeś.

"na 32 MHz i mnożnikiem PLL na poziomie 16 co też da przed podziałem 128MHz"
32 * 16 = 512.
Nie doczytałem noty?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2015, o 19:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 30 gru 2012
Posty: 188
Lokalizacja: Świnice Warckie woj. łódzkie
Pomógł: 12

deerjelen napisał(a):
Twój kod wpada w nieskończoną pętlę przy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
// czekanie na ustabilizowanie się generatora
        while (!(OSC.STATUS & OSC_PLLRDY_bm));
GeSHi


ale u Ciebie też ta pętla występuje...

deerjelen napisał(a):
"na 32 MHz i mnożnikiem PLL na poziomie 16 co też da przed podziałem 128MHz"
32 * 16 = 512.
Nie doczytałem noty?


http://www.atmel.com/Images/Atmel-8210-8-and-16-bit-AVR-Microcontrollers-XMEGA-D_Manual.pdf
strona 61 - 32MHz internal oscillator divided by 4
Kod:
Four different clock sources can be chosen as input to the PLL:
2MHz internal oscillator
32MHz internal oscillator divided by 4
0.4MHz - 16MHz crystal oscillator
External clock


co do kodu pisałem go z głowy i nie testowałem na co dzień stosuje cos takiego i tu pętla działa prawidłowo

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



jeszcze co do pętli to pod tym adresem ftp://ftp.helion.pl/przyklady/avrppr.zip masz przykłady między innymi dla ustawiania osc (katalog OSC) przeglądnij to sobie może to Cię na coś naprowadzi kawałek książki


Autor postu otrzymał pochwałę

_________________
ATMEL-ICE+ATXmega256A3BU oraz dużo samozaparcia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 lut 2015, o 23:55 
Offline
Nowy

Dołączył(a): 12 paź 2013
Posty: 20
Pomógł: 4

Już myślałem, że uszkodziłem PLL, bo miałem przez 3 min. konfiguracje 16x16/2/2/2. Ale jednak nie. Zamiana:
Kod:
OSC_PLLCTRL |= OSC_PLLSRC_XOSC_gc | 8;

na
Kod:
OSC_PLLCTRL = OSC_PLLSRC_XOSC_gc | 8;

pomogła.
Dziwi mnie to trochę, bo wg. noty: Initial Value 0x00;



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

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