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



Teraz jest 19 kwi 2024, o 19:02


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 22 gru 2018, o 00:12 
Offline
Nowy

Dołączył(a): 04 wrz 2016
Posty: 18
Pomógł: 0

Cześć,
programuję ATmegę 2560. Procek jest taktowany zewnętrznym kwarcem 16MHz. Po wyłączeniu fuse bitu CKDIV8 procesor zaczął działać nieprawidłowo, przykładowo jeśli mam w kodzie wstawiony "_delay_ms(250)" to wykona się to kilkanaście razy szybciej niż to wpisane 250ms.
Ktoś ma jakiś pomysł z czym to może być związane, to moja pierwsza przygoda z tak dużym procesorem.
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2018, o 00:18 
Offline
Użytkownik

Dołączył(a): 22 sty 2014
Posty: 1806
Zbananowany użytkownik

Pomógł: 168

Może dlatego że wyłączyłeś dzielenie zegara przez 8.

Wysłane z mojego SM-J510FN przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2018, o 00:22 
Offline
Moderator
Avatar użytkownika

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

Delta napisał(a):
Po wyłączeniu fuse bitu CKDIV8 procesor zaczął działać nieprawidłowo,

Ja .... nie powiem co, jak można pisać, że po wyłączeniu CKDIV8 zaczął działać nieprawidłowo

To tak jakbyś napisał, że chciałeś mieć taktowanie 16MHz ale podzieliłeś je przez 8 (bo to robi CKDIV8) i źle działa ... no proszę zastanów się co piszesz.

Fusebit CKDIV8 dzieli ci częstotliwość taktowania przez 8 ... i nie ważne czy włączysz wewn. oscylator czy kwarc zewnętrzny ...

Postaraj się na początek zrozumieć jak działa CKDIV8 - to wtedy będzie ci łatwiej

_________________
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: 22 gru 2018, o 00:29 
Offline
Nowy

Dołączył(a): 04 wrz 2016
Posty: 18
Pomógł: 0

To, że CKDIV8 dzieli taktowanie procesora przez 8 rozumiem, a przynajmniej tak mi się wydaje. Tylko nie rozumiem dlaczego pomimo wybrania w zakładce "MCU Clock Frequency = 16MHz"( po wyłączeniu dzielenia) w Eclipsie funkcje wciąż wykonują się zbyt szybko.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2018, o 02:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

CKDIV8 dzieli taktowanie przez 8. Tak to już jest i nic się na to nie poradzi. ;)

Jeżeli masz zewnętrzny kwarc 16MHz i podzielisz to przez 8 to otrzymasz tylko 2MHz i takie będzie taktowanie uC.
Jak ustawisz taktowanie powiedzmy z wewnętrznego oscylatora, a w Atmega2560 jest to 8MHz to przy włączonym CKDIV8 otrzymasz tylko 1MHz.

Fabrycznie CKDIV8 jest włączony, dlatego trzeba go wyłączyć, by taktowanie uC było w Twoim przypadku 16MHz, a nie 2MHz.

Upewnij się, że masz również wyłączony fuse bit Watchdog timer always on.
Coś czuję, że problem z nieprawidłowym działaniem delay'a zniknie. :lol:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2018, o 06:58 
Offline
Moderator
Avatar użytkownika

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

Delta napisał(a):
To, że CKDIV8 dzieli taktowanie procesora przez 8 rozumiem, a przynajmniej tak mi się wydaje. Tylko nie rozumiem dlaczego pomimo wybrania w zakładce "MCU Clock Frequency = 16MHz"( po wyłączeniu dzielenia) w Eclipsie funkcje wciąż wykonują się zbyt szybko.


przede wszystkim to na twoim miejscu zacząłbym pytanie na forum od podania wartości Fusebitów - jak masz je ustawione - wtedy można byłoby ci szybciej pomóc i podpowiedzieć gdzie robisz babola

_________________
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: 22 gru 2018, o 11:36 
Offline
Nowy

Dołączył(a): 04 wrz 2016
Posty: 18
Pomógł: 0

Obrazek
Fuse bity ustawione w ten sposób.
Cleanowanie projektu nie pomaga, usuwałem nawet folder release.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2018, o 11:52 
Offline
Moderator
Avatar użytkownika

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

a w eclipse też ustawiłeś taktowanie procka na 16MHz?

_________________
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: 22 gru 2018, o 11:55 
Offline
Nowy

Dołączył(a): 04 wrz 2016
Posty: 18
Pomógł: 0

Obrazek
Tak, w Eclipsie jest wybrane taktowanie na 16MHz



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2018, o 11:58 
Offline
Moderator
Avatar użytkownika

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

To pokaż swój kod testowy

_________________
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: 22 gru 2018, o 12:02 
Offline
Nowy

Dołączył(a): 04 wrz 2016
Posty: 18
Pomógł: 0

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


funkcja od adc jest napisana w ten sposób:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Na razie wykorzystuję tylko jeden kanał ADC dlatego jest na stałe wpisane 0, korzystam z zewnętrznego napięcia odniesienia stąd mnożę przez inną wartość niż ta wynikająca z przekształcenia wzoru z noty.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2018, o 14:46 
Offline
Moderator
Avatar użytkownika

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

wiesz co to jest program testowy ?

Piszesz pętlę nieskończoną while i akurat do tego z czym masz problem ustawiasz sobie miganie diody LED np co sekundę z delayami bo to łatwo zaobserwować okiem .... a nie jakieś kody o ADC nie mające nic wspólnego z problemem od którego zacząłeś a nawet jeśli coś ma wspólnego to po choinkę tak robić - trzeba wyizolować problem rozumiesz ?

czyli pętelka z miganiem i już sobie dalej może sam odpowiesz co masz źle

_________________
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: 22 gru 2018, o 18:22 
Offline
Nowy

Dołączył(a): 04 wrz 2016
Posty: 18
Pomógł: 0

Chyba, że się nie ma diody na płytce, a nie można dolutować się do pinów mikroprocesora. Program na ATmedze32 działa dobrze więc to nie on był problemem.
Problemem okazało się jednak wadliwie działające środowisko.
Mam jeszcze problem z enkoderem, działa tylko w jedną stronę- nie da się zmniejszać wartości zmiennej a jeśli od komentuję linijkę "pozycja_menu--; w przerwaniu INT1 wartość stoi w miejscu.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2018, o 18:40 
Offline
Moderator
Avatar użytkownika

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

Delta napisał(a):
Problemem okazało się jednak wadliwie działające środowisko.

No toś wyjaśnił co było nie tak ...

_________________
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: 22 gru 2018, o 18:54 
Offline
Nowy

Dołączył(a): 04 wrz 2016
Posty: 18
Pomógł: 0

Pomogła reinstalacja, także nie wiem co działało nie tak, reinstalowałem wszystko łącznie z avrdude.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 gru 2018, o 23:43 
Offline
Moderator
Avatar użytkownika

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

a cóż to za środowisko ?

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 

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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO