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



Teraz jest 4 wrz 2026, o 15:45


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 52 ]  Przejdź na stronę Poprzednia strona  1, 2
Autor Wiadomość
PostNapisane: 2 lut 2014, o 20:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 gru 2011
Posty: 97
Lokalizacja: Radomsko/Poznań
Pomógł: 0

no dobrze MirkoT, napisałem też już wcześniej, że nie mam jak zmienić pinu bo jest to gotowa płytka i mogę testować ją tylko na 3 pinach. Tam gdzie mam diode RGB. Docelowo chce uruchomić te przerwania programowe i ciągle nie wiem jak.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2014, o 20:40 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

zlata_n napisał(a):
no dobrze MirkoT, napisałem też już wcześniej, że nie mam jak zmienić pinu bo jest to gotowa płytka i mogę testować ją tylko na 3 pinach. Tam gdzie mam diode RGB. Docelowo chce uruchomić te przerwania programowe i ciągle nie wiem jak.

jak mówiłem... nie czytałem całego wątku, a tylko odniosłem się do tego Twoje postu i kodu o niewykonywaniu się pętli głównej po włączeniu przerwań.
a skoro nie możesz zmienić pinu to zakomentuj w przerwaniu pierwszego if'a

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2014, o 20:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 gru 2011
Posty: 97
Lokalizacja: Radomsko/Poznań
Pomógł: 0

zakomentowałem pierwszego if i włączyłem sei() i to samo, `debugger` swieci sie cały czas, nie mruga. Dzieje się to samo gdy usunę wszystko z ciała przerwania, więc to nie pomaga. Dopiero gdy zakomentuje sei() dioda `debugger` sobie mruga co 1sek.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2014, o 20:45 
Offline
Użytkownik

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

zlata_n napisał(a):
Jest to program z bluebooka i `teoretycznie` nie zmieniany powinien działać tak jak to opisuje Mirek w książce. Nie było mowy o problemie z inicjalizacją tych wartości PWM.


Piszesz że z Bluebooka?
No to niedokładnie przepisałeś.
Spróbuj to:

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

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2014, o 20:47 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

zlata_n napisał(a):
zakomentowałem pierwszego if i włączyłem sei() i to samo, `debugger` swieci sie cały czas, nie mruga. Dzieje się to samo gdy usunę wszystko z ciała przerwania, więc to nie pomaga. Dopiero gdy zakomentuje sei() dioda `debugger` sobie mruga co 1sek.

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

Na pewno?

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2014, o 21:07 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 gru 2011
Posty: 97
Lokalizacja: Radomsko/Poznań
Pomógł: 0

Tak, dokładnie tą linie zakomentowałem



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 lut 2014, o 21:53 
Offline
Użytkownik

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

Trochę się już pogubiłem, o czym teraz rozprawiamy ;)
Generalnie to problemem w kodzie który wkleiłeś w pierwszym poście był brak opóźnienia w wykonywaniu pętli. Co prawda dałeś jednego delaya, ale nie dość że był on poza instrukcjami wykonywanymi w pętli, to właśnie był tylko jeden. Nie było więc innej opcji jak ciągłe świecenie diody. Nawet jakbyś tego delaya umieścił w pierwszej pętli a nie dał byś drugiego w drugiej pętli, to dioda też by się ciągle świeciła.
Sprawdziłeś kod który wkleiłem? Działa?

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 18:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 gru 2011
Posty: 97
Lokalizacja: Radomsko/Poznań
Pomógł: 0

Marcin_G wrzuciłem dokładnie kod który wkleiłeś i dioda cały czas świeci. Mimo tego że jasno mi wytłumaczyłeś gdzie powinny być te delay'e i dlaczego to lampka nie świeci jak powinna. Zapala się w mgnieniu oka i ciągle świeci ...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 21:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Może teraz napiszę herezję :)

ale spróbuj tak dla testu ustawić w
fuse bitach uproszczonych CKOPT

Wiem wiem dotyczy to zewnętrznego taktowania ale może spróbować



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 22:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 gru 2011
Posty: 97
Lokalizacja: Radomsko/Poznań
Pomógł: 0

probowałem z włączonym i wyłączonym CKOPT, to samo ... mimo wszystko dzięki za pomoc!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 22:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Normalnie tak mnie to zaaferowało ,że jak wrócę
z wygnanie (delegacja) wrzucę ten kod u siebie.:)

Tylko to dopiero pod koniec tygodnia (niestety)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2014, o 23:40 
Offline
Użytkownik

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

No to kurcze nie mam pomysłu :( . U mnie ten kod działa zarówno wtedy gdy mam wstawione te warunki co w kodzie podanym kilka postów wcześniej, jak i same delaye. Za każdym razem dioda się rozjaśnia i ściemnia.

------------------------ [ Dodano po: 7 minutach ]

Jeszcze raz przeczytałem Twój pierwszy post i piszesz że używasz też driverów do LED. Może one coś mieszają? Jest opcja żebyś po testował kod na diodzie podłączonej bezpośrednio do procka? Może uda Ci się dolutować jakoś diodę "na pająka".

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lut 2014, o 15:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 gru 2011
Posty: 97
Lokalizacja: Radomsko/Poznań
Pomógł: 0

Marcin_G -> wlutowałem diode na pająka, zrobiłem test i to samo... zachwouje się tak samo jak tam 3W RGB na driverach ....

Ponieżej kod którym testuje:

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


dioda nie mruga ... jeżeli tylko zakomentuje sei() to dioda mruga poprawnie (co 1 sek). Według mnie coś z inicjalizacją przerwania Timer2...? czasy złe? preskaler? podział częstotliwości? Przypomne, że korzystam z ATmegi8 i wewnętrze taktowanie 8MHz.

HELP ME ...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 lut 2014, o 15:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Mam jeszcze jednego pomysła jak to mówi Ferdek

weź tylko dla testu zmień przerwanie np.
na Timer0 overflow
ustaw tam wszystko co trzeba
zrób pusty wektor tego przerwania i zobacz
czy jak puścisz przerwania (sei()) to
czy wynik będzie taki sam jak obecnie

sprawdzisz chociaż częściowo czy przerwania "żyją"
no bo przecież ten Twój ostatni powinien działąć

Jeśli to nie pomoże to jeszcze możesz odlutować wszysko
co jest zbędne do poprawnej pracy uC i jeszcze raz puścić
procka tylko z samym debugerem

Wiem dużo roboty ale nie mam innego pomysłu jak to sprawdzić
gdzie siedzi przyczyna tej "awarii" :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 lut 2014, o 01:00 
Offline
Użytkownik

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

zlata_n napisał(a):
...dioda nie mruga ... jeżeli tylko zakomentuje sei() to dioda mruga poprawnie (co 1 sek). Według mnie coś z inicjalizacją przerwania Timer2...? czasy złe? preskaler? podział częstotliwości? Przypomne, że korzystam z ATmegi8 i wewnętrze taktowanie 8MHz.

HELP ME ...


Też testuje ten Twój program na ATmedze8 z wewnętrznym taktowaniem 8MHz, i wszystko działa prawidłowo. Zarówno PWM jak i teraz ta migająca dioda z ostatnio wklejonego kodu.

_________________
http://www.marcingibas.pl



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

Dołączył(a): 12 gru 2011
Posty: 97
Lokalizacja: Radomsko/Poznań
Pomógł: 0

no to mam chyba uszkodzoną ATmege bo mi nie działa ...
poniżej schemat moje układu:

Obrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2014, o 15:42 
Offline
Użytkownik

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

Może ją przypiekłeś przy lutowaniu? ;)
Próbowałeś skonfigurować TIMER1, też ma tryb CTC, żeby sprawdzić co wtedy się dzieje?

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2014, o 17:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 gru 2011
Posty: 97
Lokalizacja: Radomsko/Poznań
Pomógł: 0

Skonfigurowałem Timer1 dla testu i to samo, faktycznie chyba coś nie tak z moją ATmegą ...

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 lut 2014, o 19:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Witam

Niestety @zlata_n wgrałem Twój program do ATmegi8 i
niedobre wieści dla Ciebie bo u mnie ten program śmiga aż
miło :).
Jeśli na innym timerze masz taką samą sytuację jak przedtem
to na 90% (moim zdaniem oczywiście) uC poszedł
na wieczny odpoczynek :(
i chyba będziesz musiał sprawić sobie nowy ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2014, o 14:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 gru 2011
Posty: 97
Lokalizacja: Radomsko/Poznań
Pomógł: 0

Dziękuje koledzy za sprawdzanie kodu ;) faktycznie chyba ATmega jest uszkodzona... choć uparcie twierdze, że nie... dlaczego?
Zrobiłem jeszcze jeden test na timerach. Odpaliłem 3 Timery sprzętowe w trybie PWM. Wszystko działa tak jak powinno. Tak więc Timery są OK. Problem zaczyna się jak wrzucam przerwania...

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



No dobra, przerwania są uparte i nie chcą zadziałać, to może spróbuję ugryźć problem od innej strony ... Mianowicie przerwania programowe (systemowe) od timera potrzebuje tak naprawdę do kawałka kodu, który odpowiedzialny jest za funkcje mix, która miesza kolory w 3 niezależnych pętlach. Wynikiem czego jest piękne przejście pomiędzy kolorami ... Kod ten jest wzięty z naszego forum i faktycznie działa efektownie. Teraz pytanie brzmi, czy da się rozwiązać ten problem bez korzystania z timera `systemowego` ?? Przychodzi mi na myśl tylko użycie pętli for() co tworzy nam kod zbyt `liniowy`. Jakieś pomysły? Poniżej wlejam funkcję, którą chcę przerobić.


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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2014, o 20:17 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Zamiast odpalać przerwania możesz spróbować badać stan flagi od przepełnienia Timera0 np. w ten sposób
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


W przypadku tego rozwiązania pętla while musi się wykonywać jak najszybciej a wszystko w niej powinno być nieblokujące.

W twoim programie możesz spróbować wywoływać funkcję prog_timer() wewnątrz pętli while w funkcji mix_channel().
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Sprawdź czy takie rozwiązanie ci zadziała.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 lut 2014, o 16:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 gru 2011
Posty: 97
Lokalizacja: Radomsko/Poznań
Pomógł: 0

Dzięki za pomoc i dobre chęci ale niestety nie chce działać. Wpisując twój kod ciągle świecą się diody.



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: 52 ]  Przejdź na stronę Poprzednia strona  1, 2

Strefa czasowa: UTC + 1


Kto przegląda forum

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