Skocz do zawartości

Pomocna odpowiedź

Osłoniłem tylko je ponieważ korzystałem tylko z jednej, a drugą niechcący osłoniłem na początku... 😋 poza tym nie będą osłonięte tak ostatecznie.

No dobra znalazłem tabelkę, i te rejestry tylko zupełnie nie wiem gdzie wpisać te wartości...

Do rejestru 🙂 Rejestry m16 ma 8-bitowe, czyli 8 cyferek, ty się interesujesz rejestrami timera 1, czyli TCCR1A i TCCR1B. W opisie rejestru masz nazwy poszczególnych bitów, patrzysz na nazwę bitu, szukasz go w tabelkach niżej, sprawdzasz jak powinieneś go ustawić i tak go wpisujesz do rejestru. Robiłeś to tutaj:

Tccr1a = &B10111111 

Mógłbym Ci oczywiście podać gotowca, ale nie zrobię tego, ponieważ dopóki nie zrozumiesz na jakiej zasadzie działają rejestry i jak je konfigurować, to nie pójdziesz dalej, a co najgorsze C zawsze będzie dla Ciebie czarną magią. Jeśli coś źle zrozumiesz i ustawisz to nic nie szkodzi, wytłumaczymy ci jak powinno być i dlaczego, ale musimy wiedzieć że ustawiłeś to według jakiegoś swojego myślenia, a nie spisałeś albo ustawiłeś "na pałę".

Mógłbym Ci oczywiście podać gotowca, ale nie zrobię tego, ponieważ dopóki nie zrozumiesz na jakiej zasadzie działają rejestry i jak je konfigurować, to nie pójdziesz dalej, a co najgorsze C zawsze będzie dla Ciebie czarną magią.

Ja nawet nie chce gotowca- rozumiem i doceniam Wasze starania o wzbogacenie mnie w nową wiedzę 😉

Jeszcze tylko nie rozumiem w jakiej kolejności mam wpisywać te rejestry ? Tak jak pisałeś patrzeć na opis rejestru i po kolei wpisywać?

[ Dodano: 15-04-2012, 16:57 ]

Tccr1a = &B01010000 

może coś takiego opierałem się na tabelkach ze strony

http://impuls.elektroda.eu/joomla/index.php?option=com_content&view=article&id=58&Itemid=135

Każdy rejestr zawiera bity "najstarsze" i "najmłodsze". Liczy się to w kolejności takiej: bit najbardziej po lewej - najstarszy, ten najbardziej po prawej - najmłodszy 😉 Jednym zdaniem - numerujesz od prawej do lewej.

No to tak:

COM1A1 i COM1A2 ustawione kolejno 0 i 1, czyli OC1A przełączne przy zrównaniu, jest dobrze

COM1B1 i COM1B2 ustawiłeś tak samo, a chcesz przecież żeby działało jako normalne I/O (nie generowało nośnej) - zajrzyj do tabelki i zobacz czemu musisz ustawić 0 0.

FOC1A ustaw na 1, żeby wymusić zdarzenie na OC1A.

WGM ma 4 bity, dwa są w rejestrze TCCR1A, a dwa następne w TCCR1B, nie zapomnij o tym. Teraz musisz ustawić drugi rejestr dla timera1, TCCR1B.

  • Pomogłeś! 1

Dzięki, właśnie nie byłem pewien co do foc1a, i to wgm sprawiało mi problemy - muszę patrzeć na ustawienie tego przy ctc ?

Tccr1a = &B01001100

Tccr1b = &B10001110

poprawiłem i dodałem tccr1b - nie jestem pewien co do ostatnich trzech bitów które ustawiłem "wyzwalanie zboczem opadającym" i nie wiem co w tabelce znaczy "-" 0 czy 1.

Zboczem opadającym, ale przy "External clock source on T1 pin", czyli zewnętrznym źródłem zegarowym. Tu po prostu ustawiasz preskaler timera, tam jak przy polecniu Config Timer, ustawiając prescaler musisz wziąć pod uwagę wartość, która będziesz wpisywał do rejestru żeby uzyskać 36kHz. Na pewno nie wykroczysz, bo ten timer jest 16 bitowy, więc ustaw prescaler na 1.

Co do bitu 7 rejestru TCCR1B, to służy on do redukcji szumów na pinie ICP1, jeśli używasz wewnętrznego sygnału dla przerwań, ale nie używasz więc ustaw na 0.

Trochę wprowadziłem Cię w błąd z tym FOC, otóż on służy do zrównywania wartości licznika w dowolnym momencie, nie będziesz tego robił więc poustawiaj na 0. Timer1 jest 16-bitowy i bardziej pokomplikowany od 8-bitowców, jak widać sam się w nim zaczynam gubić 😉

[ Dodano: 16-04-2012, 16:36 ]

PS, nie dawaj mi punktów za pomoc przy każdym poście, raz wystarczy, a na dodatek jeszcze w niczym Ci nie pomogłem.

No jeszcze tylko tyle, że 5 bit rejestru TCCR1B to krecha z tego co widzę, więc jest on zarezerwowany i nie możesz go ustawić.

Pamiętaj, że ustawiłeś zliczanie do wartości rejestru ICR1B, więc tam musisz wpisać wartość maksymalną.

klonyyy, jest zarezerwowany, domyślnie jest 0 i tak zostawiasz, to jest napisane w dokumentacji.

[ Dodano: 16-04-2012, 22:54 ]

A wartość max ustawiasz z działania taktowanie/preskaler/(częstotliwość*2).

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...