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



Teraz jest 9 kwi 2026, o 13:51


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 7 gru 2014, o 16:19 
Offline
Użytkownik

Dołączył(a): 06 gru 2014
Posty: 57
Pomógł: 1

Cześć.

Próbuje napisać prosty program do sterowania diodą LED RGB. Tak wygląda kod:

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


Niestety nie chce to działać :(
Procek jakiego użyłem to Atmega8. Kombinuję już ponad pół godziny i nic nie mogę z tym zrobić. PWM-a nigdy wcześniej nie programowałem i kompletnie nie wiem co tu jest źle.

_________________
"Prosta droga najlepsza" - Demokryt



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2014, o 16:41 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Na początek zrób tylko na Timerze2 jeden kanał i sprawdź czy działa.
Masz źle skonfigurowany Timer1. TCCR1A i TCCR1B to nie są niezależne rejestry do kanału A i B. Trzeba je traktować razem. Szczegóły znajdziesz w specyfikacji. COM1A1, COM1A0, COM1B1, COM1B0 są w tym samym rejestrze. Ustawienie WGM13, WGM12, WGM11 i WGM10 coś tam skonfiguruje, ale nie to co chcesz, a tutaj nadaje się Fast PWM, 8-bit, czyli ustawione powinny być tylko bity WGM12 i WGM10.

_________________
Dragonus Cracovus: Biomagia



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

Dołączył(a): 06 gru 2014
Posty: 57
Pomógł: 1

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

Działa bardzo dobrze. Dioda podłączona do PB3 płynnie rozświetla się i gaśnie ;)
A Timer1A i Timer1B kompletnie nie wiem jak ustawić żeby działały. Przeglądałem kartę katalogową procka, ale nic nie udało mi się zrobić.

Krauser napisał(a):
tutaj nadaje się Fast PWM, 8-bit, czyli ustawione powinny być tylko bity WGM12 i WGM10.

Jak zamiast WGM21 wpisałem WGM12, a zamiast WGM20 wpisałem WGM10 to dioda cały czas nie świeciła.

_________________
"Prosta droga najlepsza" - Demokryt



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 gru 2014, o 19:26 
Offline
Użytkownik

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Chcąc ustawić Timer1 w taki sam tryb jak ustawiłeś Timer2, to powinno to chyba 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łę

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 gru 2014, o 00:21 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

spaniel napisał(a):
A Timer1A i Timer1B kompletnie nie wiem jak ustawić żeby działały. Przeglądałem kartę katalogową procka, ale nic nie udało mi się zrobić.

Timer1 to jeden timer co ma 2 kanały PWM. Jeśli karta po angielsku jest za ciężka ze względu na słownictwo techniczne to zajrzyj do polskiej wersji:
http://www.pg.gda.pl/~zbczaja/pdf/atmega16_pl.pdf

_________________
Dragonus Cracovus: Biomagia



Ostatnio edytowano 8 gru 2014, o 19:12 przez Krauser, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 gru 2014, o 10:27 
Offline
Użytkownik

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Yyy, chyba drobny błąd przy cytowaniu się wkradł ;)

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 gru 2014, o 19:13 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Poprawione :roll:

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 gru 2014, o 20:21 
Offline
Użytkownik

Dołączył(a): 06 gru 2014
Posty: 57
Pomógł: 1

Marcin_G napisał(a):
Chcąc ustawić Timer1 w taki sam tryb jak ustawiłeś Timer2, to powinno to chyba wyglądać tak:

Zrobiłem jak napisałeś. Kod wygląda teraz tak:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Coś już zaczyna działać, ale diody podłączone do wyjść timera1 przy ściemnianiu i rozjaśnianiu mrugają. Co jest tego powodem?

krauser napisał(a):
Jeśli karta po angielsku jest za ciężka ze względu na słownictwo techniczne to zajrzyj do polskiej wersji
Dzięki za polską wersję. Z angielską miałem problem ;)

_________________
"Prosta droga najlepsza" - Demokryt



Ostatnio edytowano 11 gru 2014, o 17:06 przez spaniel, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 gru 2014, o 20:56 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

spaniel napisał(a):
Coś już zaczyna działać, ale diody podłączone do wyjść timera1 przy ściemnianiu i rozjaśnianiu mrugają. Co jest tego powodem?

Za niska częstotliwość = za duży preskaler. Sprawdź ustawienia bitów CSxy i oblicz sobie częstotliwość ze wzoru:
F_CPU/preskaler/256
- 256 wynika z tego, że PWM jest 8-bitowy
- F_CPU to częstotliwość taktowania procesora po uwzględnieniu fusebitów


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 gru 2014, o 20:51 
Offline
Użytkownik

Dołączył(a): 06 gru 2014
Posty: 57
Pomógł: 1

Próbowałem icaczej ustawić preskaler, ale nie wyszło. Częstotliwość PWM-a dalej była za mała.

Krauser napisał(a):
F_CPU/preskaler/256
Z tego wynika że częstotliwość taktowania też ma wpływ na częstotliwość PWM-a. Podłączyłem sobie kwarc 16MHz do procka, przestawiłem taktowanie na kwarc i teraz wszystko działa :D

Kod też trochę zmieniłem i teraz mam fajny sterownik RGB ;)
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
"Prosta droga najlepsza" - Demokryt



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 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