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 12 kwi 2025, o 09:45


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 8 mar 2015, o 19:16 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 lis 2012
    Posty: 35
    Lokalizacja: Jaworzno
    Pomógł: 0

    Witam

    Mam taki problem, ze chcę odczytywać temperaturę wewnętrzną procesora co sekundę (bo nie potrzebuję a nawet nie chcę robić tego częściej).
    Wiec ustawiam MUX'y ADCSRA i nic tylko pierwszy pomiar jest realizowany a potem ciszaaa....

    kod poniżej:

    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.


    P.S. W różnych manualach od ATMEL'a są różne definicje jak ustawić MUX aby odczytywać temperaturę wewnętrzną. Dlatego dałem to w komentarzach.
    Jak w końcu ma być?

    _________________
    Trochę tu, trochę tam.



    Ostatnio edytowano 8 mar 2015, o 21:45 przez niemy, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 mar 2015, o 19:56 

    Pomógł: 0

    Chyba czegoś zabrakło w pierwszym zdaniu ;) bo teraz to wychodzi na to, że odczytujesz temperaturę co sekundę a nie chcesz i nie potrzebujesz tego robić :shock:
    Co masz na myśli mówiąc "różne manuale od atmela"? Do różnych mikrokontrolerów? Czy różne wersje tej samej noty?
    Według noty at-tinka44 ze strony atmela: MUXy na 100010.
    Zamiast tych przesunięć w przerwaniu możesz odczytać naraz cały rejestr ADC (bez sufiksu L/H).
    Skąd wiesz, że działa tylko raz?



    Góra
      
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 mar 2015, o 20:30 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 lis 2012
    Posty: 35
    Lokalizacja: Jaworzno
    Pomógł: 0

    Wielkie dzięki za zwrócenie uwagi. Już poprawiłem pierwsze zdanie.
    Co do noty to mam do attiny 44 i tam jest faktycznie napisane MUX 100010, ale w drugim ogólnym o używaniu ADC w attiny jest napisane tylko MUX 100000.

    Co do dalszej treści mojego postu to przepraszam za składnie, ale trudno jest pisać jak jeden młody inżynier (2 lata) "pomaga" tacie a drugi młody inżynier (2 miesiące) nawet nie stara się pomagać ;)

    Ale do rzeczy.
    Opuściłem oczywiście aby nie rozwlekać kodu część dotyczącą obsługi timera co sekundę.
    Idąc dalej. Nie wiem czy pomiar jest tylko raz wykonany ale potem w warunku mam zmianę stanu jak widać na przeciwny i dzieje się to ciągle, a powinno ustać po ostygnięciu uC.
    Ustaje dopiero wtedy jak oczywiście uC się ochłodzi i zresetuje go. Co za tym idzie jeżeli nie mam zmiany stanu i zaczynam grzać uC wyszukanym skomplikowanym narzędziem laboratoryjnym (suszarką od żony) do efekt zmiany stanu nie następuje. Dzieje się to znowu dopiero wtedy kiedy uC jest jeszcze ciepły i go zrestartuję.

    Myślę, że teraz w pełni przekazałem swoje problemy.

    Dodam tylko, że we free running mode wszystko działa pięknie. A w single mode o którym mowa gdzieś, coś, nietegest, i jakoś takoś....no nie działa.

    _________________
    Trochę tu, trochę tam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 mar 2015, o 21:04 

    Pomógł: 0

    Co do MUX'ów - trzymałbym się tej wartości z noty tiny44 (byleby najnowszej wersji ze strony atmela).

    Ok teraz rozumiem. Coś się nie zgadza z nawiasami przy ifie (za dużo "(" ):
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Nic mądrzejszego nie widzę. Jeśli to nie tajemnica to wrzuć całość.

    Młodego inżyniera proszę pozdrowić :)



    Góra
      
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 mar 2015, o 21:51 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 lis 2012
    Posty: 35
    Lokalizacja: Jaworzno
    Pomógł: 0

    To nie tajemnica, ale cały kod ma już 2,5 kB i nie zawsze jest nazwijmy to "poprawny politycznie" zaraz by mnie Mirek przywołał do porządku ;) albo któryś z moderatorów (nawiasem mówiąc "Dzieki ci Boże za Moderatorów)

    Poprawiłem już wszystkie nawiasy z tej części kodu.

    Tak żeby poprawić nastrój to wrzuciłem to do AtmelStudio do symulatora i też kiepsko chodzi. Nie odświeża się flaga ADIF.

    _________________
    Trochę tu, trochę tam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 mar 2015, o 18:12 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 22 lis 2012
    Posty: 35
    Lokalizacja: Jaworzno
    Pomógł: 0

    Dobra sierota ze mnie jakich mało ;-(

    Problemem okazał się ten zapis.

    if(((ADCH << 8) | ADCL) > 310) temperatura=1;
    if(((ADCH << 8) | ADCL) < 310) temperatura=0;

    Odczytywać z rejestrów ADC należy tylko raz i to najlepiej w całości. Wychodzi brak doświadczenia niestety.
    Teraz przepisuję tylko wartość rejestrów do zmiennej i potem na niej robię to co chce i już wszystko pięknie działa :D

    _________________
    Trochę tu, trochę tam.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 10 mar 2015, o 18:19 

    Pomógł: 0

    Cieszę się z happy endu :) Niby głupota, ale ciężko takie rzeczy znaleźć jak się od razu nie zauważy.



    Góra
      
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO