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



Teraz jest 6 kwi 2026, o 13:24


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 1 sie 2016, o 09:25 
Offline
Nowy

Dołączył(a): 05 lip 2016
Posty: 5
Pomógł: 0

Cześć,
mam problem z 16 bitowym Timerem1 w ATMedze8a. Otóż, gdy włączam przerwanie przy przepełnieniu reszta programu wykonuje się bardzo wolno. Przy preskalerze równym 64, czyli dla taktowania 8Mhz mamy przerwanie co ok 0,5s (1/8000000s * 64 * 65535). Jednak u mnie dzieje się inaczej. Mimo, że procedura przerwania jest pusta, program wykonuje się wielokrotnie dłużej niż bez włączonego przerwania. Ponadto wraz z przerwaniem ( tak mi się wydaje) miga podłączony ekran LCD.
Gdy ustawie preskaler na 8 trudno w ogóle cokolwiek na nim wyświetlić. Ktoś wie co się dzieje?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sie 2016, o 09:56 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 mar 2014
Posty: 197
Lokalizacja: Kielce
Pomógł: 3

Proponuję wstawić kod programu, wtedy prędzej coś będzie można powiedzieć. Fuse bity zmieniłeś ??

_________________
BlueBook



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sie 2016, o 13:37 
Offline
Nowy

Dołączył(a): 05 lip 2016
Posty: 5
Pomógł: 0

Program jest odbiornikiem kodu z pilota z kodowaniem NEC wraz z możliwością wykrycia przytrzymania klawisza ( wykrycie znacznika powtórzenia). Tzn miał być, ale nie działa do końca :) Przerwanie od zbocza reaguje tylko na zbocze opadające, wtedy też jest zerowany timer oraz wartość rejestru timera w chwili przerwania zamieniana na mikrosekundy, następnie zaś sprawdzane jest czy wartość ta odpowiada wartości BIT1 wraz z odchyłkami BLAD. Jeśli tak to wpisujemy do wartości odbieranego bajtu 1, jeśli nie - wartość 0. Każde przerwanie zapisuje bit danych ostatnio odebranego bitu, dlatego ignorujemy 2 pierwsze przerwania (pierwsze to znaczniki początku, drugie to pierwszy bit danych). To feralne przerwanie od przepełnienia ma za zadanie wykryć koniec przyciśnięcia danego klawisza i przygotować zmienne do odbioru kolejnych danych.

Wiem, że nie jest to program idealny do celu przedstawionego w pierwszym zdaniu. Przybliżając jego zasadę działania mam nadzieję również, że ktoś pokieruje mnie jak to można zrobić lepiej.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Dołączam obrazek dla lepszego zrozumienia działania programu. Ten znacznik powtórzenia jest jakiś dziwny, nieNECowski. Ale działa bo wysyłając go programem do telewizora interpretował on to jako przytrzymanie klawisza. Znacznik został wykryty przerwaniami od zboczy.
Obrazek
EDIT:
Z fusebitów jedynie zmieniałem na częstotliwość 8Mhz, tak jak pokazał to mirekk36 na jednym ze swoich filmików dla początkujących.



Ostatnio edytowano 1 sie 2016, o 15:28 przez marcin13225, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sie 2016, o 14:24 
Offline
Użytkownik

Dołączył(a): 14 paź 2012
Posty: 43
Lokalizacja: Szczecin
Pomógł: 0

A czy przy wejściu w przerwanie nie trzeba na początku procedury obsługi zablokować to przerwania żeby w międzyczasie nie nastąpiło kolejne, a na końcu włączyć je ponownie lub/i wyzerować odpowiednią flagę!?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 sie 2016, o 20:15 
Offline
Nowy

Dołączył(a): 05 lip 2016
Posty: 5
Pomógł: 0

Raczej nie trzeba, wręcz na pewno. Przerwanie ma miejsce co ok. 0,5 s, a samo ono trwa dużo krócej, bo po prostu składa się z paru linijek. Więc na pewno to nie to. Niechaj ktoś mnie poprawi, jeśli się mylę.
Tak jak mówię wraz z przerwaniem ekran LCD 2x16 wyłącza się na b. krótką chwilę. Jest to dobrze widoczne dla preskalera 64. Natomiast dla mniejszego tj. 8 lub 1, nie możliwe jest wyświetlenie na nim czegokolwiek, tak szybko miga. Przyczyną musi być przerwanie od przepełnia, bo gdy je wyłączę problem znika.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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