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



Teraz jest 29 mar 2024, o 13:11


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
Autor Wiadomość
PostNapisane: 6 kwi 2020, o 10:31 
Offline
Nowy

Dołączył(a): 14 mar 2020
Posty: 18
Pomógł: 0

Witam!
Jestem poczátkujácym i proszé o pomoc. Nie potrafié poradzic sobie z uruchomieniem PWM dla diody LED z uzyciem tablicy Gamma_correctionR z MkAvrCalculator dla ATtiny102. Ponizej zamieszczam mój kod:


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



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



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


Dziékujé serdecznie,

Sebastian



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 kwi 2020, o 11:17 
Offline
Moderator
Avatar użytkownika

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

ok rozumiem nie potrafisz sobie poradzić, po to jest forum - pokazałeś kod i super ... ale gdzie piszesz na czym polega twój problem ? czy to jakaś ma być zagadka żeby ktoś czytał twój kod i próbował zgadnąć ?

Proponuję jednak uzupełnić opis problemu ok ? wtedy będzie można coś pomóc

_________________
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 kwi 2020, o 11:40 
Offline
Nowy

Dołączył(a): 14 mar 2020
Posty: 18
Pomógł: 0

Dzięki za odpowiedź. Problem polega na tym, że nie mam kontroli nad prędkością rozjaśniania i ściemniania diody. Próbowałem różnych ustawień TCCR0A ale najwidoczniej czegoś nie rozumiem i nie potrafię dostrzec więc proszę o pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 kwi 2020, o 12:10 
Offline
Moderator
Avatar użytkownika

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

No ale co to oznacza że nie masz kontroli nad prędkością ? nie za bardzo rozumiem? Poza tym masz tam jakieś pwm = GAMMAR( a ); i co to ma być to a ? Przecież to jest u ciebie jakaś zmienna globalna i nigdzie jej nie ustawiasz ... co gorsze po co dodałeś jej DEFINICJĘ do pliku *.h od korekcji gamma - tam się NIC nie dodaje.

w skrócie u ciebie zawsze a jest = ZERO i nic się nie będzie działo ... więc nie mam pojęcia po co dałeś tę zmienną - zamiast np i czyli

pwm = GAMMAR( i );

_________________
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 kwi 2020, o 12:38 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Należałoby też usunąć linijkę:
Sebastian_Sl napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
bo to oznacza sprzętowe generowanie przebiegu na pinie PB1, czyli w trybie CTC będziesz tam miał na stałe wypełnienie 50%, a ustawianie stanu pinu PB1 w procedurze obsługi przerwania wtedy nic nie daje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 kwi 2020, o 13:13 
Offline
Nowy

Dołączył(a): 14 mar 2020
Posty: 18
Pomógł: 0

Dziéki za pomoc. Po zastosowaniu sié do powyzszych wskazówek mój kod wygláda tak w main.c:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zakomentowalem definicje GAMMAR w pliku *.h ale dioda nadal zapala sie i gasnie bardzo szybko. Nie wiem jak to spowolnic. Dziéki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 kwi 2020, o 13:56 
Offline
Moderator
Avatar użytkownika

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

Sebastian_Sl napisał(a):
Zakomentowalem definicje GAMMAR w pliku *.h a

O matko a po jakiego grzybka ??? no coś kolega chyba nie czyta uważnie podpowiedzi ... toż pisałem o definicji zmiennej "a" w tym pliku H

Obrazek

a nie o tym co ty zrobiłeś

------------------------ [ Dodano po: 1 minucie ]

Sebastian_Sl napisał(a):
dioda nadal zapala sie i gasnie bardzo szybko.

a jak ma być inaczej jeśli dałeś tylko 1ms delaja ?

_________________
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: 7 kwi 2020, o 00:42 
Offline
Nowy

Dołączył(a): 14 mar 2020
Posty: 18
Pomógł: 0

Ok, poprawiłem wszystko jak trzeba ale większa wartość delaya wydłuża tylko czas w pełni zapalonej i zgaszonej diody, tzn dioda szybko się zapala, świeci jakiś czas, szybko gaśnie i pozostaje przez jakiś czas zgaszona. Nie pulsuje równomiernie tak jak w 30tej minucie tego poradnika:
https://www.youtube.com/watch?v=Apzv4uRgJ1Y
Dzięki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2020, o 06:42 
Offline
Moderator
Avatar użytkownika

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

A kto zjadł specyfikator volatile dla pwm ?

A kto zrobił tylko pętlę z rozjaśnianiem a teraz pyta dlaczego płynnie się nie ściemnia?

A kto nie użył do tego celu timerów programowych tylko delaya i się dziwi, że działa to tak a nie inaczej?

_________________
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: 7 kwi 2020, o 08:03 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Zwróciłbym też uwagę na taktowanie. Napisane jest:
Sebastian_Sl napisał(a):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Nawet przy takim taktowaniu i tak skonfigurowanym timerze, częstotliwość PWM wyniesie 8000000/(8*256*256) = około 15Hz, a powinno być przynajmniej kilkadziesiąt. Biorąc jednak pod uwagę, że w tym mikrokontrolerze preskaler zegara systemowego jest domyślnie ustawiony w rejestrze CLKPSR na wartość 8, a w programie nigdzie nie widzę, żeby to było zmienione, więc faktyczne taktowanie będzie równe 1MHz, co daje częstotliwość PWM poniżej 2Hz.
Dodatkowo, jeśli F_CPU jest ustawione we właściwościach projektu na 8MHz, a faktycznie mikrokontroler jest taktowany 1MHz, to czasy odliczane przez funkcje _delay będą też raczej mało dokładne, pomijając fakt, że i tak są niedokładne, kiedy w programie jest obsługa przerwań.

Moim zdaniem najlepiej jest skonfigurować timer do sprzętowego generowania PWM przy użyciu któregoś z wielu dostępnych trybów, co przy okazji usunie potrzebę obsługi przerwania. Tak prosty program powinien wtedy poprawnie działać nawet z _delay, choć oczywiście zawsze lepiej użyć timerów do generowania opóźnień.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2020, o 10:17 
Offline
Moderator
Avatar użytkownika

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

Dokładnie to może powodować zwykłe miganie diod pomiędzy szpilkami PWM ... krótko mówiąc masakra ;) ... Jak już to warto dać jakiś kwarc nawet 16MHz albo i 20 MHz

_________________
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: 7 kwi 2020, o 11:39 
Offline
Nowy

Dołączył(a): 14 mar 2020
Posty: 18
Pomógł: 0

Zgodnie z Waszymi wskazówkami staram się wprowadzić poprawki do mojego kodu. Niestety nie jestem w stanie prawidłowo zrozumieć tego zagadnienia. Jeśli ktoś z Was mógłby pokazać mi jak powinien wyglądać prawidłowo napisany kod byłbym ogromnie wdzięczny.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 kwi 2020, o 19:32 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

Jeśli chcesz napisać prawidłowy kod, musisz dobrze zrozumieć działanie timerów.
Poczytaj najpierw jak najwięcej o timerach, spróbuj przeanalizować jak działa poniższy kod i wtedy ewentualnie zadaj pytanie. Nie będę tu opisywał timerów szczegółowo, bo to długi temat. Kodu nie mam jak sprawdzić w praktyce, ale powinien działać.
W opcjach projektu musisz ustawić F_CPU=8000000UL
Wyjście PWM jest na pinie PORTB1
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 kwi 2020, o 00:29 
Offline
Nowy

Dołączył(a): 14 mar 2020
Posty: 18
Pomógł: 0

Dzięki serdeczne za pomoc andrews. Po prostu nie wiedziałem, że muszę odblokować CLKPSR oraz źle zrozumiałem jak zastosować OCR0A, źle zastosowałem operator "|". Przeczytałem dwa razy rozdział w Mirka książce niebieskiej o Timerach i PWM ale jakoś nie załapałem. Po Twoim kodzie teraz rozumiem. Z dopisaniem pętli ściemniającej LED nie miałem żadnych kłopotów, wszystko działa jak należy, jeszcze raz Wielkie Dzięki!!!



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 kwi 2020, o 09:48 
Offline
Moderator
Avatar użytkownika

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

Sebastian_Sl napisał(a):
Po prostu nie wiedziałem, że muszę odblokować CLKPSR

Bo nie musisz - tzn możesz ale przecież to się robi w Fusebitach - masz tam Fusebit CKDIV8 czyli podział częstotliwości przez 8 bez sensu ... wystarczy go odptaszkować i zapisać ... wtedy nie trzeba tego programowo robić.

_________________
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: 8 kwi 2020, o 10:08 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

mirekk36 napisał(a):
...masz tam Fusebit CKDIV8 czyli podział częstotliwości przez 8 bez sensu ... wystarczy go odptaszkować i zapisać ... wtedy nie trzeba tego programowo robić.

W ATtiny102 jest CKDIV8?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 kwi 2020, o 10:30 
Offline
Moderator
Avatar użytkownika

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

andrews napisał(a):
mirekk36 napisał(a):
...masz tam Fusebit CKDIV8 czyli podział częstotliwości przez 8 bez sensu ... wystarczy go odptaszkować i zapisać ... wtedy nie trzeba tego programowo robić.

W ATtiny102 jest CKDIV8?

oooops no gapiostwo tak się kończy - przepraszam bo myślałem (nie wiem skąd) że mowa o m328p ;) ale już mi się chyba wszystko miesza. Dziękuję za uwagę !

_________________
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: 8 kwi 2020, o 11:10 
Offline
Nowy

Dołączył(a): 14 mar 2020
Posty: 18
Pomógł: 0

andrews napisał(a):
mirekk36 napisał(a):
...masz tam Fusebit CKDIV8 czyli podział częstotliwości przez 8 bez sensu ... wystarczy go odptaszkować i zapisać ... wtedy nie trzeba tego programowo robić.

W ATtiny102 jest CKDIV8?


Właśnie na tym poległem. W MkAVRCalculator nie pokazuje się CKDIV8. Nie ważne, teraz działa :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 kwi 2020, o 12:02 
Offline
Moderator
Avatar użytkownika

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

Sebastian_Sl napisał(a):
W MkAVRCalculator nie pokazuje się CKDIV8.

No tak bo jak miałoby się pokazać skoro ten procek nie ma tego Fusebita ;)

_________________
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  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 

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