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



Teraz jest 20 kwi 2024, o 06:19


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 2 ] 
Autor Wiadomość
PostNapisane: 26 paź 2011, o 20:19 
Offline
Nowy

Dołączył(a): 26 paź 2011
Posty: 12
Pomógł: 0

Chciałbym zaadoptować kod programu z książki, dotyczący multipleksowania, na Atmega 8.
Po przeczytaniu (tzn. dokładnym przejrzeniu- nie znam j. angielskiego)noty PDF, przerobiłem kod książkowy i nie działa
mi timer w trybie CTC.Co zrobiłem źle? :?:

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 paź 2011, o 21:50 
Offline
Moderator
Avatar użytkownika

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

Po pierwsze to zastanawia mnie bardzo dlaczego postanowił Pan w procku
ATmega8 "zmarnować" na taki cel aż 16-bitowy timer sprzętowy (Timer1)
???? Szkoda bo 8-bitowy wystarczyłby w zupełności. No ale jeśli to
tylko dla testów to rozumiem ;)

Generalnie zabiera Pan się za przesiadkę na inny procek i na inny
timer tymczasem, pierwsza linia w prezentowanym kodzie, nadesłanym
przez Pana to:

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


a zwracałem w książce uwagę, że prawidłowe komentarze w programie są
nie mniej ważne niż sam kod, a szczególnie gdy pracujemy w zespole.
Wprawdzie tu nie pracuje Pan w zespole - jednak .... podsyła Pan kod
komuś innemu do sprawdzenia (mowa tutaj o mnie) .... czyli poniekąd
tworzymy mini zespół. No i co ja widzę? komentarz, że jednak dokonuje
Pan ustawień dla Timer0 a nie Timer1.

hmmm to że chodziło Panu o Timer1 wywnioskowałem na szybko (ale być
może błędnie chociażby z nazwy wektora przerwania jakiego Pan użył)

Kod:
ISR(TIMER1_COMPA_vect)


Niestety w inicjalizacji jest już totalny "MISZ-MASZ" jeśli chodzi o
próbę dotarcia co Pan miał na myśli, bo:

wprawdzie ustawia Pan tryb CTC dla Timera1 (patrząc na nazwę bitu
WGM12) ale czy spojrzał Pan w jakim rejestrze Pan ten bit ustawia ????
dlaczego w TCCR0 ???? przecież nawet nie zaglądając do noty PDF widać
że to rejestr konfiguracyjny Timer0 a nie Timer1

Zatem po takiej linijce to ja już do końca nie wiem czy chodziło Panu
o Timer0 czy Timer1.

Patrząc jednak na koleją linie - jeszcze bardziej się upewniam, że
może chodziło Panu o Timer0 gdyż preksaler bity CS02 i CS00 ustawia
Pan w rejerze TCCR0 znowu od Timera0 i to jeszcze nazwy bitów też
pochodzą z Timera0. Bo dla Timera1 miałyby one nazwy CS12 i CS10

Widzi Pan różnicę ???

Jeśli nie to bardzo jednak proszę otworzyć sobie notę PDF procka
ATmega8 (ja właśnie to zrobiłem) i zajrzeć w jakich rejestrach są bity
konfiguracyjne dotyczące Timer1 i jakie tam są nazwy tych bitów.
Niestety bez noty daleko nie zajedziemy - musi ona być wciąż pod ręką
o czym wciąż piszę w książce ;)

Co ciekawe w kolejnej linii już Pan sprawdził że rejestr porównania
dla Timera1 to OCR1A a nie OCR0 ;) więc tu chyba zajrzał Pan do noty
PDF ???

Dobrze to na razie tyle moich podpowiedzi ;) nie chcę od razu podawać
gotowego rozwiązania a jedynie naprowadzić Pana.

Jednak jeśli dalej się nie uda to proszę śmiało pisać podpowiem dalej
OK?

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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 12 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