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



Teraz jest 25 lip 2026, o 18:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 
Autor Wiadomość
PostNapisane: 5 sty 2014, o 17:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

Obrazek
atmega 8 8mhz
policzylem w mirkowym kalulatorze wartosc tcnt0 dla 1ms

skofigurowalem timerek 0 co by mi tikał co 1ms i co 1000ms pokazywał sekunde
ale zaówazylem ze jakos wolno chodzi wiec zmiezyłem z stoperem i wyszlo dokladnie ze pozni mi sie atemaga o 30sec

wiecie gdzie zrobilem babola .?



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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 17:44 
Offline
Użytkownik

Dołączył(a): 12 paź 2012
Posty: 207
Lokalizacja: Rzeszów
Pomógł: 16

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

Przerzuć to szybko do while puki Mirek nie widział :P
a przerwanie wtedy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

A panienka ze zdjęcia niech się lepiej odżywia, mniej stresu i nic się spóźniać nie będzie, hihi:P

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 17:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

a fakt wiedzialem o tym zeby nie dawać ,ale zupełnie zapomnialem

ok, przeniose do while , to musze dac tam jakis delay ? czy moze sobie to wyswietlanie z pelną predkoscią procesora ?

ale nie zmienia to faktu ze i tak timer liczy o 30 wolniej niz moj stoper .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 18:07 
Offline
Użytkownik

Dołączył(a): 12 paź 2012
Posty: 207
Lokalizacja: Rzeszów
Pomógł: 16

Po tej zmianie? Bo możliwe, że to trochę przycinało.
Co do jakiegoś delay'a możesz sobie zmienną prowadzić w przerwaniu jako flagę - co sekundę i tylko co sekundę(gdy flaga =1 ) inkrementować sekundnik i wyświetlać nową wartość.
A i faktycznie jest jeszcze babol w każdym przerwaniu musisz aktualizować TCNT0 wartością wyliczoną czyli 132!!
Czyli przerwanie 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.


Autor postu otrzymał pochwałę

_________________
sig off ;(



Ostatnio edytowano 5 sty 2014, o 18:21 przez Lukasz89, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 18:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Witam

O ile się nie mylę to w przerwaniu trzeba
znowu załadować rejestr TCONT0 i to zaraz na początku
przerwania ,bo timer0
będzie liczył od nowa jak dojdzie do TOP
czyli od zera

EDIT
nie zdążyłem


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 18:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

wg mkavr kalkulatora , ta wartosc dla licznika 8bitowego i 8Mhz nie ma bledów ale poscilem
razem z stoperem i po okolo 5 min. jest jakies kilka sek opóznienia , wiecie w czym problem ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 18:27 
Offline
Użytkownik

Dołączył(a): 12 paź 2012
Posty: 207
Lokalizacja: Rzeszów
Pomógł: 16

5 minut czyli 300s. 300 000 przerwań po wejściu w przerwanie dopiero ustawiasz pozycję startową timera (bo liczy on od w tym momencie od 0) tcnt0=132, czyli wejście w przerwanie trwa kilka taktów (bo puki co z programu nie ma za dużo do odkładania na stosie) i to razy te 300k. Oprócz tego 8MHz wew?
Ja zawsze wykorzystuje tryb CTC, jest przyjemniejszy i nie musisz nic przepisywać w przerwaniu - tcntx (zysk na precyzji). Dlatego też w pierwszym momencie nie zauważyłem bo rzadko korzystam z trybu normal.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 18:44 
Offline
Nowy

Dołączył(a): 18 gru 2013
Posty: 15
Pomógł: 0

Spróbuj ustawić TCNT0 = 131;

W moim programie też coś nie chciał odmierzać równo czasu tzn wychodziło to po zliczeniu jakiegoś dłuższego odcinka czasu ale przeliczyłem na nowo te wartości TCNT0 w ten sposób:

- kwarc: 8MHz
- preskaler: 64

8 000 000 Hz / 64 = 125 000 Hz na sekundy -> 1 / 125 000 Hz = 0,000008 s

timer 8 bitowy wiec zlicza 256 impulsów od 0 do 255

jeśli chcesz odmierzyć 1ms: 0,001 / 0,000008 = 125 wiec 256 - 125 = 131



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 19:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Tak z wyprzedzeniem napiszę :)

Nie wiem do czego użyjesz tego programu po
rozwinięciu ale CTC w M8 jest tylko na Timer1
a on jest 16-bitowy i trochę by było szkoda
wykorzystać go do "tykania" zegarem,

Takie jest moje zdanie a decyzję podejmiesz sam :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 19:07 
Offline
Użytkownik

Dołączył(a): 12 paź 2012
Posty: 207
Lokalizacja: Rzeszów
Pomógł: 16

Timer 2 również posiada tryb CTC:)
A dwa takie tykanie zegarem jak nic się nadaje do wykorzystania na timer programowy, co zwiększa użyteczność tego tykadełka :P

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 19:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

fakt dobre tykadełko nigdy nie jest złe :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 20:09 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

wiecie , do niczego mi to nie jest potrzebne , potrzebuje wiedziec jak tego uzywać
od tak prosto z datasheeta , jeszcze sie musze naumiec jak samemu obliczać podstawe do tcnt bez mkavrkalkulatora



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 20:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

W mk jest podany wzór z tego co pamietam

Wysłane z telefonu

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 20:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

Tam jest pokazany wzor jak obliczyc ocrx a dla tcnt ?

Co to jest tak czerwona 2 mam prescaler pomozyc przez 2 czy do kwadratu ?


Obrazek



Ostatnio edytowano 5 sty 2014, o 20:59 przez DominikN, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 20:45 
Offline
Nowy

Dołączył(a): 18 gru 2013
Posty: 15
Pomógł: 0

Jeśli tok rozumowania który wcześniej przedstawiłem jest słuszny to można by było wyprowadzić taki wzór:

F_p - częstotliwość taktowania procesora
N - preskaler
F_g - generowana czestotliwość

TCNT0 = 256 - ( F_p / ( N * F_g ) )

czyli dla generowania przerwania co 1ms

1ms = 0,001s ----> F_g = 1 / 0,001 = 1000 Hz

TCNT0 = 256 - ( 8 000 000 / (64 * 1000)) = 256 - 125 = 131

Tylko no właśnie dlaczego on różni się od tego który został wyliczony za pomocą programu (132)?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 20:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

czyli wystarczy odjąć od 256 dlatego ze dla licznika 8b ?
a dlaczego odejmuje sie na koncu 125 ? a nie np 100 , 50 czy inna liczbe ?



dał bym sobie obciac ze widzialem na yt filmik gdzie jest omówione w mk jak to jest liczone tylko za nic nie moge tego filmiku
na kanale m. znalesc .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 21:09 
Offline
Nowy

Dołączył(a): 18 gru 2013
Posty: 15
Pomógł: 0

Taktowanie masz: 8 MHz a preskaler: 64 więc
8 000 000 / 64 = 125 000 Hz co w przeliczeniu na czas daje: 1 / 125 000 = 0,000008 s

Czyli co 0,000008 s zwiększana jest wartość Timera TCNT0, a zwiększana jest ona od 0 do 255, czyli 256 razy.
Czyli nie ustawiając żadnej wartości TCNT0 przerwanie zostanie wygenerowane co: 256 * 0,000008 = 0,002048 s

Ale zakładamy, że chcemy mieć przerwanie co 1ms wiec widzimy, że licznik będzie musiał zliczać mniej "impulsów" a nie 256. Skoro zwiększanie o 1 wartości TCNT0 odbywa się co 0,000008s to ile "impulsów" musi zliczyć żeby się przepełnił?
0,001 / 0,000008 = 125. Ale licznik zlicza od zera w górę do 256 (licznik 8b -> 2^8 = 256) wiec od tych 256 trzeba odjąć 125 i otrzymujemy 131.

Mam nadzieję, że dobrze to przeliczyłem, tylko właśnie zastanawia mnie dlaczego w programie wyszło 132 a według tych obliczeń 131, czy znowu ja tu czegoś nie namieszałem ;) .



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 22:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 723
Lokalizacja: Zielona Góra
Pomógł: 75

Abstrahując trochę od tematu rzekłbym.... to tylko się cieszyć, będziesz miał małe Atmegi :lol:

P.S.
Sorry za offtopa, ale nie mogłem się powstrzymać... :lol:

_________________
pozdrawiam
phill2k



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 22:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 sie 2013
Posty: 199
Pomógł: 1

raczej tiny :D
w trakcie wizyty u ginekologa :mrgreen:
Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2014, o 22:54 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27463
Lokalizacja: Szczecin
Pomógł: 1045

RedLine napisał(a):
tylko właśnie zastanawia mnie dlaczego w programie wyszło 132


Bo ma być 132 ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO