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 13 lip 2025, o 05:13


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
    Autor Wiadomość
    PostNapisane: 12 mar 2014, o 21:42 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 10 lut 2014
    Posty: 42
    Pomógł: 1

    Witam


    Jak Powinno wyglądać uruchomienie timera w ATmega8A

    chodzi mi o to jak zastępować timerem

    _delay_ms();

    żeby migać diodą na porcie PC5
    i drugą z innym czasem na PD5

    i inne zastosowania


    Czy może mi ktoś w skrócie objaśnić co i jak czytam już drugi raz blue booka ale timera jeszcze nie potrafię stosować a dopiero teraz trenuje w praktyce na ATmega8A-PU



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 mar 2014, o 21:58 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Poczytaj o timerach programowych. Strona 406 BB.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 mar 2014, o 22:07 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 kwi 2013
    Posty: 257
    Lokalizacja: 3miasto
    Pomógł: 5

    Bedi napisał(a):
    Czy może mi ktoś w skrócie objaśnić co i jak czytam już drugi raz blue booka ale timera jeszcze nie potrafię stosować

    Otwórz BlueBook-a rozdział 5.4 Multipleksowanie led - przerwania to powinno rozjaśnić temat.

    _________________
    https://www.facebook.com/jacekplichtaphotography/



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 13 mar 2014, o 15:41 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 10 lut 2014
    Posty: 42
    Pomógł: 1

    Przeanalizowałem

    Blue Booka i kod z podobnego programu jaki znalazłem >> topic4366.html

    Jednak nadal nie zrozumiałem tych Timerów ślęczę i próbuję w oparciu o inne kody jednak nadal nic nie wychodzi

    Doszedłem za to jak zrobić przycisk NC proszę sprawdzić czy tak jest poprawnie


    Jeszcze jedno testuje wszystko na ATmega8A-PU czy na tym Procku w Timer0 nie ma trybu CTC czy nie zaważyłem w PDF

    wykorzystałem Timer2 czyli 8bitowy


    Głównym celem jest to aby regulować czas potencjometrem np od 30sek do 15min ale na początek muszę chociaż zrozumieć jak obchodzić się z tym Timerem


    Prosił bym o poprawienie kodu z stosownym komentarzem

    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: 13 mar 2014, o 16:04 
    Offline
    Moderator
    Avatar użytkownika

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

    Jeśli zależy ci na razie na prostej, nieskomplikowanej ale za to nieblokującej i dobrej metodzie obsługi klawiszy - to proponuję zaglądaj częściej na mojego bloga a w tym przypadku konkretnym polecam ci to:

    http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

    sprawdź proszę

    _________________
    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: 13 mar 2014, o 16:53 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 sty 2013
    Posty: 426
    Pomógł: 36

    Bedi napisał(a):
    OCR2 = 312;             // podział przez 312 rejestru porownaia   31250/312= około 100Hz a to odpowiada 10ms
     
            //przy OCR2= 312; pojawia sie żółty znaczek z informacją >> large integer implicitly truncated to unsigned type


    Jako, że timer jest 8 bitowy to taka też musi być wartość wpisana do rejestru porównania czyli 0-255.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 mar 2014, o 11:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 10 lut 2014
    Posty: 42
    Pomógł: 1

    P.Mirku przejrzałem podany link widziałem wcześniej cześć I nie spostrzegłem że już są następne pewnie dlatego że skupiłem się na czytaniu książki czytam już drugi raz, za pierwszym razem już po 230stronie chciałem programować ale stwierdziłem że za szybko się rzucam teraz zakupiłem trochę sprzętu parę mikro kontrolerów i coś tam skubie ale utknąłem na timerach może nie tyle jak je włączyć ale jak je później wykorzystać zamiast "_delay_ms()" .

    A w programie faktycznie zapomniałem o drganiu styków. Zaznaczam że nie będę korzystał z microswitch a zwykłych wyłączników 230v bistabilny (ON/OFF) i wydaje mi się żeby nie stosować _delay_ms() drgania rozwiąże sprzętowo. Co Pan o tym sądzi ?

    Testując Pana program z Części II O drganiu styków faktycznie działa ale nie na takich klawiszach bistabilnych jedynie na monostabilnych (typu dzwonkowego) lub po prostu microswitch i od razu pytanie czemu w programie nie było ustawienia PORTx gdzie podłączamy klawisz nie był ustawiany jako wejście ? Tylko od razu podciągany do VCC .


    Poprawiłem program >>>


    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: 14 mar 2014, o 12:10 
    Offline
    Moderator
    Avatar użytkownika

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

    Bedi napisał(a):
    czemu w programie nie było ustawienia PORTx gdzie podłączamy klawisz nie był ustawiany jako wejście ?


    A w książce piszę o tym wyraźnie ;) ... i w nocie PDF można zobaczyć - że wszystkie bity rejestrów DDRx są ustawione na ZERO po resecie - czyli co ? ... czyli wszystkie piny po resecie są i tak już wejściami dlatego nie trzeba jeszcze raz programowo tego ustawiać bo po co ? ;)

    wystarczy już tylko podciągnąć do VCC ;)

    _________________
    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: 14 mar 2014, o 12:19 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 10 lut 2014
    Posty: 42
    Pomógł: 1

    Zapamiętałem że w kodzie było użyte na189str a nie pamiętałem że na 190str jest adnotacja że użył Pan tylko po to by było przejrzyściej.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 mar 2014, o 12:43 
    Offline
    Użytkownik

    Dołączył(a): 13 mar 2014
    Posty: 37
    Pomógł: 0

    Cytuj:
    Jak Powinno wyglądać uruchomienie timera w ATmega8A?


    Może przedstawię to na kodzie którego sam używam.

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


    1/ Do tego momentu masz wszystko dobrze.
    2/ Hmm dlaczego w tej linijce w nawiasach wpisałeś "OCIE1A"? Jak on nawet nie należy do timera 8 bitowego tylko 16 bitowego.
    Może nie uważnie czytałeś książkę, tego nie wiem. Ale otwórz ją na stronie 199, ostatni akapit, drugie zdanie. Jest tam jasno napisane:
    "Zauważ, że część bitów przedstawiona jest na szaro. Oznacza to, że te bity nie dotyczą Timer0 (u nas to Timer2), który właśnie jest opisywany. Mamy zatem do dyspozycji tylko dwa bity - OCIE0 (u nas to OCIE2) oraz...".

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

    To ten fragment odpowiada za tak "fajne" działanie przerwań. ;)
    1/ Zmienna pomocnicza na której są wykonywane obliczenia
    2/ Jeżeli gdzieś w programie (ale o tym później) przypiszesz tej zmiennej (Timer1) jakąś wartość to jest także oddawana zmiennej n.
    3/ I tutaj jest warunek. Jeżeli zmienna n jest różna od zera wykonuje się działanie --n, czyli odejmowane jest 1 od zmiennej n i następnie przypisanie do Timer1.

    A teraz kod który u Ciebie mógłby zmieniać stan diody LED na przeciwny co określony czas.
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    1/ Tutaj sprawdzany jest warunek czy zmienna Timer1 jest równa 0, jeżeli tak to wykonają się następujące rzeczy.
    LED_TOG; - dioda zmieni stan na przeciwny i
    Timer1 = x; - do zmiennej Timer1 zostanie przypisana dowolna wartość (w miejsce x) wpisana przez Ciebie.

    I później za każdym obiegiem programu jest sprawdzana ta wartość czy już osiągnęła 0, jeśli nie, nic się nie dzieje.

    Aa i jeszcze jedno, z racji tego, że do przerwania dochodzi co 10ms (100Hz), to aby dioda migała co 1s w zmienną Timer1 trzeba wpisać 100.
    100*10=1000ms = 1s



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 mar 2014, o 12:56 
    Offline
    Moderator
    Avatar użytkownika

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

    Japa;~) --> fajnie wyjaśnione , więc ja już nie będę pisał ... dzięki ;)

    _________________
    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: 14 mar 2014, o 13:37 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 10 lut 2014
    Posty: 42
    Pomógł: 1

    Dzięki bardzo Japa;~) że poświeciłeś swój czas żeby mi rozjaśnić sytuacje , ale zanim zobaczyłem twój post znalazłem
    filmik P.Mirka pt. AVR - wskaźniki, struktury - część 1


    I wzorując się na kodzie bo nawet ten sam timer był użyty udało mi się wreszcie uruchomić pierwszy Timer :D



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

    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