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



Teraz jest 27 lut 2025, o 12:51


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 37 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 11 lut 2014, o 18:53 
Offline
Użytkownik
Avatar użytkownika

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

Witam piszę sobie 1 programik na ATB i aktualnie mam małą zagwozdkę gdyż wykorzystuję już kilka timerów a potrzebne mi jeszcze sterowanie PWM dla podświetlenia LCD

mianowicie używam już:

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


Więc pozostaje mi wolny Timer 1 lub Timer 0 jako że w nocie wyczytałem:

Timer/Counter0 and Timer/Counter1 Prescalers: Timer/Counter1 and Timer/Counter0 share the same prescaler module, but the Timer/Counters can have different prescaler settings. The description below applies to both Timer/Counter1 and Timer/Counter0.

Oznacza to mniej więcej to że T0 i T1 mają ten sam moduł prescalera ale jego ustawienia mogą być różne.

Timer 1 jest na pewno 16 bitowy, Timer 0 hmm nie wyczytałem nigdzie czy 8 czy 16 ale skoro mają ten sam moduł prescalera to wydaje mi się że T0 też będzie 16bit.

Próbuję ustawić tak:

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



Wywołuje te przerwanie 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.


czy mogę wiedzieć dlaczego widać migotanie wyświetlacza tzn jego podświetlenia LED ??
Może ktoś pomóc mi rozwiązać ten problem ??



PS przed int(main) mam

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

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lut 2014, o 19:05 
Offline
Użytkownik

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

majster napisał(a):
...Timer 1 jest na pewno 16 bitowy, Timer 0 hmm nie wyczytałem nigdzie czy 8 czy 16 ale skoro mają ten sam moduł prescalera to wydaje mi się że T0 też będzie 16bit.


Jeżeli dobrze czytam notę, to Timer0 = 8bit, Timer1 = 16bit, Timer2 = 8bit.

_________________
http://www.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lut 2014, o 19:06 
Offline
Użytkownik

Dołączył(a): 04 cze 2013
Posty: 33
Pomógł: 0

Do sterowania jasnością podświetlenia LCD lepiej będzie użyć trybu PWM, dodatkowo nie musisz pisać obsługi przerwania



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

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

No ok nie mogłem znaleźć informacji czy 8 bit czy 16 dlatego pisałem że nie wyczytałem czy 8 czy 16
A więc mi to odpowiada że Timer0 jest 8 bit

dlatego odwołuję się do TCCR1A aby używać timer 0
chyba że tutaj robie babola i dlatego jest dziwne zachowanie z tym ledem ?

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



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

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

Jeśli jest ci potrzebny tylko jeden PWM do podświetlania LCD to ustaw sobie Timer0 w tryb np. Fast Pwm.
Wtedy Pwm jest generowany czysto sprzętowo a zmiana wypełnienia jest regulowana poprzez wartość wpisywaną do rejestru OCR0.



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

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

mromano napisał(a):
Do sterowania jasnością podświetlenia LCD lepiej będzie użyć trybu PWM, dodatkowo nie musisz pisać obsługi przerwania


Ok zgodzę się z tobą lecz aktualnie jest to do sterowania LED LCD ale może i potrzeba będzie sterować jeszcze czymś poprzez PWM dlatego też programowy PWM jak najbardziej by mi odpowiadał

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lut 2014, o 19:10 
Offline
Użytkownik

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

majster napisał(a):
...dlatego odwołuję się do TCCR1A aby używać timer 0
chyba że tutaj robie babola i dlatego jest dziwne zachowanie z tym ledem ?

Timer0 to rejestr TCCR0. Rzuć okiem na 80-tą stronę w datasheet.

_________________
http://www.marcingibas.pl



Ostatnio edytowano 11 lut 2014, o 19:14 przez Marcin_G, łącznie edytowano 1 raz

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

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

Właśnie zobaczyłem w DS :) i chciałem pisać:

Czekaj czekaj ja chcę timer0 a kombinuję z timer1A

czyli wnioskuję z DS że AT32 ma 4 timery tak naprawdę ?

Timer0, Timer1A, Timer1B, Timer2

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



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

Dołączył(a): 04 cze 2013
Posty: 33
Pomógł: 0

Poniekąd tak, tylko że Timer1A i Timer1B są ze sobą powiązane



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

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

Tak wspomniałem o tym na początku że mają ten sam prescaler ale inne ustawienia.

Natomiast obecnie ustawiłem Timer0 tak:

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


zaraz nagram film jak dziwnie mruga gdy nie jest w pełni rozjaśniony.

------------------------ [ Dodano po: 5 minutach ]

Uploaduje film ... dla mnie wygląda to tak jakby

Stan wysoki na pinie i stan pwm = 0 (max jasno) nie ma konfliktu

Stan wysoki na pinie i stan np pwm = 150 (minimalnie więcej niż połowa wypełnienia) ma konflikt

tylko że nigdzie nie deklarowałem w pętli stanu wysokiego dla leda...

za moment zapodam video

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



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

Dołączył(a): 04 cze 2013
Posty: 33
Pomógł: 0

Wydaje mi się że problem leży w za niskiej częstotliwości programowego PWM. Nie wiem jaką masz częstotliwość taktowania, ale załóżmy do obliczeń że jest to 8Mhz. Preskaler x1, OCCR0=255, czyli przerwania wykonują się około 31 000 razy na sekundę. To trzeba jeszcze podzielić przez 255, ponieważ licznik_pwm zwiększa się do 255. Czyli 31000 przez 255 to 120. Czyli okres twojego przebiegu na wyjściu wynosi 120Hz, czyli można to praktycznie porównać z napięciem sieciowym, ale tam jest przebieg sinus, a tutaj prostąkąt, więc pewnie stąd te migania

------------------------ [ Dodano po: 2 minutach ]

W tym przypadku możesz ograniczyć wartość licznik_pwm i pwm1 np. do 100, powinno to zwiększyć szybkość zmian napięć jednocześnie powodując większą płynność



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

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

Taktowanie 11,0592 MHz ... zaraz zapodam film i zobaczysz o co chodzi z migotaniem ... na wideo wygląda jakby przeplatał się stan wysoki na pinie ze stanem pwm1

------------------------ [ Dodano po: 19 minutach ]

0 Start : pwm1=0;
1 upload: pwm1 = 50;
2 upload: pwm1 = 100;
3 upload: pwm1 = 150;
4 upload: pwm1 = 200;
5 upload: pwm1 = 250;
6 upload: pwm1 = 0;





Aktualnie zmieniłem
ORC0 = 2;

migotanie występuje ale jest minimalne ...
kurcze nie mogę pojąć dlaczego na Timer2 mi świetnie działało a na Timer0 nie za bardzo chce chodzić ?

próba była aby zamiast OCR0 ustawić TCNT0 = 225;

jest migotanie ale mniejsze niż przy Waveform czyli OCR0

Kurcze kończą mi się pomysły jak się pozbyć tego migotania

------------------------ [ Dodano po: 28 minutach ]

Nie wiem może zwiększyć taktowanie -> kwarc do 16MHz ?

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



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

Dołączył(a): 04 cze 2013
Posty: 33
Pomógł: 0

Utworzyłem nowy projekt, wgrałem program i u mnie śmiga, a kopiowałem twóje procedury-tj. ustawienia timera i obsługa przerwania

------------------------ [ Dodano po: kilkunastu sekundach ]

I wszystko śmiga, nie ma żadnych mrugnięć



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

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

a podłączone masz przez USB czy zasilacz ?

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



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

Dołączył(a): 04 cze 2013
Posty: 33
Pomógł: 0

Przez USB. Wrzuć cały program może coś tam sprawia że działa sterowanie podświetleniem działa nieprawidłowo



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

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

Hmm cały już jest za duży ale zrobiłem u siebie nowy projekt ... wgrałem same przerwanie i też mruga ...

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

Podłączyłem do LED na ATB by wykluczyć wadę wyświetlacza led też mruga a jak robiłem testy z książki to na ledach chodziło mi dobrze ... tam używałem timer2
a teraz za dużo zmian mam do wykonania by pozamieniać timery :/

dlatego uparłem się na ten timer0

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



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

Dołączył(a): 04 cze 2013
Posty: 33
Pomógł: 0

Wrzucę mój program chociaż nie wiem czy coś do da

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


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

Dodałem sobie tylko do biblioteki Mirka taką małą funkcję do obsługi podświetlenia



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

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

Skopiowałem twój program celowo by wyeliminować błędy i

od pozycji 70 zaczyna migotać aż do 255
Między 1 a 69 jest ok

kurna co jest ? hmm ? już sam nie wiem :/

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

no i literówkę poprawiłem dla estetyki

lcd_str("Podstielenie");

na

lcd_str("Podswietlenie");

zaraz zrobie film i zapodam

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



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

Dołączył(a): 04 cze 2013
Posty: 33
Pomógł: 0

U mnie wszystko śmiga. Może masz fuse bity źle ustawione, może przez przypadek na wewnętrzny oscylator przełączyłeś. Pin do którego podłączone jest połączenie raczej w tym przypadku nie ma takiego znaczenia, ewentualnie jakość połączenia



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

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

podmieniłem kwarc i na 16Mhz migotanie widoczne lecz już jest lepiej ... zaraz jeszcze podmienie atmege moze ona cos broi

fusy ustawione na zewn kwarc

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



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

Dołączył(a): 04 cze 2013
Posty: 33
Pomógł: 0

Pod którym pinem masz to podświetlenie?



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

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

PA7 podświetlenie LCD

cały port A mam pod LCD

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



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

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

No a to migotanie to jest widoczne jak odpalasz tylko obsługę tego podświetlenia LCD, czy też inne bloki programu są aktywne? Jeśli odpalasz cały program, a na filmie wygląda że tak, to spróbuj może uruchomić tylko tego PWM-a do wyświetlacza. Jeśli się okaże że jest OK, to po kolei załączaj kolejne bloki, i obserwuj kiedy zacznie świrować PWM.

_________________
http://www.marcingibas.pl



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

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

Nie widać reszty programu, ale może przy okazji zabawy z obsługą termometru albo komunikacji z zegarkiem nie bawisz się sei() i cli() albo jakieś delaye? Może warto najpierw zrobić samo podświetlenie+PWM a potem po kolei włączać pozostałe fragmenty programu. Może przez pomyłkę został fragment programu który modyfikuje stan wyjścia niezależnie od obsługi w przerwaniu?

------------------------ [ Dodano po: kilkunastu sekundach ]

I z kol. Marcin_G przyszło nam to równocześnie do głowy.

_________________
sig off ;(



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

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

proszę zobaczcie post 41 minut temu z softem mromano: Wrzucę mój program chociaż nie wiem czy coś do da

no i moja odpowiedz brzmiała

Skopiowałem twój program celowo by wyeliminować błędy i

od pozycji 70 zaczyna migotać aż do 255
Między 1 a 69 jest ok

kurna co jest ? hmm ? już sam nie wiem :/

------------------------ [ Dodano po: kilkunastu sekundach ]

Głowie się i glowie własnie podmieniam atmege

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



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

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

No widziałem, tylko nie zaskoczyłem że reszty swojego programu nie załączyłeś. Sorki :)

_________________
http://www.marcingibas.pl



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

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

Włożyłem inną Atmege32 i jest dokładnie tak samo :/ kurcze nie mam już pojęcia co jest nie tak

------------------------ [ Dodano po: 13 minutach ]

Aktualnie wgrywam film z PWM ... zaraz jak się zuploaduje to pokaże

za moment zobacze czy przy fast pwm tez tak jest

------------------------ [ Dodano po: 18 minutach ]

W trybie fast pwm jest dokładnie tak samo ... no nie wiem czego już mam się uczepić może jednak zasilania ?? tego z usb ?

------------------------ [ Dodano po: 21 minutach ]



------------------------ [ Dodano po: 22 minutach ]

Tutaj tak mocno tego nie widać bo za dużo światła dałem ale efekt jest ten sam co w poprzednim filmie

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



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

Dołączył(a): 04 cze 2013
Posty: 33
Pomógł: 0

Sam już nie wiem czym to może być spowodowane. Spróbuj może zasilić układ zewnętrzym zasilaczem zamiast USB albo zamień przewód. Nic innego nie przychodzi mi już na myśl



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

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

Właśnie to robiłem po raz pierwszy z zewnętrznego zasilacza ale jest dokładnie tak samo :/

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



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

Dołączył(a): 04 cze 2013
Posty: 33
Pomógł: 0

Spróbuj jeszcze zrobić taki test i zamiast podświetlenia wpiąć diodę LED



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: 37 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

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