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



Teraz jest 27 maja 2020, o 09:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 21 kwi 2013, o 20:13 
Offline
Nowy

Dołączył(a): 04 lut 2013
Posty: 16
Pomógł: 0

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


Dioda podłączona do pinu PB1 powinna zmieniać stan co 1 sekundę przy taktowaniu 1MHz. I tak się dzieje. Problem pojawia się gdy ustawiam taktowanie na 2MHz i F_CPU na 2000000. Według mnie dioda dalej powinna zmieniać stan co 1 sekundę, a w rzeczywistości dzieje się to dwa razy częściej. Jeśli dobrze rozumiem to funkcja _delay_ms() korzysta z funkcji _delay_cycles(), która z kolei używa F_CPU, więc zmiana F_CPU powinna mieć jakikolwiek wpływ na przebieg programu, a tak się nie dzieje. Gdzie jest błąd?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2013, o 20:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 21 gru 2012
Posty: 161
Pomógł: 9

Jeśli piszesz w Eclipse to F_CPU nie zmienia się w kodzie tylko w opcjach projektu. (A F_CPU nie powinno być w kodzie).

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2013, o 20:17 
Offline
Użytkownik

Dołączył(a): 16 lut 2012
Posty: 219
Pomógł: 1

Kolego piszesz w Eclipse czy AVR Studio? Mirek powtarzał kilka dziesiąt razy, że częstotliwość taktowania procka ustawia się w properties projektu, a nie F_CPU i wtedy nie ma problemu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 kwi 2013, o 20:29 
Offline
Nowy

Dołączył(a): 04 lut 2013
Posty: 16
Pomógł: 0

Faktycznie, działa. Dzięki. Jakoś nie miałem nigdy szczęścia się natknąć na tę wskazówkę :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2016, o 15:03 
Offline
Nowy

Dołączył(a): 09 cze 2015
Posty: 3
Pomógł: 0

Mam ten sam problem co merazmus. Program z początku postu ten sam, tylko bez F_CPU (zmieniam to we właściwościach projektu) i używam Eclipsa Luna. Atmega 32. USBasp.

Gdy mkAVR Calculator ustawiam fusebity na E1 / D9 (1Mhz, wew.) i Eclipsem MCU Clock Frequency na 1Mhz dioda miga 1 Hz.

Zgodnie z oczekiwaniem, gdy NIE zmieniam MCU CF w Eclipsie, a zmieniam częstotliwość procesora przez mkAVR, dioda miga szybciej. Wew. 8 MHz - 8x szybciej lub zew. kwarc 16 MHz - 16x szybciej. Do tej pory wszystko działa.

Problem się zaczyna, gdy zmieniam częstotliwość procesora przez mkAVR i zmieniam częstotliwość MCU CF w Eclipsie. Gdy procesor jest na 8 MHz wew. i MCU CF zmieniam na 8 MHz, dioda nadal miga 8 razy szybciej - tutaj już powinna migać z f = 1 Hz. Zmieniam na zew. 16 MHz i MCU CF we właściwościach na 16 MHz. Dioda miga 16x szybciej, zamiast z częstotliwością 1 Hz.

Wygląda to tak, że niezależnie od ustawień w Eclipsie, programy działają poprawnie tylko, gdy procesor ma ustawiony 1 MHz wew.

Tak. Robię Clean Project po każdej zmianie częstotliwości. Sprawdzałem w mkAVR, czy aby na pewno ustawiony jest zegar taki jaki trzeba. Mam ustawione zapisz przed build (który ustawiony jest na release).

Próbowałem również zmienić częstotliwość "programu" przez Eclipse Gadget nadal nic.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2016, o 15:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1478
Pomógł: 167

Podaj jakie masz wartości dla ustawienia fuse bitów dla 8MHz.

- -
Pozdrawiam,
Robert

------------------------ [ Dodano po: kilkunastu sekundach ]

Oczywiście sczytaj je obowiązkowo z procesora.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2016, o 15:51 
Offline
Nowy

Dołączył(a): 09 cze 2015
Posty: 3
Pomógł: 0

Tak jak jest w mkAVRze

1 MHz - E1 D9
8 MHz - E4 D9
16 MHz zew. - FF D9

JTAG - Wyłączony.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2016, o 16:37 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1478
Pomógł: 167

Fuse bity masz dobrze ustawiane. Więc zostaje tylko diagnoza: "cuda, panie, cuda". Ale że okres Świąt się skończył, to może jednak coś nie tak jest z tym Clean projektu? Czy ma pewno jak wybierasz z menu tę opcję, to masz na formatce zaznaczony właściwy projekt?
Czy sprawdzałeś czy problem masz tak samo jak założysz nowy projekt i od początku dasz mu właściwe taktowanie 8 / 16 MHz?
Jak także założenie nowego projektu nie pomoże, proponuję abyś przesiadł się na najnowszego Eclipse Marsa z Atmel toolchainem [url](http://mirekk36.blogspot.com/2015/07/ec ... ogram.html[/url]).
Możesz też podesłać spakowany projekt obowiązkowo wraz z plikami wynikowymi skompilowanymi dla 8MHz (hex-em oraz lss) by można było coś więcej sprawdzić.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 sty 2016, o 19:25 
Offline
Nowy

Dołączył(a): 09 cze 2015
Posty: 3
Pomógł: 0

Mam tylko jeden projekt, więc to na tym robię Clean Project. Dodatkowo klikam na projekt ppm -> clean. Zakładałem na testy nowe projekty, ale problem pozostaje. Zobaczę z nowym Eclipsem i dam znać.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2020, o 12:53 
Offline
Nowy

Dołączył(a): 27 gru 2016
Posty: 18
Pomógł: 0

Dziękuję, "clean project" po zmianie częstotliwości - to mi było potrzebne.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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