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

[C++ avr ] liczenie stanów wysokich na TCCR2
https://forum.atnel.pl/topic24113.html
Strona 1 z 1

Autor:  mark162 [ 18 sty 2022, o 18:04 ]
Tytuł:  [C++ avr ] liczenie stanów wysokich na TCCR2

Próbuje na różne sposoby wypuscić określoną liczbę stanów wysokich, generowanych sprzętowo na timerze 2

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

Autor:  Makowka [ 18 sty 2022, o 19:15 ]
Tytuł:  Re: [C++ avr ] liczenie stanów wysokich na TCCR2

Pętla while(iii>eee) nigdy się nie wykona, bo wartość delaya zawsze będzie większa od zera. To tak na szybko. Nie sprawdzam poprawności wpisów w rejestry, bo nie mam pod ręką noty.

Autor:  mark162 [ 19 sty 2022, o 16:25 ]
Tytuł:  Re: [C++ avr ] liczenie stanów wysokich na TCCR2

wpisy do rejestrów są dobre gdyż atmega daje pożądaną częstotliwość...

Cytuj:
Pętla while(iii>eee) nigdy się nie wykona, bo wartość delaya zawsze będzie większa od zera

nie bardzo rozumie co masz na myśli mówiąc "delaya" ??

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


problem na pewno polega na tym że iii++ nie działa zawsze pokazuje 0.

Autor:  mario2015 [ 19 sty 2022, o 18:24 ]
Tytuł:  Re: [C++ avr ] liczenie stanów wysokich na TCCR2

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

nigdy się nie wykona ponieważ po wejściu do funkcji ustawiasz zmienną iii na 0 i z tego tytułu
iii nigdy nie będzie większe niż zmienna eee (uint8_t eee - zakres od 0 do 255).

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

masz to samo tzn. zmienna iii nigdy nie będzie większa od eee a zatem warunek znowu nie będzie nigdy spełniony
ponieważ zawsze gdy wchodzisz do funkcji to ustawiasz zmienną iii na 0.

Żeby pętla się wykonywała to sprubój tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


wtedy gdy jako argument funkcji eee podasz np: liczbę 100, to ta zmienna będzie dekrementowana aż do zera i
pętla wykona się 100 razy.

Autor:  mark162 [ 20 sty 2022, o 16:15 ]
Tytuł:  Re: [C++ avr ] liczenie stanów wysokich na TCCR2

Pętla while i zmienna iii działa, ale problem dalej pozostaje na oscyloskopie widzę że atmega nie daje tyle okresów co mu wpisze w programie (na 20 zadanych daje 5-6).
Nie mam pomysłu jak by to rozwiązać.

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


Próbowałem dołączyć przerwanie ctc do liczenia ale nie wiem dlaczego wykonuje się dużo wolniej.

Autor:  mark162 [ 20 sty 2022, o 18:38 ]
Tytuł:  Re: [C++ avr ] liczenie stanów wysokich na TCCR2

przychodzi mi pomysł zastosowanie rozwiązania z enkodera kodu Graya
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie zdążę go dzisiaj sprawdzić i przerobić na zapis bitowy...

Może ktoś ma inny lepszy pomysł na rozwiązanie??

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