ATNEL tech-forum https://forum.atnel.pl/ |
|
Atmega 328P i initializacja licznika T1 (16bit) i CTC https://forum.atnel.pl/topic22180.html |
Strona 1 z 1 |
Autor: | szymanskim [ 17 kwi 2019, o 22:14 ] |
Tytuł: | Atmega 328P i initializacja licznika T1 (16bit) i CTC |
Cześć, Mam problem z właściwym ustawieniem licznika T1 tak żeby przerywanie uruchamiało się co 1s. Licznik konfiguruje w następujący sposób: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. i obsługa przerywania język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Przerywanie uruchamia się ale nie co 1s i co więcej mam wrażenie że zmiany wartości w OCR1A nie wpływają na częstotliwość przerywania Błąd jest pytanie tylko jaki? Dodatkowo jak dodałem blok konfiguracji i obsługi przerywania przestał działać mi odbiór pakietów z atnelowskiej biloteki NRF. |
Autor: | szymanskim [ 17 kwi 2019, o 23:40 ] |
Tytuł: | Re: Atmega 328P i initializacja licznika T1 (16bit) i CTC |
Mam trop, dopiero teraz zauważyłem że są dwa tryby ctc i jak używam ocr1a to muszę użyć inny tryb. Sprawdzę rano.. |
Autor: | piotr8605 [ 17 kwi 2019, o 23:51 ] |
Tytuł: | Re: Atmega 328P i initializacja licznika T1 (16bit) i CTC |
W rejestrze TCCR1B masz bity WGM13 oraz WGM12, a nie w rejestrze TCCR1A. |
Autor: | mczarny [ 18 kwi 2019, o 07:39 ] |
Tytuł: | Re: Atmega 328P i initializacja licznika T1 (16bit) i CTC |
Po pierwsze to tryb CTC to tryb - 4 język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Natomiast wysyłanie czegoś przez uart w przerwaniu to nie jest dobry pomysł. |
Autor: | szymanskim [ 18 kwi 2019, o 07:56 ] |
Tytuł: | Re: Atmega 328P i initializacja licznika T1 (16bit) i CTC |
mczarny napisał(a): Po pierwsze to tryb CTC to tryb - 4 język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Natomiast wysyłanie czegoś przez uart w przerwaniu to nie jest dobry pomysł. Dzięki teraz działa. O ustawianiu bitów WGM13/12 wspominali w rozdziale o TCCR1A i to mnie zmyliło. Natomiast pytanie dlaczego wysyłanie (a właściwie wrzucanie do bufora, wysyłka jest zrobiona na podstawie bluebooka) w przrywaniu to zły pomysł? Faktycznie jak dodam tą linijke to program przestaje dobrze działać - przestaje wykonywać się kod w pętli głównej? |
Autor: | mczarny [ 18 kwi 2019, o 08:58 ] |
Tytuł: | Re: Atmega 328P i initializacja licznika T1 (16bit) i CTC |
szymanskim napisał(a): Natomiast pytanie dlaczego wysyłanie (a właściwie wrzucanie do bufora, wysyłka jest zrobiona na podstawie bluebooka) w przrywaniu to zły pomysł? Faktycznie jak dodam tą linijke to program przestaje dobrze działać - przestaje wykonywać się kod w pętli głównej? Przeanalizuj sobie procedurę wysyłania znaków przez uart. Jak myślisz czy wysyłanie korzysta z przerwań? Ano korzysta wiec następuje przerwanie w przerwaniu i robi się kaszana. Powołaj sobie lepiej timer programowy na podstawie sprzętowego i wysyłaj to co chcesz w pętli głównej korzystając już z timera programowego. |
Autor: | szymanskim [ 18 kwi 2019, o 09:46 ] |
Tytuł: | Re: Atmega 328P i initializacja licznika T1 (16bit) i CTC |
mczarny napisał(a): szymanskim napisał(a): Przeanalizuj sobie procedurę wysyłania znaków przez uart. Jak myślisz czy wysyłanie korzysta z przerwań? Ano korzysta wiec następuje przerwanie w przerwaniu i robi się kaszana. Powołaj sobie lepiej timer programowy na podstawie sprzętowego i wysyłaj to co chcesz w pętli głównej korzystając już z timera programowego. Ok dzięki. Rozumiem że jak napisałeś żeby wyświetlać w pętli głównej to sugerujesz zrobić wysyłanie na uarta bez przerywan czyli wrzucac po znaku i patrzec czy sie wyslalo i nie bawic sie w przerywania uarta? W domu przetestuje bibloteke wysyki bez przerywań - dodalem jednego #define żeby przełączyć biblotekę w tryb bezprzerywaniowy. Powiem szczerze, że jestem zaskoczony że nie jest wskazane, żeby chodziło parę różnych przerywań. Zakładałem że jest stos i jeśli nawet taka sytuacja się wydarzy to nic złego się nie stanie, no chyba że mówimy o sytuacji gdzie zabraknie miejsca na zmienne na stosie? W końcu jest parę rodzajów przerywanie i chyba twórcy procka założyli że użytkownik wykorzysta parę na raz typu timer + UART? Swoją drogą ten licznik robiłem po to aby głównie mierzyć czas od ostatniego odbioru pakietu przez biloteke NRF24 i jak czas był za duży restartowałem procek ale okazuje się,że niezbyt o pomaga bo problem jest raczej z układem NRF (a możliwe że z całym ukłądem) i reset procka nic nie daje. |
Autor: | mczarny [ 18 kwi 2019, o 12:41 ] |
Tytuł: | Re: Atmega 328P i initializacja licznika T1 (16bit) i CTC |
W pętli główniej ale nie znak po znaku tylko za pomocą timera programowego coś np: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Masz BB więc sięgnij do rozdziału o systemach czasu rzeczywistego pod koniec książki i zobaczysz jak można to pięknie zrobić. |
Autor: | szymanskim [ 18 kwi 2019, o 13:45 ] |
Tytuł: | Re: Atmega 328P i initializacja licznika T1 (16bit) i CTC |
Ok, w wolnym czasie zerknę. Mam te rozdział w planach ale nie było czasu. Na razie to przerobiłem biblotekę wysyłki po UART żeby mogła działać również bez przerywań - jest to akceptowalne w moim przypadku. Michał |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |