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



Teraz jest 28 gru 2024, o 07:23


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 21 sie 2012, o 19:13 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2012
Posty: 243
Lokalizacja: wlkp
Pomógł: 2

Dlaczego funkcje led1_on i led1_off nie widzą rejestru OCR0 ?
Co mam zrobić żeby jego wartość działa w tych funkcjach?

Jest to funkcja superdebounce z książki 1. Dlatego usunąłem istotne, niezmienione fragmenty, bo raptem to kilkanaście linii, ale z oczywistych powodów kodu nie pokazuję.

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: 21 sie 2012, o 19:21 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Źle wpisujesz do rejestrów TCCR0 i TCCR2 używaj |= bo kolejnym wpisem wyzerujesz dopiero co ustawione bity.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2012, o 19:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2012
Posty: 243
Lokalizacja: wlkp
Pomógł: 2

Fakt zabrakło, u Mirka na DVD również, ale i tak działała funkcja na LED_ON/OFF. :)
Poprawiłem, ale to nic nie dało - nadal rejestru funkcja nie widzi.
Inne pomysły jak zaradzić? Coś mi się wydaję, że trzeba by było wskaźnikiem do OCR0 uderzyć? Tylko jak to zrobić?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2012, o 19:32 
Offline
Moderator
Avatar użytkownika

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

Wrangler napisał(a):
Fakt zabrakło, u Mirka na DVD również,


Tak zabrakło ale tylko w tym jednym przykładzie, bo w lekcji 19_ProjektWielozadaniowy już jest poprawnie. Poza tym na stronie ATNEL'a jest o tym mowa:

http://atnel.pl/uaktualnienia-programow-do-dvd.html

zresztą na niej jest odnośnik do naszego forum, na którym także o tym mówię:

post6106.html#p6106

i nie wspomnę że przez pół książki ;) odkąd opisałem podwójny operator |= przypominam aby pamiętać o tym (a jednak mi też się ręka omsknęła. Zauważył to jednak jeden z czytelników i napisał mi maila na ten temat - dlatego od razu zareagowałem)

Wieczorkiem spróbuję popatrzeć co tam jeszcze może się u ciebie dziać dalej.

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

ale nie już patrzę - nie napisałeś jaki masz procek - atmega32? czy inny ???? to dość ważne panie kochany ;) bo w innym może być OCR0A a nie OCR0

to po pierwsze - a po drugie żadnym wskaźnikiem i po trzecie nie do końca jestem pewien co znaczy wg ciebie że jakieś funkcje nie widzą OCR0 - dlatego nie wiem czy dobrze podpowiadam.

Postaraj się bardziej precyzyjnie opisać problem OK ?

_________________
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: 21 sie 2012, o 19:38 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2012
Posty: 243
Lokalizacja: wlkp
Pomógł: 2

mirekk36 napisał(a):
Tak zabrakło ale tylko w tym jednym przykładzie, bo w lekcji 19_ProjektWielozadaniowy już jest poprawnie. Poza tym na stronie ATNEL'a jest o tym mowa:

http://atnel.pl/uaktualnienia-programow-do-dvd.html


Nieuważnie przeglądam stronę i forum, sorry trochę wstyd, tym bardziej, że świeżakiem już tutaj nie jestem.. :(

Ok dzięki, to czekam. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2012, o 19:40 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Jak już ustawisz timer w tryb PWM to tracisz kontrolę na pinem OC0. 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.

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2012, o 19:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2012
Posty: 243
Lokalizacja: wlkp
Pomógł: 2

Ok już odpowiadam:
- procek mega32 --> rejestr OK,
- funkcje odpowiadają kolejno za: led1_on [instrukcje wykonywane przy krótkim naciśnięciu przycisku KL1], led1_off [instrukcje wykonywane przy długim naciśnięciu przycisku KL1].
- chcę wykorzystać timer0 do trybu FAST PWM, no a tutaj niezbędny jest rejestr OCR0 i jego wartości,
- ustawiłem rejestr OCR0 na wartość najbardziej optymalną tzn. bez znaczenia czy wybrałem clear czy set at top - zawszę musi świecić z wypełnieniem 50%,
- wrażenie jest takie, że w tych funkcjach rejestr OCR0 jakby nie działał, bo dioda nie świeci.

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

Krauser napisał(a):
Jak już ustawisz timer w tryb PWM to tracisz kontrolę na pinem OC0. 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.


Ja to rozumiem :) , ale to, że do tej funkcji wprowadzę zamiast instrukcji OFF, po prostu OCR0=0, to nie zmienia faktu, że dioda powinna świecić przy funkcji led1_on jak wpisałem w kodzie w 1 poście
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
.

Sprzętowy PWM jest dla mnie jasny w razie W. :)
Dzięki za chęci i próbujmy dalej :)

------------------------ [ Dodano po: 16 minutach ]

desperacki pomysł zainicjalizowania timera0 w funkcji led1_on - efekt: oznaki życia pojawiły się, ale bardzo niestabilne..... ale PWM na pinie OC0 zaczął się pojawiać, niestabilnie, bo raz tak a raz nie, ale coś już jest - wniosek nie wiem czy trafny, ale tak jak na początku wspomniałem, funkcje nie widzą z jakichś przyczyn wartości tego rejestru OCR0.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2012, o 21:18 
Offline
Moderator
Avatar użytkownika

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

Niestety sprzętowy PWM na razie nie jest jasny dla Ciebie i już widzę co źle robisz .... Ale zanim powiem, postaraj się sam sobie odpowiedzieć

1. czy robiłeś wcześniej ćwiczenie z płynnym ściemnianiem i rozjaśnianiem diody LED za pomocą PWM ???

2. jeśli tak? to czy zwróciłeś uwagę na zjawisko NIELINIOWOŚCI w zależności prąd/jasność (czyli wartość PWM/jasność) ???? (a pisałem też o tym w książce). I nawet w przykładach robiłem dziwne zabiegi ze zmianą kroków dla niskich wartości PWM żeby tak na oko uzyskać bardziej płynne ściemnianie/rozjaśnianie w zakresie słabego świecenia diody czyli w zakresie powiedzmy do 20-30% wypełnienia PWM.....

w ogóle o tym zapomniałeś panie kochany bo wymyśliłeś sobie teraz że dasz OCR=125 i co ? ma się świecić wg ciebie jaśniej? ciemniej? czy co ? ;)

nie wspomnę już że próba wygaszania diody LED twoim makrem LED1_OFF to totalnie nieporozumienie jak pisał Krauser, ale wyjaśnię Ci dlaczego (pisał też Krauser) ..... otóż ustawienie bitów COMxx powoduje że pin PB3 !!! przestaje działać jako zwykły port WE/WY ;) ..... i nie ustawisz na nim stanu wysokiego lub niskiego takimi makrami - bo kontrolę przejął PWM sprzętowy rozumiesz ???? czyli teraz wygaszenie diody LED można zrobić na dwa sposoby:

1. albo dać 0% wypełnienia PWM - poprzez rejestr OCR0, np: OCR0=0; albo OCR0=255; w zależności jak ustawisz bity COMxx

2. albo zerować obydwa bity COMxx i wtedy zadziała ci dopiero twoje makro LED1_OFF - rozumiesz ???? (z tym że lepszy jest w tym przypadku ten sposób wyżej nr.1)

Tymczasem wracając do początku - ty dałeś sobie do OCR wartość = 125 i oczekujesz że np dioda LED będzie ci świeciła ciemniej albo jaśniej :( - ZONK ZONK ZONK ......

na początek sprawdź to sobie tak:

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


i sprawdź Pan że to ładnie działa - czyli będzie ci gasić i zapalać diodę

a teraz jak chcesz mieć zamiast zapaloną pełnym światłem to tylko lekko rozjaśnioną to daj zamiast 255 wartość = 250, albo wartość = 10 (w zależności od bitów COMxx i podłączenia diody LED)

i nic tu nie dzieje się tak jak próbujesz zgadywać ;) .... że jakieś tam oznaki , że coś ale niestabilnie itp ;) PWM nie działa niestabilnie. ALBO DZIAŁA albo NIE DZIAŁA ;)

oczywiście nie zpomnij poprawić tego fragmentu programu:

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


podpowiem że właśnie odpalam ten przykład na zestawie ATB i ładnie działa - więc u ciebie też musi a jeśli nie to coś źle podłączasz niestety sprzętowo :(

_________________
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: 22 sie 2012, o 18:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2012
Posty: 243
Lokalizacja: wlkp
Pomógł: 2

Dzięki za wszystkie dotychczasowe uwagi i podpowiedzi.
Na początku powiem, że PWM diody LED reaguje nawet przy OCR0=10 i mniej (tzn widać, że dioda świeci z "małym" wypełnieniem, wraz ze wzrostem rejestru OCR0, dioda świeci jaśniej). Dla OCR0=125 można przyjąć z dużym przybliżeniem, że wypełnienie sięga te ok 50%.
Korzystam z ECLIPSE, i po każdej edycji kodu klikam "biuild", a następnie ładuję program ikonką "zielone AVR ze strzałką".
Problem jest taki, że muszę wgrywać program czasem po kilka razy, żeby procesor poprawnie działał zgodnie z założeniami programu. O co chodzi?
Przykładowa sytuacja :
- funkcja led1_on - OCR0=255;
- funkcja led1_off - OCR0=0;

1. wgranie - LED w ogóle nie świeci, nie reaguje na przyciski
2. wgranie - LED świeci (szpilki glitch), nie reaguje na przyciski
3. wgranie - LED świeci z pełnym wypełnieniem, nie reaguje na przyciski
4. wgranie - program działa, LED reaguje na przyciski.

Dlaczego tak mi się to "papra"?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 18:35 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Masz zaznaczona opcję: Save automatically before build w Window -> Preferences ->General->Workspace
A nie masz błędów przy programowaniu?

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 18:41 
Offline
Moderator
Avatar użytkownika

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

Krauser napisał(a):
Masz zaznaczona opcję: Save automatically before build w Window -> Preferences ->General->Workspace
A nie masz błędów przy programowaniu?


To są BARDZO DOBRE pytania ;)

_________________
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: 22 sie 2012, o 18:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2012
Posty: 243
Lokalizacja: wlkp
Pomógł: 2

tak, mam tą opcję zaznaczoną, w ogóle teraz mi wariuje ten program chodzi to beznadziejnie. :(
np czasem dioda miga bez przerwy, wystarczy odcięcie zasilania i na nowo podłączenie, to program nie chodzi,
chodzi np po 7 resecie, dioda raz zapali się cała, albo w ogóle nie świeci, siedzę już pół dnia i nic, wczoraj po poście Mirka też próbowałem i nic, ale nie pisałem, bo mówię może jutro się uda.., ale już się poddałem i na forum po pomoc..
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Reszty nie wklejałem, bo niezmieniane no i to czysty kod z książki jak wspominałem na początku wczoraj..



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 18:52 
Offline
Moderator
Avatar użytkownika

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

A na czym ty to testujesz ???? bo z twojego opisu i załamywania rąk na niestabilnością programu ;) wynika że to jakiś KOSMICZNY PAJĄK, który się rusza i rozłącza co chwilę co drugie połączenie ;)

Ja już ci pisałem że odpaliłem ten twój kod po drobnych (pokazałem jakich modyfikacjach) i działa jak należy - więc może zamiast zastanawiać się nad rzekomymi niestabilnościami programu (zbyt on prosty żeby był niestabilny) ;) ..... zastanów się nad stroną sprzętową.

Pokaż może fotkę coś tam zmajstrował ? hmmmm ? ;)

_________________
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: 22 sie 2012, o 19:04 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2012
Posty: 243
Lokalizacja: wlkp
Pomógł: 2

nie ma pająka zrobiłem fotkę, ale ok zmienię jeszcze zaraz płytkę stykową na zupełnie nową i napiszę jak się mają sprawy.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 sie 2012, o 21:00 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2012
Posty: 243
Lokalizacja: wlkp
Pomógł: 2

Wszystkie połączenia prawidłowe, przejścia gdzie powinny - były. N
Co było przyczyną?
Nieodpowiednia stabilizacja napięcia pobieranego bezpośrednio z programatora.........
Do prototypów na niskim napięciu (~5V) jeszcze z czymś takim się nie spotkałem w ciągu tych kilku miesięcy zabawy z uP (zawsze działało)..Brakuje doświadczenia, brak nawyków i nie tam się szuka, gdzie powinno.
Wielkie dzięki, że jednak twardo stanąłeś przy tych połączeniach, mimo że były ok, to pewnie jeszcze z 1 dzień bym stracił zanim bym doszedł z tym napięciem.. Gdybym wszystkiego dogłębnie z miernikiem nie sprawdzał nie ma szans, żeby to dzisiaj ruszyło.
W końcu działa zgodnie z założeniami..
...a włosów z głowy straciłem naprawdę sporo... :)
dziękuję również koledze Krauser za zainteresowanie tematem i pomoc.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2012, o 18:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2012
Posty: 243
Lokalizacja: wlkp
Pomógł: 2

Kolejny dzień zmagań.. :)

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


Coś nie mogę wyłączyć PWM'a (chodzi mi o te szpilki gltich), gdy OCR0=0;
Wprowadzałem instrukcję z wyłączeniem timera0 poprzez bity ustawiające preskaler.
Co robię źle?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 sie 2012, o 19:38 
Offline
Moderator
Avatar użytkownika

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

A pisałem o tym w książce .... doczytać nie łaska ? ;) ... ale przypomnę - weź że sobie podłącz diodę LED odwrotnie i szpilki przestaną powodować kłopot bo nie będą występować przy maksymalnym ściemnieniu tylko maksymalnym rozjaśnieniu czego oko już nie zobaczy.

Albo zmień sobie ustawienia bitów COMxx czyli odwróć fazę i na to samo wyjdzie chociaż wtedy max ściemnienie to będzie 255 a max rozjaśnienie to 0

jak widzisz sposobów jest kilka

_________________
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: 23 sie 2012, o 20:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 lut 2012
Posty: 243
Lokalizacja: wlkp
Pomógł: 2

Znalazłem też właśnie o tym na naszym forum przez wyszukiwarkę, bo już też kiedyś ktoś o to pytał i tam, o tym rozwiązaniu wspominałeś. Sorry i dzięki. :)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


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