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



Teraz jest 9 mar 2025, o 23:55


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 13 maja 2017, o 16:39 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 kwi 2016
Posty: 35
Pomógł: 0

Obiecuję, że to już ostatnie moje pytanie na dzisiaj.

Jak pisałem dzisiaj w innym wątku, dla testu zmieniłem taktowanie ATMEGA32A na wewnętrzny oscylator 1MHz. Wszystko działa jak trzeba. Generalnie piszę prosty program do odczytu PWM, typowego do sterowania serwami. Mam tester serw, który służy jako generator rzeczonego sygnału.

Przy taktowaniu 11.0592MHz z zew. kwarca ATB, wszystko było w porządku. Odczyt 99.9% pokrywał się z tym, co widzę na oscyloskopie. Po zmianie na wew. oscylator 1Mhz dokładność i stabilność nieco się pogorszyła, ale ciągle jest na bardzo przyzwoitym poziomie. Zakładając, że i tak chcę badać tylko trzy stany (ok. 1000-1500-2000µs), to dokładność pracy z wew. oscylatorem jest aż nadto zadowalająca.

Czas generowanych impulsów PWM mierzę przez ICP, między zboczem narastającym i opadającym, licząc impulsy timera w trybie normalnym, w przeznaczonym do tego przerwaniu. Zgodnie z oczekiwaniami ilość zliczanych impulsów zawiera się w przedziale ca. 900-2100 (przy taktowaniu 1MHz, prescaler 1).

Dziwnie zaczyna się robić, gdy zmienię częstotliwość procesora na 4 lub 8MHz (2MHz nie sprawdzałem), ciągle korzystając z wew. oscylatora. Ilość impulsów zamiast proporcjonalnie wzrosnąć, spada. Zakres jest ca. 60-140 impulsów dla 4MHz i 120-280 dla 8Mhz. Widzę w tym logikę - jest dwa razy więcej impulsów przy 8MHz, niż przy 4 - ale czemu mniej niż przy 1MHz?

Oczywiście po zmianie częstotliwości procesora, zmieniam ustawienie projektu w Eclipse, przekompilowuję i wgrywam program ponownie do procesora. Prescaler zostaje na 1.

Nie zakładam, że ATMEGA32A ma jakiś systemowy feler w pracą na 4/8MHz na wew. oscylatorze. Pewnie to ja robię jakiś czeski błąd - tylko jaki?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2017, o 17:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 kwi 2016
Posty: 35
Pomógł: 0

Chyba nie. W skrajnym przypadku ca. 2100 impulsów przy 1MHz, powinno dać ca. 16800 impulsów przy 8MHz. Timer i zmienna są 16 bitowe. Nawet licząc ze znakiem powinienem być w połowie zakresu, w najgorszym przypadku.

Poza tym przepełnienie licznika wyłapuję przerwaniem, którego działanie sprawdziłem, np. przez odłączenie sygnału w ogóle.

Co jeszcze mogę robić nie tak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 maja 2017, o 19:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1033
Lokalizacja: Trójmiasto
Pomógł: 190

taszyn napisał(a):
Oczywiście po zmianie częstotliwości procesora, zmieniam ustawienie projektu w Eclipse, przekompilowuję i wgrywam program ponownie do procesora.
Po zmianie taktowania samo przekompilowanie to za mało. Trzeba na projekcie wykonać polecenie clean - albo prawoklik na projekcie i wybór opcji z menu "Clean Project", a następnie Build, lub też zaznaczyć projekt i z górnego paska menu Project -> "Clean...", a następnie w nowo otwartym oknie zaptaszkować projekt i opcję "Start a build immediately" - dopiero wtedy wszystkie czasy i opóźnienia zostaną prawidłowo odświeżone w projekcie.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2017, o 05:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 kwi 2016
Posty: 35
Pomógł: 0

Cytuj:
Po zmianie taktowania samo przekompilowanie to za mało. Trzeba na projekcie wykonać polecenie clean - albo prawoklik na projekcie i wybór opcji z menu "Clean Project", a następnie Build, lub też zaznaczyć projekt i z górnego paska menu Project -> "Clean...", a następnie w nowo otwartym oknie zaptaszkować projekt i opcję "Start a build immediately" - dopiero wtedy wszystkie czasy i opóźnienia zostaną prawidłowo odświeżone w projekcie.


No i wszystko działa, jak należy :). Sam bym pewnie szukał ten informacji przez kilka godzin. Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 maja 2017, o 21:15 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2595
Pomógł: 128

Btw - Mirkowy Mkclipse z automatu zawsze robi clean przed kompilacją :)

Sent from my Mi-4c using Tapatalk



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 10 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