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



Teraz jest 19 lut 2025, o 10:36


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 1 sty 2016, o 16:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 205
Lokalizacja: UK
Pomógł: 10

Witam wszystkich użytkowników forum,

Bez zbędnego wstępu przejdę od razu do rzeczy:
Zabrałem się za oprogramowanie mojego urządzenia z ATmegą88 na pokładzie.
O ile na ATB z ATmegą32 inicjalizacja Timera była prościutka to tutaj mam jakiś błąd:

Oto fragment kodu z inicjalizacją (nie działa):

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


Taktowanie: 8Mhz
Chce uzyskać przerwanie co 10ms (100Hz)

Czy mógłby ktoś wyjaśnić jak należy prawidłowo zainicjalizować Timer (na przykładzie tego uC) i jak należy ten fragmeny czytać w ds (wiem, że jest w BB, ale tu mamy rejestry z literkami A i B, co strasznie mi się miesza (nie wiem, do którego się odnoszę) :shock: ?

Z góry dziękuję za odpowiedź

_________________
MMT Technologies



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2016, o 16:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Z tymi literkami to jest tak:
Obrazek
...musisz szukać po tych TTCR'ach gdzie występują interesujące Cię bity. U Ciebie ( w Twojej ATm :) ) CSxx zajdują się w TCCR0B.


Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2016, o 17:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 205
Lokalizacja: UK
Pomógł: 10

Dziękuję za pomoc.

CS02, CS01, CS00 i WGM02 są w rejestrze B, a wyżej w tabelce jest napisane, że WGM01 i WGM00 są w rejestrze A - czy dobrze rozumiem? (bo coś czuje, że chyba nie ;) )

kicajek napisał(a):
...musisz szukać po tych TTCR'ach gdzie występują interesujące Cię bity.


Interesujące mnie bity rozumiem jako te, które ustawiam na stan logiczny 1 tak?

To jak powinno to w końcu wyglądać, bo tak jak poniżej to chyba nie (preskaler i tryb powinny chyba tak na logike być w tym samym rejestrze): :?

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



Przepraszam za takie błahe pytania, ale chciałbym to raz a dobrze zrozumieć.

_________________
MMT Technologies



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2016, o 17:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Makowka napisał(a):
Interesujące mnie bity rozumiem jako te, które ustawiam na stan logiczny 1 tak?

...tak
Makowka napisał(a):
To jak powinno to w końcu wyglądać, bo tak jak poniżej to chyba nie (preskaler i tryb powinny chyba tak na logike...

Właśnie tak powinno wyglądać.
A co rozumiesz przez "logikę" - nie o nią tutaj chodzi, a o to "jak fabryka zarządziła magazynem"
Mało tego jeśli (podkreślę:)będziesz chciał przypisać upatrzone bity do innego rejestru to Ty np widzisz CS00, CS01 a kompilator widzi tylko 0x01, 0x02 i wpisując te CS'y do innego rejestru zmieniasz bity które są na danych pozycjach w tym rejestrze. To "opisowe" CSxx jest dla Ciebie i innych czytelników not; kompilatora interesują suche liczby.

Pozdr



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2016, o 18:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 205
Lokalizacja: UK
Pomógł: 10

Dziękuję za pomoc - teraz timer działa, aczkolwiek źle, ponieważ po wyświetleniu ekranu startowego zmienna licznik nie wzrasta (jest cały czas równa 1). To na 100% błąd w procedurze obsługi przerwania lub ustawieniu timera.


Ma ktoś może pomysł?

Poniżej pliki main.c i common.c:


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





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

_________________
MMT Technologies



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2016, o 19:27 
Offline
Nowy

Dołączył(a): 30 lip 2013
Posty: 21
Lokalizacja: Pszczyna
Pomógł: 3

Hej, wydaje mi się, że powinieneś zmienić TIMER0_COMPA_vect na TIMER0_COMPB_vect skoro wcześniej używasz OCR0B i OCIE0B, ewentualnie zmienić te dwa na OCR0A i OCIE0A. Po za tym czy zmienna licznik nie powinna mieć przypisanej wartości początkowej?


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2016, o 19:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 205
Lokalizacja: UK
Pomógł: 10

Dziękuję za odpowiedź
niestety obie te zmiany nie przynoszą oczekiwanych rezultatów (ciągle to samo).
Dodam, że wszystkie połączenia są dobre i na pewno działają (testowałem "manualnie").

_________________
MMT Technologies



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2016, o 20:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Makowka napisał(a):
niestety obie te zmiany nie przynoszą oczekiwanych rezultatów

Pokaż te zmiany, bo się pogubiłem ;)

Pozdr.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2016, o 20:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sie 2015
Posty: 205
Lokalizacja: UK
Pomógł: 10

Dokładnie te zmiany które zaproponował kolega mknight9090 po obejrzeniu kodu w moim poście powyżej:

- przypisanie wartości zmiennej licznik
- zmiana TIMER0_COMPA_vect na TIMER0_COMPB_vect



Ale to już nie ważne bo przed chwilą udało mi się uruchomić, tyle że na TIMERZE2 a nie TIMERZE0 (może z tamtym rejestrem coś było nie tak, bo już 3 godziny siedzę, przeglądam notę i po prostu zabrakło mi pomysłów - mój pierwszy taki problem z timerem)

Jeszcze raz dziękuję wam za pomoc :D :D

Poniżej prawidłowy, działający :) kod (tyle, że zamiast wyświetlać licznik migam dwoma diodami z różną częstotliwością) :

main.c

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



common.c

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

_________________
MMT Technologies



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 1 sty 2016, o 21:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

Witam
Makowka napisał(a):
(może z tamtym rejestrem coś było nie tak, bo...

...robiony w innych rejonach ChRL ;)
Jak już tyle czasu spędziłeś i metodą każdy z każdym to jeszcze może tak?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Pozdr.



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

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