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? 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 9 cze 2025, o 00:41


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 25 ] 
    Autor Wiadomość
    PostNapisane: 23 lip 2012, o 20:51 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Witam
    Abym potem nie "błądził " zapytam...
    ...czy można zmieniać wartości w OCRO podczas działania programu? Czy OCRO jest inicjowany tylko na etapie kompilacji?
    Z góry dzięki



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 lip 2012, o 20:54 
    Offline
    Moderator
    Avatar użytkownika

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

    rejestry porównania OCRx są po to aby z nich korzystać w programie, nie byłoby wręcz sensu ustalać ich wartości tylko na etapie kompilacji.

    _________________
    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 lip 2012, o 21:00 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Też tak myślę..
    dzięki ;)
    Jeszcze jedno małe pytanie odnośnie biblioteki LCD z twojej książki. Czy można skonfigurować wejścia danych oraz wejścia sterujące na jednym porcie -np PORTB bez "kolizji" (oczywiście po ich ustawieniu w programie)? Bo wg mnie użycie dwóch portów np w attinach2313 to marnotrawienie...



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 lip 2012, o 21:07 
    Offline
    Użytkownik
    Avatar użytkownika

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

    Przecież biblioteki Mirka są tak zrobione, że możesz używać dowolnych pinów do sterowania LCD-ka. I nic nie stoi na przeszkodzie aby były to piny Portu B.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 lip 2012, o 21:21 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    jacekk232 napisał(a):
    używać dowolnych pinów do sterowania LCD-ka..

    zgadzam się ale chciałem się upewnić co do tego szczegółu. bo domyślnie napisane były dla dwóch różnych portów i to trochę dawało do myślenia-problem maskowanie itd - dopiero analizuję kod i trochę przerabiam.
    Wg mnie w większym projekcie najlepiej używać jednego portu dla LCD - dla ergonomii i czytelności kodu.
    Ale biblioteka pomyślana ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 lip 2012, o 22:00 
    Offline
    Moderator
    Avatar użytkownika

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

    20rafalo napisał(a):
    bo domyślnie napisane były dla dwóch różnych portów


    Tu kolega opowiada NIESTWORZONE historie i jakąś własną interpretację tego "co poeta miał na myśli". Ale to nie jest żadna powieść ;)

    Domyślnie biblioteka została napisana bardzo uniwersalnie co pozwala, jak napisał kolega wyżej, podłączenie LCD na "DOWOLNYCH PINACH PROCKA". I to jest dopiero ogromna zaleta w porównaniu do wielu innych bibliotek a szczególnie tych, które umożliwiają dokonanie tego TYLKO na jednym porcie.

    20rafalo napisał(a):

    Wg mnie w większym projekcie najlepiej używać jednego portu dla LCD - dla ergonomii i czytelności kodu.


    Dlatego tu nie chodziło o to jak jest wg ciebie akurat, ale o możliwości dla każdego i dla każdej sytuacji.

    Ja najczęściej - co widać zresztą po praktycznie każdym przykładzie na DVD w książce stosuję przecież podłączenie LCD na jednym porcie. Nie zauważyłeś tego ? dziwne ;)

    Natomiast czasem bywa taka potrzeba, mówiąc np o małym procku jak ATtiny aby była możliwość podpięcia się pod piny różnych portów z uwagi na potrzebę wykorzystania niektórych sygnałów jak np przerwania zewn INT0, czy wyjścia PWM itp ... a przecież jeśli się nie używa zewn kwarca to są do dyspozycji dwa nie wykorzystane piny PORTA .... więc aż się prosi mieć taką uniwersalną bibliotekę na każdą okazję.

    Ja tak chciałem kiedyś a nie tam korzystać z cudzych na siłę przywiązujących mnie do jednego portu.

    Mam nadzieję, że teraz masz większą jasność co do powstania i narodzin tej biblioteki ;)

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

    Dołączył(a): 06 maja 2012
    Posty: 758
    Pomógł: 9

    Wystarczy przecież kilka zmian w pliku nagłówkowym lcd44780.h i można podpiąć LCD do takich pinów jakie zapragniesz. Biblioteka jest świetna, brakuje mi tylko w niej funkcji do wypisywania wartości floata na LCD. Ale floaty to zło. :D

    _________________
    ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 23 lip 2012, o 22:59 
    Offline
    Moderator
    Avatar użytkownika

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

    Ledes napisał(a):
    ...., brakuje mi tylko w niej funkcji do wypisywania wartości floata na LCD. Ale floaty to zło. :D


    O nie nie ;) co to to nie ;) .... to tak samo jak kilka osób pisało że przydałaby się w tej bibliotece np funkcja do wyświetlania dużych liczb całkowitych i nieujemnych, bo obecna wersja pokazuje tylko liczby od -32768 do +32767 ;)

    A kysz ;) powiadam - pozostałe takie proste funkcje to już proszę we własnym zakresie sobie napisać ;) toż wyświetlanie większych liczb nieujemnych to tylko zamiana funckji itoa() na np ltoa() albo utoa() .... a na podobnej zasadzie można sobie dopisać funkcję do liczb HEX nie wspominając o float ;) ....

    Jeszcze raz powtórzę - to co w pierwszej książce to nie gotowe i zoptymalizowane pod każdym względem biblioteki a tylko materiał dydaktyczny. Chociaż niechcący akurat do LCD wyszła prawie gotowa biblioteka ;)

    _________________
    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: 24 lip 2012, o 09:47 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    mirekk36 napisał(a):
    Chociaż niechcący akurat do LCD wyszła prawie gotowa biblioteka ;)

    he... i w związku z tym analiza kodu zajmuje więcej czasu, gdyż ie wszystko jest wyjaśnione ;P



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 lip 2012, o 14:50 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    No ale wrócę do tematu...
    Nie mogę zmienić wartości OCROA za pomocą zmiennej a; Załączam kod, zawiera się w kilku plikach. Błędów nie zgłasza. Przerwanie działa w praktyce,

    ISR(INT0_vect)
    {
    _delay_ms(100);
    freq=30;
    }

    ale nie dokonuje zmiany częstotliwości za pomocą "freq" w pliku "butt2.c". Dodam, że w "main.c" jest linia "freq=8;" która działa poprawnie- tylko, że jest inicjalizowana podczas kompilacji..


    Kod sklada się z kilku plików:

    Kod:
    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.


    po raz kolejny zwrócę uwagę, że dłuższe kody umieszczamy w znacznikach [ syntax = c ] a nie [ code ] - mirekk36



    Ostatnio edytowano 24 lip 2012, o 16:10 przez 20rafalo, łącznie edytowano 4 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 lip 2012, o 15:06 
    Offline
    Moderator
    Avatar użytkownika

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

    Zanim cokolwiek jednak dalej przeanalizuję to powiem tak:

    w procedurze obsługi przerwania dałeś _delay_ms ??????????????

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

    _________________
    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: 24 lip 2012, o 16:05 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    w led.c jeszcze jest(edytowałem):
    Kod:
    static uint16_t licznik=0;
    licznik++;            

       if((licznik<(12*freq+1))&(licznik>(2*freq)))//12-1=10sek
       {
          PORTB ^= (R|G|B);   

       }
    //...........
    //...........
    licznik =0;



    mirekk36 napisał(a):
    w procedurze obsługi przerwania dałeś _delay_ms ??????????????

    jak najbardziej ;>
    I się tym nie przerażam jak Ty, z jednego prostego powodu: jak na razie tylko taki sposób znam na uniknięcie efektu drgań przycisku. Jeszcze nie znalazłem innego sposobu u Ciebie w książce ;P Powinienem dać drugie _delay_ms, żeby było w pełni zabezpieczone, ale odpuściłem z uwagi na przerwanie. Poznam inny sposób to przestanę używać tego nieszczęsnego "delay" w przerwaniach, bo tak się nie powinno...
    Ale wszystko w swoim czasie, na razie mam problem w/w ;P



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 lip 2012, o 16:15 
    Offline
    Moderator
    Avatar użytkownika

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

    20rafalo napisał(a):
    I się tym nie przerażam jak Ty, z jednego prostego powodu: jak na razie tylko taki sposób znam na uniknięcie efektu drgan przycisku. Powinienem dać drugie _delay_ms, żeby było w pełni zabezpieczone, ale odpuściłem z uwagi na przerwanie. Poznam inny sposób to przestanę używać tego nieszczęsnego "delay" w przerwaniach, bo tak się nie powinno...
    Ale wszystko w swoim czasie, na razie mam problem w/w ;P


    To ja proponuję zacząć od tego innego sposobu. Z tego co mi wiadomo (ale może się mylę, popraw mnie ok? proszę) ... to masz moją pierwszą książkę. Jeśli więc, masz ją i tak chcesz pisać programy to przecież to twoja sprawa. Ja jednak nie umiem pomóc - bo jak ? Skoro wg mnie to jest podstawowym problemem. To co? mam cię teraz przekonywać ???? Ależ nie .... skądże.

    No nie umiem pomóc bo musiałbym zaczynać od wytłumaczenia dlaczego nie stosuje się takich i to jeszcze tak długich delayów w przerwaniach ;) .... a ty twierdzisz że mamy zostawić ten temat. No to ja wymiękam niestety :( przykro mi...

    Chyba że nie masz mojej pierwszej książki, to wtedy bym mógł zrozumieć takie błędne podejście. W przeciwnym wypadku znaczy, że śpieszy ci się za bardzo i albo nie miałeś ochoty jej poczytać albo nie miałeś czasu.

    _________________
    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: 24 lip 2012, o 17:53 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    mirekk36 napisał(a):
    .... a ty twierdzisz że mamy zostawić ten temat. No to ja wymiękam niestety :( przykro mi...

    Rozumiem, nie zawsze jest się w stanie pomóc ;)
    Mam Twoją książkę - jestem gdzieś po środku i jak na razie podpowiedzi nie znalazłem....
    A w miarę postępów robię fizyczne układy -nie czytam książek "na sucho". A jak wiesz zaprojektowanie układu trochę zajmuje- to nie tylko napisanie programu..

    Nie twierdzę, że mamy zostawić ten temat- mówię, że wszystkiego na raz nie rozwiążę. Kolejność miała być taka- najpierw poradziło by się ze zmienna "freq", następnie można coś zrobić z "delay" bo i tak chcę to umieć zrobić bez 'delay'.
    PS "delay" nie jest tu winnym za złe działanie- bez delay też było sprawdzane i nic.
    Pzdr



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 lip 2012, o 18:40 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 maja 2012
    Posty: 758
    Pomógł: 9

    Jak w przerwaniu dasz duży delay to spowalniasz mocno główny program. Tak samo, jak dasz w procedurze obsługi przerwania dużo instrukcji, a przerwanie wykonuje się często.

    _________________
    ATB 1.03, Win XP SP3, ECLIPSE Indigo 3.7.2



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 24 lip 2012, o 22:41 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    to przerwanie jest aktywowane raz przy włączaniu uC i tyle.

    Chyba muszę szybciej czytać te książki ;P
    A jeszcze czeka mnie druga część - do końca miesiąca aktywny kod ;P



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 lip 2012, o 20:23 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Hmmmmm , http://www.elektroda.pl/rtvforum/topic2344673.html



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 lip 2012, o 21:51 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Malutki_27 napisał(a):
    Hmmmmm ,

    czemu hmmmm.. ;)
    Niczym złym jest założyć ten sam temat na innym forum, tym bardziej, że tutaj jak na razie problem nie został rozwiązany. A tego nie mogę wymagać ;P
    Na elektrodzie coś w tym temacie się dzieje ;P
    pzdr



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 26 lip 2012, o 23:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Ponieważ, "nie słuchasz" oferowanej ci pomocy :P
    A wbrew pozorom dostajesz więcej niż oczekujesz ale małymi kroczkami ;)
    kol.Mirek napisał ci co powinieneś zrobić na początek, gdybyś się zastosował, dowiedział byś się że w przerwaniu z timera masz dwa kolejne błędy :-P



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lip 2012, o 00:48 
    Offline
    Moderator
    Avatar użytkownika

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

    Ale nawet na elektrodzie podpowiadają wszyscy że tak się nie robi i od tego trzeba zacząć w ogóle. Nic z tego ;) kolega autor lepiej wie i się twardo broni. Obserwuję tamten wątek i jestem pełen "podziwu" dla takiego podejścia. Jak by mi 100 osób podpowiadało, że coś źle robię, to przynajmniej zacząłbym o tym myśleć .... a kolega wybija to wszystkim dookoła z głowy ;) dlatego mi pozostaje się tylko patrzeć. Zresztą inni chyba też przyjęli podobne podejście - bo ciężko tak dyskutować :(

    _________________
    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: 27 lip 2012, o 13:29 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    mirekk36 napisał(a):
    ...tak się nie robi i od tego trzeba zacząć w ogóle. Nic z tego ;)

    Mirku jak czytasz temat to wyraźnie napisałem, że usunąłem _delay_ms z przerwania, ale i tak nic to nie pomogło. Dlatego też nie ma co wmawiać, że się nie stosuję do podpowiedzi.. ;P
    Jak na razie to nie to... ;P
    Na elektrodzie zaznaczyli tylko, że delay_ms nie powinno być w tym miejscu. Jednak nie jest to błędem, który by nie pozwalał na zadziałanie zmiennej "freq" - sprawdzałem w praktyce ;P
    PS czytam cały czas książkę i jest na "PLUS" ;) ale jak na razie nie znalazłem w niej podpowiedzi..



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lip 2012, o 13:37 
    Offline
    Moderator
    Avatar użytkownika

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

    Więc jeśli chcesz iść tokiem rozumowania i pomocy jaką świadczymy na tym forum ;) to zastosuj się do kolejnych porad, jeśli więc poprawiłeś coś w kodzie to nie pisz nam , że to nie było to - bo ja na takiej podstawie (już mówiłem nie będę dalej podpowiadał) .... tylko wklej swój nowy poprawiony kod

    wtedy popatrzymy - a jak widzisz jest tu sporo par oczu, które potrafią wypatrzyć błędy i pomóc - więc pójdziemy dalej.

    To jest dobra droga a nie zapieranie się przy swoim 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: 27 lip 2012, o 16:41 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    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.


    Wow-już.
    Jest kilka zmiennych nie używanych - proszę je ignorować- jednak w końcowym projekcie mają znaczenie ;P



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 27 lip 2012, o 22:50 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 14 lut 2012
    Posty: 598
    Lokalizacja: Warszawa
    Pomógł: 13

    Ok. , no to teraz taka mala aluzja ..... podpowiedz,a w którym miejscu przpisujesz wartość zmiennej freq do rejestru OCRx ?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 28 lip 2012, o 10:36 
    Offline
    Użytkownik

    Dołączył(a): 08 sty 2012
    Posty: 151
    Pomógł: 0

    Czyli trzeba po prostu tak:
    Kod:
    ISR(INT0_vect)
       {

          //OCR0A=22; taka opcja działa, ale chcę zmieniać częstotliwość za pomocą 'freq'!
             freq=12;
                             a = 434/freq;
             OCR0A = a;
             
       }

    Prościej i szybciej sie chyba nie da.....



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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