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



Teraz jest 16 sty 2025, o 17:28


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 10 maja 2013, o 18:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lis 2012
Posty: 298
Pomógł: 13

Witam!
Otóż Atmegę taktuję wewnętrznym oscylatorem 8MHz.
W properties projektu mam ustawione na 8000000, ale niestety funkcja _delay_ms() działa źle, tzn czasy rzeczywiste są kilkukrotnie dłuższe niż te, które podaję jako parametr funkcji.
Co może powodować taki problem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 maja 2013, o 18:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Zapytam tak dla jasności: wewnętrzny oscylator na 8MHz ustawiłeś w fuse bitach? Czy tylko w ustawieniach projektu ustawiłeś 8MHz?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 maja 2013, o 21:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lis 2012
Posty: 298
Pomógł: 13

W fusach oczywiście.

------------------------ [ Dodano po: 20 minutach ]

hmmm... Chyba przez przerwania od licznika coś się zwieszało.
Wywaliłem część kodu z licznikiem i wyłączyłem przerwania i nagle myka jak trzeba.
Nic z tego nie rozumiem...

------------------------ [ Dodano po: 30 minutach ]

Ale przy okazji mam jeszcze jedno pytanie.

Otóż ustawienia zegara zmieniamy w properties -> AVR -> Target Hardware.
I zrobiłem tak jak na rysunku poniżej.
Obrazek

Ale jest jeszcze jedna zakładka, która przypadkiem rzuciła mi się w oczy: properties -> C/C++ Build -> Environment.
I tam jest taka jedna zmienna AVRTARGETFCPU i ona mimo wcześniejszej zmiany tak jak we wcześniejszym okienku, ma wartość 1000000. Widać to na poniższym obrazku.
Obrazek

I teraz, czy trzeba zmieniać obie opcje, czy tylko tą pierwszą i po co jest ta druga i kiedy się nią przejmować?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 maja 2013, o 22:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Ustawienia częstotliwości zegara oczywiście dokonujemy w Avr-> Target Hardware.

A ta druga zakładka to szczerze mówiąc nie wiem do czego służy. Tu musiał by się wypowiedzieć ktoś bardziej obeznany w Eclipse. Ja tej opcji nigdy jej nie używałem.

A co do dziwnego działania programu to najlepiej wklej tu cały kod. Bo tak to trudno cokolwiek powiedzieć dlaczego tak działa. Chociaż mam jedno podejrzenie.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 maja 2013, o 06:49 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27346
Lokalizacja: Szczecin
Pomógł: 1041

Zamast kombinowac z ta druga zakladka wystarczy ustawic taktowanie tylko w tej pierwszej, zrobic clean i build a nastepnie zajrzec do konsoli po kompilacji i zobaczyc jaka czestotliwosc sie pojawila ;) i to wszystko

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 maja 2013, o 10:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lis 2012
Posty: 298
Pomógł: 13

Co do tego błędu z delayem, to czy możliwe że to przez wyłączenie optymalizacji? Bo teraz mi dopiero takie ostrzeżenie wyskoczyło. Gdzie włącza się optymalizację? Jacekk232 - jakie jest Twoje podejrzenie?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 maja 2013, o 11:06 
Offline
Użytkownik

Dołączył(a): 12 paź 2012
Posty: 207
Lokalizacja: Rzeszów
Pomógł: 16

Pokaż cały kod. Bo sokor piszesz ze po wyłączeniu przerwań się poprawiło to : przerwanie jest bardzo często wywoływane lub bardzo długie.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 maja 2013, o 11:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Lukasz89 napisał(a):
Bo skoro piszesz ze po wyłączeniu przerwań się poprawiło to : przerwanie jest bardzo często wywoływane lub bardzo długie.

No właśnie. I też takie jest moje podejrzenie. Może procek wciąż siedzi w przerwaniu a na pętlę główną nie ma zbyt wiele czasu. I dlatego te delaye tak się wleką. No ale bez kodu to można tylko gdybać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 maja 2013, o 11:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 lis 2012
Posty: 298
Pomógł: 13

Kurcze chłopaki. Wczoraj robiłem modyfikacje porządne, tak jak mówiłem usunąłem przerwania. Zanim to zrobiłem zostawiłem sobie stary kod w innym pliku, ale przy robieniu clean - tak jak napisał Mirek, usunęło mi go. Niestety przywrócenie tego zajęłoby trochę czasu a tamte funkcje nie są mi teraz potrzebne. Myślę, że wraz z rozwojem kodu znów użyję przerwań i jeśli wtedy znów pojawią się problemy, to wrócę do tematu. Tymczasem dziękuję Wam za pomoc!



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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