ATNEL tech-forum
https://forum.atnel.pl/

Ustawienie timera0 ATtiny2313 w CTC
https://forum.atnel.pl/topic21489.html
Strona 1 z 1

Autor:  tymonek584 [ 28 paź 2018, o 20:20 ]
Tytuł:  Ustawienie timera0 ATtiny2313 w CTC

Cześć wszystkim,
do tej pory jedynym prockiem, jakim się bawiłem była ATmega8. Tam nie mam problemów z ustawieniem timera2 w tryb CTC. Per analogia spróbowałem w ATtiny2313, ale ni diabła nie chce mi zacząć działać. Kod wygląda tak:

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


Program powinien tykać co ok 1 ms, i za każdym tyknięciem zrzucać do 0 TimerLED, gdzie przy 0 powinna dioda zmienić stan. Jednak dioda jest cały czas zgaszona. Czy problem leży w ustawieniach bitów timera0, czy zrobiłem jakiś inny, głupi, błąd, którego nie mogę znaleźć?

Z góry dziękuję na pomoc

Autor:  Daro69 [ 28 paź 2018, o 20:26 ]
Tytuł:  Re: Ustawienie timera0 ATtiny2313 w CTC

no dobra,
przerwanie gdzie jest tam jest, ale jest.
cialo funkcji 'timers_init' jest gdzie jest ale jest.
a gdzie jest wywołanie tej funkcji?

Autor:  xentis [ 28 paź 2018, o 21:08 ]
Tytuł:  Re: Ustawienie timera0 ATtiny2313 w CTC

Tak wogule to zastanawia mnie zasadność ubierania takich rzeczy jak inicjalizacja timera w ciało funkcji.
Funkcja jest to przydatny twór w momencie gdy jakiś fragment kodu jest wykonywany wiele razy w całym programie więc by go nie powielać zasadne jest wyodrębnienie go jako funkcję i później tylko wywoływanie. Natomiast inicjalizacja jest zestawem instrukcji wykonującym się raz jedyny w czasie życia programu więc po co go obciążać instrukcjami skoków i odkładaniem danych na stosie?
Inaczej sprawa się ma gdy robimy sobie bibliotekę wówczas innej metody nie ma by z czeluści biblioteki zainicjować jakieś peryferia...

Autor:  tymonek584 [ 29 paź 2018, o 00:32 ]
Tytuł:  Re: Ustawienie timera0 ATtiny2313 w CTC

Niniejszym pozwolę sobie zasadzić największego face-palma świata. Po wprowadzeniu zmian zaproponowanych przez Daro69 i zubika wszystko działa OK, dziękuję bardzo. Ech, czemuż to ja taki nieuważny jestem...
A co do wyodrębniania inicjalizacji timerów jako funkcji? Kopiowałem ją z programu, który napisałem pewnie jakoś ze 4 lata temu, a w ciągu tych 4 lat przez 3 nie ruszyłem mikroklocków w ogóle - zajmowałem się innymi rzeczami. Dopiero kilka dni temu wróciłem, bo mam nowe pomysły na ich wykorzystanie w połączeniu z Raspberry Pi. W każdym razie w tamtym programie miałem tę funkcję w oddzielnym pliku, który zajmował się timerami, zarówno tym sprzętowym, jak i opartymi na nim programowymi, także stąd był pomysł ubrania w funkcję.
Jeszcze raz dziękuję a pomoc, jak zwykle błąd banalny a siedzi się i się szuka nie wiadomo gdzie...

Autor:  Marhef [ 29 paź 2018, o 09:44 ]
Tytuł:  Re: Ustawienie timera0 ATtiny2313 w CTC

xentis napisał(a):
Tak wogule to zastanawia mnie zasadność ubierania takich rzeczy jak inicjalizacja timera w ciało funkcji (...) Natomiast inicjalizacja jest zestawem instrukcji wykonującym się raz jedyny w czasie życia programu więc po co go obciążać instrukcjami skoków i odkładaniem danych na stosie?
Wdaje mi się, że chodzi o czytelność kodu. A funkcję zawsze można ustawić jako inline - wtedy zawartość funkcji jest wstawiona w miejscu wywołania, więc nie ma skoków i dodatkowych elementów na stosie (no chyba, że się mylę?)

Autor:  micky [ 29 paź 2018, o 11:13 ]
Tytuł:  Re: Ustawienie timera0 ATtiny2313 w CTC

Dokładnie tak jak mówi kolega. Ja też tak wolę, kod jest dla mnie czytelniejszy.

Autor:  Nondzu [ 29 paź 2018, o 19:41 ]
Tytuł:  Re: Ustawienie timera0 ATtiny2313 w CTC

micky napisał(a):
Dokładnie tak jak mówi kolega. Ja też tak wolę, kod jest dla mnie czytelniejszy.


super sprawa jesli inicjalizujemy kilka np 5-10-15 peryferii mikrokontrolera to takie uplatanie w funkcje ma sens bo kod jest o niebo czytelniejszy moim zdaniem. Mozna np postarac sie, jesli jest taka potrzeba, napisac funkcje z parametrami do ustawien timerow, gdzie dalej podczas dzialania programu potrzebna jest zmiana ustawien timera lub tym podobne. Tak tez moim zdaniem przy optymalizacji kodu trzeba miec na uwadze czy ten jeden czy kilka/kilkanascie skokow podczas inicjalizacji da nam cokolwiek, to dzieje sie tak blyskawicznie ze raczej przy projektach innych niz automotive lub przemyslowych nie bedzie to miec kompletnie znaczenia, a jak juz kolega wyzej pisal, kod wiele przyjemniejszy dla oczu.
Pozdrawiam

Autor:  Marhef [ 30 paź 2018, o 07:59 ]
Tytuł:  Re: Ustawienie timera0 ATtiny2313 w CTC

Dodam jeszcze, że korzystając z generatora kodu dla STM (BuceMX) inicjalizacja każdego peryferium jest w osobnej funkcji. I kod wynikowy jest dużo bardziej czytelny niż upchnięcie wszystkiego w funkcji main.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/