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 17 cze 2025, o 15:17


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 10 gru 2012, o 13:00 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 sie 2012
    Posty: 97
    Lokalizacja: Tarnów
    Pomógł: 2

    Witam szanownych forumowiczów

    Po całym wczorajszym dniu spędzonym w poszukiwaniu rozwiązania stwierdziłem że się poddaje. Rozwiązanie problemu może być całkiem banalne ale ja niestety tego nie widzę. Ale do rzeczy:

    Zbudowałem sobie taki układ jak mniej więcej na schemacie poniżej:
    http://img22.imageshack.us/img22/4178/schematnaforum.png


    założenie ma być takie że timer2 ma być taktowany zewnętrznym kwarcem, a układ po wykryciu zasilania ma przejść w tryb power-save a po pojawieniu się zasilania ma się wybudzić. Wykrywanie zaniku zasilania działa, ATmega przechodzi w tryb uśpienia (obserwuje prąd na amperomierzu, przy normalnym trybie pracy jest to wartość rzędu kilkudziesięciu mA, po przejściu w tryb power-save około 20 uA ). Budzić w założeniu ma przerwanie INT0 na porcie PD2.

    ATmega32 takowana jest wewnętrznym zegarem 8 MHz.

    Oto 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.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 gru 2012, o 13:26 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 28 maja 2012
    Posty: 471
    Lokalizacja: ZGY/ZS
    Pomógł: 30

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

    Wywal to, a w to miejsce zrób DISABLE INTERRUPT INT0.

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


    Tutaj zamiast tego daj ENABLE INTERRUPT INT0 i tylko
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


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



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


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


    Wybudzanie działa tylko na "Low level"


    Autor postu otrzymał pochwałę

    _________________
    eDiyCraft.blogspot.com



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 gru 2012, o 13:59 
    Offline
    Moderator
    Avatar użytkownika

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

    Dokładnie jak mówi kolega wyżej, poniżej uwaga z noty PDF, która znajduje się pod tabelką trybów uśpienia i sposobów wybudzania dla wejść typu INTx

    Cytuj:
    3. Only INT2 or level interrupt INT1 and INT0.


    a ty sobie zrobiłeś:

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


    więc już widzisz gdzie musisz szukać ;) ... ale weź też pod uwagę te inne sugestie kolegi wyżej ;)


    Autor postu otrzymał pochwałę

    _________________
    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: 10 gru 2012, o 14:56 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 sie 2012
    Posty: 97
    Lokalizacja: Tarnów
    Pomógł: 2

    Dzięki Panowie, działa.

    Aż mi teraz głupio że nie wpadłem na to, a próbowałem wybudzania zboczem narastającym, opadającym, dowolną zmianą, wprowadzać w uśpienie też robiłem na 2 sposoby. Wogóle za dużo kombinowałem, nawet przez chwilę chciałem spróbować taktowania zewnętrznym kwarcem ale szybko stwierdziłem że to nie jest sposób na rozwiązanie tego problmu.

    Zamieszczam poprawiony kod bez zbędnych lini, może się komuś kiedyś przyda:
    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: 11 gru 2012, o 10:21 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 31 sie 2012
    Posty: 52
    Lokalizacja: Toruń
    Pomógł: 1

    Witam
    Właśnie coś na ten temat w internecie szukałem, więc mi się przyda. Dziękuję.

    Piotr



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 11 gru 2012, o 19:54 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 05 sie 2012
    Posty: 97
    Lokalizacja: Tarnów
    Pomógł: 2

    Witam ponownie

    Mimo że problem o którym pisałem zakładając temat został szybko rozwiązany, ale pojawił się następny (jak to zawsz bywa) również związany z tym nieszczęsnym trybem power save. Schemat jak i program trochę ewoluował, a wszystko zmierza w kierunku RTC (albo czegoś podobnego ;) ). Ale do rzeczy, chodzi o to że w programie liczę sobie sekundy które generowane są poprzez podzielenie częstotliwości zewnętrznego kwarcu 32,768 kHz taktującego Timer2. Wyświetlane one są na LCD. I teraz, po przejściu w tryb power save wszystko liczy dobrze, ale już po wybudzeniu licznik przestaje działać i co ciekawe po ponownym uśpieniu zaczyna liczyć dalej kontynuując od wartości na której się zatrzymał. Czyli generalnie mówiąc po starcie w normalnym trybie działa ok ale już po pierwszym uśpieniu działa tylko w trybie uśpienia. Nie mam pojęcia co może być tego przyczyną.

    kod prezentuje się tak:

    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.


    schemat: http://img841.imageshack.us/img841/4178/schematnaforum.png

    __________ edit:

    Sory za zawracanie głowy, już wiem co było tego przyczyną, zakomentowałem linię :
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    w obsłudze przerwania która czyściła bit zezwalający na przerwanie. A zkomentowałem go dlatego że układ nie chciał mi się budzić, dołożyłem kondensator 22pF do nóżki PD2 i zaczął czasami wstawać :). Generalnie problem jest w tym że musiałem zastosować inwerter tak by załączenie zasilania (stan 1 ) generowało przerwanie (stan 0 ) które budzi układ. Ale teraz o dziwo wszystko działa. Zobaczymy jak długo :)



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

    Strefa czasowa: UTC + 1


    Kto przegląda forum

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