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



Teraz jest 30 lis 2024, o 21:00


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 24 paź 2014, o 14:49 
Offline
Użytkownik

Dołączył(a): 17 kwi 2014
Posty: 27
Pomógł: 0

Staram się skorzystać z programowego pwm do sterowania kolorami tasmy led rgb, do plytki też mam podłączony czujnik ir, który odbiera kody z pilota oraz wyświetlacz i czujnik wiglotności i temperatury. Ogólnie cały program śmiga do momentu jak do kodu wsadzę jakąś obsługę pwm diód rgb. Wydaję mi się, że ma to związek z timerami.Do odczytania kodów z pilota używam bibliotek pana Mirosława Kardasia no i z tego co widzę to jest tam użyty Timer1. Myślałem,że to może mieć wpływ więc ustawiłem Timer0 w tryb Normal z wektorem przerwan od przepełnienia,lecz nadal skutkuje to tym, że odbiornik podczerwieni przestaje odbierać kody.Dorzucam kod:

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


EDIT: Jak widać zakomentowałem dwa wiersze w przerwaniu i wtedy wszystko działa ok i niebieska dioda zmienia kolor,gdy odkomentuje 2 pozostałem wszystko się wali... Przestaje odczytywać kody z pilota. I tak próbowałem podpinać pod inne porty te dwa pozostałe kolory.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2014, o 14:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Witam,

Kolega powalczymy z kodem, ale jest on "potworkowaty" dla mnie. Zero komentarzy, wszystko trzeba się domyślić.

Daj garstkę informacji:

Co gdzie podłączone, np. przycisk PC0.

Mikroprocesor i jego taktowanie.

z Niebieskim pozdRowieniem,
Doman89



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2014, o 14:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Kolego ... moje ci powiedziec dlaczego tak sie dzieje. Zobacz na twoj kod od poczatku petli while.

1 odczyt temp.
2. Wyswietlenie
3 petla for 255 x 7ms
4.petla for to samo
5. Odczyt petli


W tskiej kolejnosci wykonuje sie program do tego masz aktywne a w pwm uzywasz uwaga funkci wieszajacej prace programu co 7ms az 510 razy na jeden ze tak powiem obrot petli- cykl maszynowy.

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2014, o 15:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

O i traz widac jak fajnie pomagamy na tym forum. Od zadania pytania minęło 9 minut i są 2 odp w tym samym czasie :) 15:58

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2014, o 15:06 
Offline
Użytkownik

Dołączył(a): 22 lut 2014
Posty: 205
Lokalizacja: Poznań
Pomógł: 22

Po wejściu w drugą pętle while(1) program już z niej nie wyjdzie dlatego nie możesz odebrać kolejnych kodów z pilota



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2014, o 15:07 
Offline
Użytkownik

Dołączył(a): 17 kwi 2014
Posty: 27
Pomógł: 0

Opisałem trochę kod(zmienione są 2 wyjscia odpowiedzialne za czerwony i zielony kolor tasmy ledowej).To jest ATmega 16 taktowana 8 Mhz.Ta pętla ma rozjaśniać i ściemniać ledy, inaczej nie wiem jak miałbym to napisać.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


EDIT:Co do odpowiedzi od gumeni : program nawet nie chcę wejść w pierwszego if'a odpowiedzialnego za odbiór jakiegokolwiek kodu z pilota.Najbardziej mnie dziwi, że jak wyrzucę
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
z przerwania od przepełnienia to ładnie chodzi tak jak chciałem,dioda się rozjaśnia i ściemnia oraz wyświetla temp i wilgotność a co najważniejsze odbiera kod z pilota, który wszystko uruchamia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2014, o 15:24 
Offline
Użytkownik

Dołączył(a): 22 lut 2014
Posty: 205
Lokalizacja: Poznań
Pomógł: 22

TCCR0 |= (1<<CS00); zamień na TCCR0 |= (1<<CS01);. Zmieni to częstotliwość wywoływania przerwania, może procek nie nadąża z obsługą.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 24 paź 2014, o 15:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 03 mar 2014
Posty: 580
Lokalizacja: Jastrzębie-Zdrój
Pomógł: 71

Lyserg napisał(a):
EDIT:Co do odpowiedzi od gumeni : program nawet nie chcę wejść w pierwszego if'a odpowiedzialnego za odbiór jakiegokolwiek kodu z pilota.Najbardziej mnie dziwi, że jak wyrzucę Składnia: [ Pobierz ] [ Ukryj ]Składnia: [ Pobierz ] [ Pokaż ]język cif(cnt>=pwm2) PORTA |= (1<<PA4); else PORTA &= ~(1<<PA4);
if(cnt>=pwm3) PORTA |= (1<<PA6); else PORTA &= ~(1<<PA6);
GeSHi z przerwania od przepełnienia to ładnie chodzi tak jak chciałem,dioda się rozjaśnia i ściemnia oraz wyświetla temp i wilgotność a co najważniejsze odbiera kod z pilota, który wszystko uruchamia.


Kolega to się nie dziw bo programowy PWM to potężne obciążenie dla procka ;)

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


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


i usuń to TCNT z kodu.

z Niebieskim pozdRowieniem,
Doman89


Autor postu otrzymał pochwałę


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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Majestic-12 [Bot] i 4 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO