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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 8 kwi 2025, o 22:56


    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 ] [ Zaznacz wszystko ]
    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: 27369
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27369
    Lokalizacja: Szczecin
    Pomógł: 1043

    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: 27369
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 ] [ Zaznacz wszystko ]
    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: 27369
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 ] [ Zaznacz wszystko ]
    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: 27369
    Lokalizacja: Szczecin
    Pomógł: 1043

    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 2 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