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



Teraz jest 4 kwi 2026, o 08:44


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 19 lip 2013, o 22:49 
Offline
Nowy

Dołączył(a): 19 lip 2013
Posty: 19
Pomógł: 0

Przepraszam, że proszę o pomoc w takiej banalnej sprawie i wiem jak irytujący są początkowi użytkownicy, ale niestety nie mogę sobie poradzić. Problem jest taki, że chcę zrobić zegarek. mam uC Attiny 2313a i nie potrafię ustawić odpowiednio Timera 16bit. Przedstawiam niedziałający kod. Od razu mówię, że ten kod jest wyrwany z projektu i zlepiony tak tylko, aby pokazywał pewną całość. Proszę zwrócić uwagę na linijki 32 -35.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


[ jak syntax= to nie C a małe c czyli syntax=c .... ok? to tak na przyszłość, a teraz poprawiłem formatowanie - mirekk36 ]

podstawiając do portu b różne definicje wzorów wyświetlacza led otrzymujemy różne cyferki w teorii bynajmniej, bo w praktyce wyświetlacz nie świeci. Jestem pewny, że chodzi o ustawienia Timera, bo identyczny kod, tylko, że z ustawieniami Timera 8bit działał. Oto ustawienia Timera 8bit :

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


Z góry dziękuję i przepraszam za kłopoty



Ostatnio edytowano 19 lip 2013, o 23:57 przez Pilarek, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lip 2013, o 00:04 
Offline
Użytkownik

Dołączył(a): 12 mar 2013
Posty: 34
Pomógł: 0

Ustawienia timera 16-bit masz w datasheecie.
Najważniejszą dla Ciebie informacją jest :

16-bit
Timer/Counter
Register
Description (okolo 104 str)

Tam masz dokładnie opisany każdy bit danego rejestu.
bitami: WGM13-WGM10 ustawiasz tryb w jakim ma timer działać (tych bitów poszukaj w TCCR1A i TCCR1B)
COM1A1 itp ustawiasz co robi, gdy doliczy do zadanej mu wartości OCR1A np.
CS10 do CS12 (TCCR1B) preskaler timera (wzór na częstotliwość timera masz napisany przy każdym z trybów trochę wcześniej)
do podstawowych zastosowań takiego timera w zupełności powyższa wiedza wystarcza :) oczywiście żeby wiedzieć jak te bity zmieniają timer, musisz przestudiować tabelki znajdujące się w datasheecie w rozdziale Ciebie interesującym.

_________________
/*Animus aeger semper errat*/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lip 2013, o 00:04 
Offline
Moderator
Avatar użytkownika

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

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


to absolutnie nie są ustawienia Timera0 - może coś ci się pomyliło przy kpiuj / wklej

a jeśli chodzi o ustawienia Timer1 to nie dopatrzysz się tu błędu bo masz bardzo dobrze ustawiony timerek....

------------------------ [ Dodano po: 1 minucie ]

ale za to wektora nie zmieniłeś na Timer1 ;)

Cytuj:
ISR (TIMER0_COMPA_vect)


więc to jest twój babol ;) mam nadzieję że już widzisz wystarczy że zmienisz to 0 na 1

_________________
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: 20 lip 2013, o 00:11 
Offline
Nowy

Dołączył(a): 19 lip 2013
Posty: 19
Pomógł: 0

Faktycznie musiało mi się coś pomylić. W każdym bądź razie na 8bitowym ustawiłem i działało. Zaraz sprawdzę jak będzie jeśli poprawię ten babol :)
A dlaczego nie ustawiać wartości F_CPU? W książce Przygoda z elektroniką jest napisane, że należy to robić i poprawia to przenośność kodu.
__________________
JEST DZIAŁA!! Bardzo dziękuję. Cały dzień nad tym siedzę i nie mogłem wpaść na to, co jest źle. Jeszcze raz dziękuję :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lip 2013, o 00:26 
Offline
Moderator
Avatar użytkownika

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

Cytuj:
A dlaczego nie ustawiać wartości F_CPU? W książce Przygoda z elektroniką


O Matko Boska - kolejna książka, która pekluje ..... bzdury .... No i weź tu człowieku staraj się nauczyć początkujących :( sorki to nie do ciebie Pilarek ale ręce opadają .... bo już wcześniej też ukazała się taka jednak książka która nie tylko takie dziwolągi pokazywała :(

ale już ci tłumaczę , chociaż w swojej książce

http://atnel.pl/mikrokontrolery-avr-jezyk-c.html

dokładnie to opisałem dlaczego nie .... ale pewnie jej nie masz więc niech będzie - jeszcze raz

Po pierwsze w jakim środowisku piszesz programy ? W kocim Atmel Studio czy w ECLIPSE ?

Jeśli w ECLIPSE - to prędkość taktowania ustawia się łatwo i wygodnie we właściwościach projektu tak jak to było również w starej wersji AVR Studio 4,xx .....

i co dalej się z tym dzieje ? otóż stała F_CPU trafia wtedy pięknie automatycznie do pliku sterującego kompilacją "makefile" a to z kolei powoduje że MASZ JĄ DOSTĘPNĄ w KAŻDYM rozumiesz w KAŻDYM pliku swojego projektu i co WAŻNE - nawet jak zmienisz we właściwościach projektu sobie taktowanie to pomyśl - NAGLE we wszystkich plikach projektu dzięki makefile masz także dostępną tą stałą

a teraz sobie pomyśl jakie pułapki kocie czyhają na początkujących, którzy słuchają takich KIEPSKICH porad aby wrzucać to do kodu programu.

Skoro masz w kodzie a stworzysz kolejny plik projektu to co ? to znowu napiszesz kolejny raz #define F_CPU xxxxx, i "super", potem kolejny plik i kolejny raz ... itd

aż w końcu zachce ci się w projekcie zawierającym już 20 plików zmienić taktowanie - i co będziesz jak opętany latał po każdym pliku i zamieniał

#define F_CPU xxxxx na

#define F_CPU yyyyy

?????

a pomyśl sobie co będzie jak w którymś zapomnisz albo w kilku zapomnisz ??? No to masz za chwilę ZONKI, tu coś działa tak jak chciałeś w innych miejscach programu nie za bardzo i robi się kocia DEGRĘGOLADA .....

oczywiście takie "super" książki albo inni ŚPECE podpowiedzą ci żeby jeszcze inne sztuczki z tym stosować - ale to MEGA BZDURA

PO CO - SKORO RAZ USTAWIASZ WE WŁAŚCIWOŚCIACH PROJEKTU i masz w CAŁYM projekcie - czy to nie WYGODNE - ktoś kto wymyślał C pomyślał o mega wygodzie a nie żeby mając BMW jeździć przyczepką zaprzęgniętą w osła :(

---------------

No dobra ale pewnie może do tego wszystkiego jeszcze piszesz w Atmel Studio zamiast Eclipse - i pewnie jakiś fachowiec w książce wyjaśnił ci że tam nie ma już ustawiania we właściwościach projektu takiej opcji i dlatego trzeba wklepywać w kodzie i to na samym początku - NO sorki ale to kolejna GŁUPOTA aż boli kora mózgowa.

Bo w kocim Atmel Studio - autorzy nowszej wersji chcąc zemścić się chyba na programistach C, postanowili o wiele bardziej utrudnić i schowali tą opcję ustawień GŁĘBIEJ - czyli do ustawień samego TOOLCHAINA - tzn w Eclipse też to masz - ale WYGODNE ECLIPSE .... ułatwia życie za to w Atmel Studio MUSISZ tam się dogrzebywać i wtedy dopiero jak ustawisz to także będzie to w makefile i dostępne we wszystkich plikach projektu

a więc też się da ???

no to teraz sam powiedz - po co w kodzie skoro naraża cię to jako programistę a szczególnie początkującego na to że będziesz sobie włosy z głowy rwał że co jakiś czas coś ci nie działa a to właśnie przez głupie dawanie w kodzie

#define F_CPU - MASAKRA :(

------------------------ [ Dodano po: 11 minutach ]

Pilarek napisał(a):
A dlaczego nie ustawiać wartości F_CPU? W książce Przygoda z elektroniką jest napisane,


hehehe już widzę - dlaczego ta książka znowu powiela bzdury na temat #define F_CPU , żeby to w kodzie robić, bo już taka była wcześniej. Sprawdziłem - okazało się że to ten sam autor. Szkoda, że w międzyczasie nie poprawił swojego podejścia ....

_________________
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: 20 lip 2013, o 10:21 
Offline
Nowy

Dołączył(a): 19 lip 2013
Posty: 19
Pomógł: 0

Ok rozumiem. Książkę mam ale musiałem o tym zapomnieć. Mój błąd. Zegarek który chcę zrobić to jest właśnie rozwinięcie tematu multipleksowania wyświetlaczy LED. Dopiero zaczynam przygodę z AVRkami i dlatego dopiero pojawiłem się na forum. Jak uda mi się owy zegarek zrobić to wstawię kod w dziale projekty :) Dziękuję bardzo za pomoc i wyjaśnienie :) btw. Piszę w Eclipse :)



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

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

Pilarek napisał(a):
Piszę w Eclipse


O to mnie cieszy i teraz mam nadzieję i po tych wyjaśnieniach i dzięki Eclipse już zapomnisz raz na zawsze o #define F_CPU ;)

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

Pilarek napisał(a):
Jak uda mi się owy zegarek zrobić to wstawię kod w dziale projekty


No ja na to bardzo liczę, lubię oglądać każde takie projekty DIY ;)

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

Strefa czasowa: UTC + 1


Kto przegląda forum

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