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



Teraz jest 16 mar 2025, o 22:06


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 5 ] 
Autor Wiadomość
PostNapisane: 8 sie 2015, o 20:51 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 wrz 2013
Posty: 162
Lokalizacja: Rbk
Pomógł: 5

Witam!

Ostatnio z bratem złożyłem kolektor słoneczny do nagrzewania wody w basenie i powoli biorę się za budowę sterownika. Przeszkadzają mi jeszcze w tym upały - 30.5*C w pokoju ;/

Chcę wyświetlać temperaturę na wyświetlaczu 7 segmentowym. Dotychczas używałem TIMERA2 w mikrokontrolerze Atmega8 do obsługi multipleksowania - 3 segmenty. Tym razem jednak tego timera wolałbym użyć do zliczania czasów w sterowniku - nie muszą być dokładne ;)
I tak sobie liczę:
Wartość nie może być większa niż 255 ( 8 bitów ).
FCPU/PRESKALER/150Hz (częstotliwość odświeżania wyświetlacza; 3 segmenty, dla każdego po 50Hz).
8 000 000Hz/256/150= 208.33Hz
Czyli wynik mieści się w 255.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Problem w tym, że segmenty lekko migają.
Próbowałem do poprawienia użyć rejestru TCNT0 - z tego co rozumiem, wartość tutaj wpisana jest wartością początkową timera i zlicza do 255. Czyli zwiększając wartość rejestru TCNT0 odświeżanie powinno przyśpieszyć.
Ale z jakiś powodów jest brak reakcji, kod 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.


Nie wiem, czy wartość 49 jest prawidłowa - próbowałem coś zdziałać na przykładzie MKAVRCalculator ;P Ale nawet zwiększenie tej wartości do np. 250 nic nie daje.

Gdy zmienię preskaler na 64 to wyświetlacz działa tak jak powinien - nie widać odświeżania. Ale w takim razie jak zlicza to mikrokontroler? Liczy od 0 do 255 i tak w kółko? Jeśli tak to można określi jaką częstotliwość odświeżania ma wyświetlacz? - teraz coś policzyłem (nie wiem czy dobrze) ;P Czy jest to 122Hz?


Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sie 2015, o 21:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

A czy w funkcji obsługi przerwania ustawiasz licznik TCNT0 na tą wybrana wartość?
W trybie overflow, w przerwaniu musisz liczbę 49 wpisać do TCNT0 aby licznik liczył od tej wartości do 255.
Jeśli tego nie zrobisz to licznik będzie liczył w zakresie 0...255 i w rezultacie przerwanie będzie się wywoływało z mniejszą częstotliwością.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 09:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 wrz 2013
Posty: 162
Lokalizacja: Rbk
Pomógł: 5

A, widzisz kolego tego właśnie mi brakowało! :) Teraz działa bez problemu.
Przyznam się bez bicia, że nie widziałem o tym, że trzeba tą wartość resetować w funkcji obsługi przerwania ;P


Dziękuję!
Pozdrawiam!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 11:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

dlatego w takich zastosowaniach najwygodniej stosować tryb ctc :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sie 2015, o 11:14 
Offline
Moderator
Avatar użytkownika

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

Ds3 napisał(a):
Przyznam się bez bicia, że nie widziałem o tym, że trzeba tą wartość resetować w funkcji obsługi przerwania

A ja przypomnę tylko, że pisze o tym w Bluebooku w początkowych rozdziałach gdy opisuję różnice pomiędzy trybem NORMAL i CTC - a BB widzę, że masz ;)

------------------------ [ Dodano po: kilkunastu sekundach ]

SylwekK napisał(a):
dlatego w takich zastosowaniach najwygodniej stosować tryb ctc :)


Zdecydowanie CTC jest lepszy i dlatego np lepsza jest ATmega88 która ma dla każdego timera CTC, natomiast biedna stara ATmega8 nie ma CTC dla Timer0

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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO