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



Teraz jest 27 maja 2026, o 18:18


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 27 kwi 2014, o 14:49 
Offline
Użytkownik

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

Czy jest mi ktoś w stanie powiedzieć dlaczego zamiast widzieć płynne ściemnianie po naciśnięciu przycisku widzę nagłe zgaszenie diody ?

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: 27 kwi 2014, o 14:56 
Offline
Użytkownik

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

Szczerze to dałem go jak już byłem zdesperowany, bo stwierdziłem, że przerwanie tak szybko wykonuje ściemnianie,że aż tego nie widać,a że nic nie ma w pętli głównej to chyba mogłem się na to szarpnąć dla testu :?:



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

Dołączył(a): 25 sty 2014
Posty: 185
Lokalizacja: Działoszyn
Zbananowany użytkownik

Pomógł: 8

jasne ze dla testu można a nawet ,nie raz trzeba przecież mikro. nogi od tego nie odpadną , moze zmniejszenie czestotliwosci pwm cos pomoze ?


nie rozumiem reakcji osób które nad używają wykrzyknika zamiast napisac ze to i tamto .. .. nie powinno sie robic



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2014, o 15:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Co to za procesor?

Z tego co pamiętam z noty. To Timer masz ustawiony jako 8 bitowy.
Przypisujesz mu wartość 256 która przekracza zakres typu uint8_t więc natychmiast przekręca się na zero.
W przerwanie wchodzisz z wartościa OCR1B równą zero
Odejmujesz od niej 1 i robi się 255.

Jako że masz zapewne inverted mode. To przy zero jest pełne wypełnienie a przy 255 pełne wygaszenie.

------------------------ [ Dodano po: 4 minutach ]

Przy czym zapis

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

Też nie jest zbyt dobry
Nie zmieniasz wartości zmiennej i za każdym wejściem w przerwanie. Tylko przypisujesz rejestrowi wartość i pomniejszoną o jeden.

Wystarczy OCR1B--;
Nie potrzebujesz zmiennej nawet.
Rejest z założenia jest volatile ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2014, o 15:53 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 sty 2013
Posty: 844
Lokalizacja: Przemyśl
Zbananowany użytkownik

Pomógł: 43

karolek napisał(a):
nie rozumiem reakcji osób które nad używają wykrzyknika zamiast napisac ze to i tamto .. .. nie powinno sie robic
a inni dla odmiany nie rozumieją osób które nie używają wielkiej litery, znaków interpunkcyjnych i jeszcze w dodatku piszą posty z błędami...

Lyserg: jak podajesz już kod to dopisz też jaki to procesor, jaki kwarc, łatwiej będzie znaleźć babola ;)

_________________
Klimatyzacja Przemyśl



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

Dołączył(a): 25 sty 2014
Posty: 185
Lokalizacja: Działoszyn
Zbananowany użytkownik

Pomógł: 8

janeczqu napisał(a):
a inni dla odmiany nie rozumieją osób które nie używają wielkiej litery, znaków interpunkcyjnych i jeszcze w dodatku piszą posty z błędami...

coś sugerujesz :?: przecież to nie elektroda no nie ? ale widzę że stare nawyki wracają szkoda ! a miało być tak fajnie bez "wbijania szpilek"



Ostatnio edytowano 27 kwi 2014, o 19:45 przez karolek, łącznie edytowano 1 raz

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

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

Wszystko już śmiga mam jeszcze jedno pytanie, bo aktualnie żeby dioda była bardziej jasna muszę ciągle naciskać przycisk, a chciałbym żeby się ciągle rozświetlała gdy przytrzymam przycisk. Zmieniłem,żeby przerwania występowały podczas zmiany stanu ale to niestety nic nie dało... Dorzucam aktualny 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: I jeszcze jeden mankament przy każdym uruchomieniu programu dioda powinna być zgaszona a wygląda tak jakby wykonało się pojedyncze przerwanie.



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

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

Lyserg napisał(a):
I jeszcze jeden mankament przy każdym uruchomieniu programu dioda powinna być zgaszona a wygląda tak jakby wykonało się pojedyncze przerwanie.

Spróbuj skasować flagę przerwania INT0 przed poleceniem sei()
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: 27 kwi 2014, o 20:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Lyserg napisał(a):
Zmieniłem,żeby przerwania występowały podczas zmiany stanu ale to niestety nic nie dało...

Co masz na myśli ?


Lyserg napisał(a):
I jeszcze jeden mankament przy każdym uruchomieniu programu dioda powinna być zgaszona a wygląda tak jakby wykonało się pojedyncze przerwanie.


Czyli, że troszkę się świeci ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2014, o 21:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 28 sty 2013
Posty: 426
Pomógł: 36

Lyserg napisał(a):
Wszystko już śmiga mam jeszcze jedno pytanie, bo aktualnie żeby dioda była bardziej jasna muszę ciągle naciskać przycisk, a chciałbym żeby się ciągle rozświetlała gdy przytrzymam przycisk.


To nie zaprzęgaj do tego przerwania, są prostsze metody. Ja bym to zrobił tak:

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


Wystarczy, że dodasz opóźnienie programowe i będzie działać tak jak chcesz.
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2014, o 22:21 
Offline
Użytkownik

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

jacekk232 napisał(a):
Lyserg napisał(a):
I jeszcze jeden mankament przy każdym uruchomieniu programu dioda powinna być zgaszona a wygląda tak jakby wykonało się pojedyncze przerwanie.

Spróbuj skasować flagę przerwania INT0 przed poleceniem sei()
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Spróbuje jak wrócę do domu.

sq8dsr napisał(a):
Lyserg napisał(a):
Zmieniłem,żeby przerwania występowały podczas zmiany stanu ale to niestety nic nie dało...

Co masz na myśli ?


Lyserg napisał(a):
I jeszcze jeden mankament przy każdym uruchomieniu programu dioda powinna być zgaszona a wygląda tak jakby wykonało się pojedyncze przerwanie.


Czyli, że troszkę się świeci ?


1.Po prostu myślałem, że jak zmienię wywoływanie przerywań ze zbocza rosnącego na jakąkolwiek zmianę stanu logicznego to uzyskam rozjaśnianie się diody w czasie gdy przytrzymam przycisk.

2.Tak dioda odrobinę się świeci,ale nie wiem czy to jest spowodowane.

kaka0204 napisał(a):
Lyserg napisał(a):
Wszystko już śmiga mam jeszcze jedno pytanie, bo aktualnie żeby dioda była bardziej jasna muszę ciągle naciskać przycisk, a chciałbym żeby się ciągle rozświetlała gdy przytrzymam przycisk.



To nie zaprzęgaj do tego przerwania, są prostsze metody. Ja bym to zrobił tak:

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


Wystarczy, że dodasz opóźnienie programowe i będzie działać tak jak chcesz.
Pozdrawiam.


Niby prostsze,ale przy większym programie się nie sprawdzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2014, o 22:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Dioda troszkę świeci bo taka jest właściwość timera przy zerowym rejestrze compare.
Wynika to z tego, że podczas porównania pojawia się taka szpilka pojedyncza.

Dlatego można zrobić tzw. inverted mode. Wtedy ona też się pojawi, ale będzie to na pełnym wypełnieniu.
Nie wiem jak teraz masz podłączoną diodę. Czy katodą czy anodą do pinu MCU. Ale zrób tak:

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


To czywiście jest dla wyjście OC1A
Po tym możesz mieć odwrotność tzn przy 255 będzie zgaszona a przy 0 maksymalna jasność.
Nie wiem jak masz podłączone te diody. Ale poprobuj.



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 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO