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 13 kwi 2025, o 20:04


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
    Autor Wiadomość
    PostNapisane: 3 sty 2013, o 17:18 
    Offline
    Nowy

    Dołączył(a): 03 sty 2013
    Posty: 14
    Pomógł: 0

    Witam.


    Proszę o pomoc w sprawie niedziałającego przerwania w Attiny45.

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


    Program działa tak jak chcę. Procesor po przytrzymaniu przycisku wchodzi w tryb "powerdown" ale już po tym nie mogę go normalnie obudzić przyciskiem.
    Wydaje mi się że problem leży po stronie nieumiejętnego dogadywania się bascoma z attiny45.
    Ten sam program wgrany do attiny44 działa bez zarzutu.
    Może trzeba skonfigurować to przerwanie bezpośrednio na rejestrach ale jak?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 sty 2013, o 19:25 
    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

    Pier napisał(a):
    Ten sam program wgrany do attiny44 działa bez zarzutu.
    Może trzeba skonfigurować to przerwanie bezpośrednio na rejestrach ale jak?

    To dziwne, bo attiny44 ma dwa rejestry TCCR1A i TCCR1B, a attiny45 tylko jeden TCCR1.
    Czy na pewno wiesz co robi ta linia?
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Podobnie możesz ustawić INT0. domyslnie po resecie procesora jest ustawione to przerwanie na Low Level więc wystarczy tylko:
    Składnia: [ Pobierz ] [ Ukryj ]
    język basic4gl
    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: 3 sty 2013, o 23:00 
    Offline
    Nowy

    Dołączył(a): 03 sty 2013
    Posty: 14
    Pomógł: 0

    Źle się wyraziłem co do tego drugiego kontrolera. Chodziło mi o to że przerwanie w attiny44 dobrze działało program był trochu inny.
    Jutro wypróbuję czy taka konfiguracja pomoże.
    A wiesz jak skonfigurować pwm w moim programie aby działał odwrotnie?
    Bo teraz mam tak że gdy OCR1A =0 to urządzenie sterowane działa na full a chciałbym żeby tak było przy OCR1A=255. Nie wiem jak to się fachowo nazywa i który bit w którym rejestrze za to odpowiada.
    A i jeśli Możesz to wskaż mi co to odpowiada za prescaler w tym Pwm-ie.
    Pozdrawiam piotr.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 3 sty 2013, o 23:48 
    Offline
    Moderator
    Avatar użytkownika

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

    Pier napisał(a):
    A i jeśli Możesz to wskaż mi co to odpowiada za prescaler w tym Pwm-ie.


    Preskaler wszędzie i w każdym trybie będzie odpowiadał za częstotliwość wykonywania się czegoś. Preskaler to dzielnik częstotliwości. Więc przy PWM'ach preskaler również bierze udział w ostatecznej częstotliwości twojego PWM'a

    _________________
    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: 4 sty 2013, o 09:24 
    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

    To nie są tajne dane http://www.atmel.com/Images/doc2586.pdf od strony 86 od 97.
    Poniżej wszystkie bity rejestru TCCR1, który ty ustawiasz teraz na 01110001
    CTC1 PWM1A COM1A1 COM1A0 CS13 CS12 CS11 CS10
    W tym momencie masz COM1A1 COM1A0 = 11, a jak chcesz mieć odwrócony sygnał to wpisujesz wartości 10 na te pozycje.
    Do ustawiania preskalera służą 4 ostatnie bity CS13 CS12 CS11 CS10.
    Radzę nie stosować instrukcji Bascoma typu Config tylko samemu ustawiać rejestry, bo na rejestrach można zrobić wszystko. Dodatkowo nie polecam ustawiać bitów wprost na rejestrze tylko za pośrednictwem nazw bitów wtedy łatwiej się później analizuje taki program. Przykład podałem wcześniej.


    Autor postu otrzymał pochwałę

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 4 sty 2013, o 10:30 
    Offline
    Nowy

    Dołączył(a): 03 sty 2013
    Posty: 14
    Pomógł: 0

    No po konfiguracji którą Podałeś procesor budzi się z przerwania :D
    Mirek ja wiem za co odpowiada prescaler, chodziło mi które bity są za niego odpowiedzialne.
    Noty katalogowe czytam namiętnie ostatnio ale co innego czytać a co innego zrozumieć. Jakoś nie bardzo mogę to załapać.
    Wielkie dzięki za odpowiedzi.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2013, o 11:32 
    Offline
    Nowy

    Dołączył(a): 03 sty 2013
    Posty: 14
    Pomógł: 0

    Koledzy pomóżcie bo już nie wyrabiam.
    Znów nie mogę opanować przerwania int0.
    Program wygląda aktualnie tak:
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język basic4gl
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Problem przerwania INT0 jest taki że po pierwszym włączeniu zasilania bądź resecie procesor wybudza się z powerdown po przerwaniu INT0. Ale gdy już go wprowadzimy w powerdown poprzez przytrzymanie przycisku to wybudzić można go z tego jeszcze przez około 5s a po tym czasie procesor jest jakby martwy aż do kolejnego resetu.

    To tak jakby przerwanie INT0 działało tylko 5s a później już nie.

    Co może być przyczyną takiego działania?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 25 sty 2013, o 14:53 
    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

    Zbigniew Raabe, BASCOM Collage Ćwiczenie 3 napisał(a):
    Niekontrolowane przerwania mogą narobić większego bigosu, niż używanie instrukcji GOTO (zgiń, przepadnij, siło nieczysta!).
    Radzę wziąć pod uwagę słowa nieśmiertelnego popularyzatora Bascoma w Polsce. Zamiast goto używaj gosub, a każdą procedurę na końcu koniecznie zakończ return i wtedy program będzie przewidywalny.

    _________________
    Dragonus Cracovus: Biomagia



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

    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