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



Teraz jest 27 kwi 2026, o 21:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
 Tytuł: PWM Atmega328P
PostNapisane: 5 sty 2014, o 23:24 
Offline
Nowy

Dołączył(a): 29 wrz 2013
Posty: 3
Lokalizacja: Legnica
Pomógł: 0

Witam serdecznie jestem w trakcie czytania niebieskiej książki i oglądania kursów. Lecz przepisać coś i cieszyć się że jest to bez sensu (oczywiście moim zdaniem), więc chciałem do przykładu z książki o sterowaniu PWM oraz diodami RGB uruchomić programowe pwm na w/w mC. Kombinuję z timerami już różne konfiguracje i nic nie działa czy mógłby mi ktoś podpowiedzieć gdzie popełniam błąd? Zamieszczam tylko moją konfigurację timera oraz nazwę przerwania, aby nie umieszczać przykładów z książek. :)

Konfiguracja Timera:
Kod:
TCCR0B |= (1<<WGM01);//tryb CTC
TCCR0B |= (1<<CS20);//Preskaler
OCR2B = 199;// odliczanie od 0 do 200
TIMSK2 |=(1<<OCIE2B); //zezwolenie na przerwanie Compare Match

Nazwa przerwania:
Kod:
ISR( TIMER2_COMPB_vect )


I gdzie tu jest błąd wertuję notę Atmela i nic. Z góry pięknie dziękuję.



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

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

Błąd jest w tym, że ty sam sobie wymyśliłeś że jak jest sobie OCR2 to znaczy że pewnie wszystkie rejestry z literką B na końcu są do kanału jakiegoś tam B, a te z literką A na końcu są do niby kanału jakiegoś A

a w książce dokładnie nie przeczytałeś o konfiguracji ani o tym, żeby ZAWSZE ale to ZAWSZE zaglądać (mieć otwartą notę PDF procka) przed sobą

zajrzyj więc do PDF ATmega328 i powiedz mi w jakim rejestrze masz bit WGM01 ??? ;) chodzi mi o tą twoją linijkę:

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

(bo przysięgami ci, że na pewno tego nie wziąłeś z noty PDF tylko z własnej głowy bo tak ci się wydawało)

i powiedz mi dlaczego wybrałeś przerwanie TIMER2_COMPB_vect a nie TIMER2_COMPA_vect ???

bo w książce piszę o tym ... ok jeśli chcesz sobie zmienić to jednak musisz doczytać już dalej sam w nocie .... z czym to się wiąże ...

a jeśli chcesz na spokojnie poćwiczyć i żeby ci łatwiej poszło to sprawdź najpierw z TIMER2_COMPA_vect i OCR0A ;) ... a potem czytaj notę PDF, i próbuj dojść czym się to różni ok?


Autor postu otrzymał pochwałę

_________________
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  
PostNapisane: 6 sty 2014, o 00:19 
Offline
Nowy

Dołączył(a): 29 wrz 2013
Posty: 3
Lokalizacja: Legnica
Pomógł: 0

Po wysłaniu postu zauważyłem.. to WGM01

Miało to być napisane w ten sposób oczywiście też błędnie ponieważ nie działa :)

Kod:
   TCCR2B |= (1<<WGM21);
   TCCR2B |= (1<<CS20);
   OCR2B = 199;
   TIMSK2 |=(1<<OCIE2A);


właśnie mam notę cały czas otwartą megi 32 i 328p. No fakt nie bardzo rozumiem tego powiedzmy A i B :/ Wydaje mi się po mojej interpretacji noty że są to nie zależne rejestry OCR2A i OCR2B i możemy je dowolnie porównywać z rejestrem TCNT2, ale służą do obsługi fizycznego wyjścia w uC ... :)? Dziękuję za sprowadzającą na ziemię odpowiedź jutro będę dalej kombinował.:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2014, o 00:52 
Offline
Moderator
Avatar użytkownika

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

Elmod napisał(a):
TCCR2B |= (1<<WGM21);


Nadal jest źle :(

Elmod napisał(a):
nie bardzo rozumiem tego powiedzmy A i B :/ Wydaje mi się po mojej interpretacji noty że są to nie zależne rejestry OCR2A i OCR2B


No widzisz popełniasz błąd jaki popełnia sporo początkujących ... bo wydaje im się że skoro są dwa niezależne rejestry OCR2A oraz OCR2B to w dziwny sposób w głowach sobie imaginują, że odpowiadają im rejestry: TCCR2A oraz TCCR2B ...

widzisz co napisałem ? "imaginują sobie" ;) czyli wymyślają sobie - zamiast zajrzeć do NOTY PDF. I do tego ta autosugestia jest TAK SILNA, że nawet jak drugi raz zaglądają to nadal nie widzą ...

więc jeszcze raz ci podpowiem ... proszę cię zajrzyj do noty PDF do opisu rejestru TCCR2B i spróbuj mi w nim znaleźć bit WGM21 ;) OK ?

to jest KONKRETNA podpowiedź z mojej strony .... i pewnie sam się zdziwisz ;) i to mocno ... ale nie martw się nie ty pierwszy i nie ostatni

.... jak zajrzysz to daj znać ... a zobaczysz że będziesz już nie tylko bliżej rozwiązania zagadki ale na dodatek poczynisz kolejny spory krok w zrozumieniu jak czytać notę PDF oraz w zrozumieniu konfiguracji timerów OK ?

a potem wyjaśnimy sobie kolejne zagadki jeśli jeszcze będziesz miał dalsze pytania.


Autor postu otrzymał pochwałę

_________________
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  
PostNapisane: 6 sty 2014, o 01:16 
Offline
Nowy

Dołączył(a): 29 wrz 2013
Posty: 3
Lokalizacja: Legnica
Pomógł: 0

Dzięki piękne :)

No racja wymuszone imaginacje czasami są silniejsze od tego co pisze w instrukcjach, notach itp :)

TCCR2A i TCCR2B to tak naprawdę rozbite na 2 rejestry ustawienia TIMERA2 ;)

Kod:
   TCCR2A |= (1<<WGM21);
   TCCR2B |= (1<<CS20);
   OCR2A = 199;
   TIMSK2 |=(1<<OCIE2A);


Działa:)

Jutro na pewno będę miał jeszcze kilka pytać związanych z timerami bo w przygodzie z uC na pewno nie ominie się tego zagadnienia :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2018, o 08:15 
Offline
Nowy

Dołączył(a): 23 lis 2015
Posty: 2
Pomógł: 0

Jestem początkujący, "przesiadam" się z arduino na eclkipsa. Mam kilka płytek arduino nano z Atmegą328p, które dotychczas wykorzystywałem a łatwo się lutują, są tanie i dotychczas mi wystarczają. W jednym z projektów do sterowania bramą przez arduino zauważyłem, że dioda kontrolna led_builtin zamiast jasno świecić i migać to jest przyciemniona. (używałem funkcji millis() do pomiaru różnicy czasu) po za tym układ działał prawidłowo. Dotarłem do ściany i jedyne wyjście to dalszy rozwój czyli C i eclipse. Przeczytałem poradnik, przeczytałem notę do 328P, uporałem się ustawieniem programatora typu arduino m328p (dodałem opcję -B 0.5 ) i przenoszę projekt. Z MkCLIPSE nie mogę skorzystać z uwagi na brak obsługi programatora arduino.
Proszę mi wyjaśnić : na stronie 19.9.2 TCCR0B bity CS0[2:0] (preskaler /1024) w tabeli 19-10 są opisane jako CA02,CA01,CS00 czy to jest błąd opisu i ma być CS02, CS01,SC00 czy chodzi o co innego - chciałbym to zrozumieć. ( o co chodzi ?).



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2018, o 10:02 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 232
Pomógł: 26

Podejrzyj plik iom328p.h

Musieli się walnąć w tym PDF
W Pliku są takie definicje:

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

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2018, o 10:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

pino napisał(a):
w tabeli 19-10 są opisane jako CA02,CA01,CS00 czy to jest błąd opisu i ma być CS02, CS01,SC00 czy chodzi o co innego - chciałbym to zrozumieć.

Znak "A" jest obok "S" na klawiaturze, więc komuś się palec omsknął :)
Niestety w notach updatowanych przez Microchipa zdarzają się literówki. Jak zajrzysz to starszej wersji sygnowanej jeszcze przez Atnela, to tam jest OK: https://nettigo.pl/attachments/35.

A u Ciebie też jest podobny błąd SC00 czy CS00 :D.

--
Pozdrawiam,
Robert



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2018, o 11:41 
Offline
Nowy

Dołączył(a): 23 lis 2015
Posty: 2
Pomógł: 0

Dziękuję za szybkie wyjaśnienie ( z przykładem !!). Pobrałem PDF z linka i działam dalej.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 kwi 2018, o 21:40 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1041
Lokalizacja: Trójmiasto
Pomógł: 190

Tak zapytam skąd pobrałeś tego wcześniejszego pdf-a z datascheet? Bo w aktualnym na stronie microchipa dla atmegi 328P takiego babola niema...
Obrazek
http://ww1.microchip.com/downloads/en/DeviceDoc/ATmega328_P%20AVR%20MCU%20with%20picoPower%20Technology%20Data%20Sheet%2040001984A.pdf



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2018, o 10:52 
Offline
Użytkownik

Dołączył(a): 29 paź 2017
Posty: 232
Pomógł: 26

Po tym jak kolega napisał o problemie znalazłem to tu
http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-42735-8-bit-AVR-Microcontroller-ATmega328-328P_Datasheet.pdf
strona 142

_________________
Jestem na GG 31324
Nowy soft, nowa nadzieja.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2018, o 14:49 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 mar 2014
Posty: 1475
Pomógł: 167

xentis napisał(a):
Tak zapytam skąd pobrałeś tego wcześniejszego pdf-a z datascheet? Bo w aktualnym na stronie microchipa dla atmegi 328P takiego babola niema...
Twój pdf to świeżynka. Widać w stopce datę 2018 (a w dokumencie luty 2018) :D

W sumie to Twój jest lepszy niż zaproponowany przeze mnie, bo najnowszy :)

--
Pozdrawiam,
Robert



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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