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


    Strefa czasowa: UTC + 1





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

    Dołączył(a): 17 mar 2013
    Posty: 4
    Pomógł: 0

    Jak w temacie.
    Tworzę (usiłuję to zrobić :( ) program do obsługi termometru ds18b20. Do pewnego momentu z eclipsem nie ma problemów. Na koniec programu chcę zwizualizować temperaturę, za pomocą jednej diody (temperatura przekracza zadaną - dioda się zapala). Problem polega na tym, że gdy dorzucę funkcję if(), rozmiar programu rozrasta się z blisko 400 bajtów do ponad 2500 bajtów i nagle zużywa też ponad 250 bajtów eepromu:
    gdy w programie wpisuję
    PORTD|=255;
    program zajmuje "tylko 400" bajtów, natomiast gdy tą linijkę wydłużę do:
    if (temp>10) PORTD|=255;
    program zaczyna zajmować ponad 2500 bajtów. Kompilacja innych programów, w których występuje taki błąd z użyciem innego programu (Programmers notepad z pakietu winavr-a) powoduje zmianę rozmiaru pliku wynikowego do około 1kB.

    Piszę program na Attiny2313 i tak jest ustawiony w preferencjach, używam USBasp i tak jest ustawiony w preferencjach, używam eclipse indigo, zmiana toolchaina z atmela na winavr nie robi różnicy.

    Co wy na to?


    Załączniki:

    Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 mar 2013, o 19:15 
    Offline
    Moderator
    Avatar użytkownika

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

    Jak będziesz stosował takie zapisy:

    16.0

    to nie dziw się ;) .... kompilator próbuje traktować to jako liczbę typu float i zaraz musi dociągnąć hektolitry bibliotek


    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: 17 mar 2013, o 19:40 
    Offline
    Nowy

    Dołączył(a): 17 mar 2013
    Posty: 4
    Pomógł: 0

    Poprawione, rzeczywiście zmniejszyło rozmiar kodu o... 500 bajtów. Aktualnie jest sporo ponad 2kB, nadal jest stanowczo za dużo jak na zmianę kodu o jedną instrukcję. Nie dopatrzyłem się innych tego typu kruków. Tak na marginesie ten program pochodzi ze zdaje się, że piątej części kursu avr-gcc z forbota (obsługa termometru).



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 mar 2013, o 19:47 

    Pomógł: 0

    Rozumiem, że to nie są mirkowe biblioteki DSów?.

    Musiał byś się w nie zaopatrzyć, albo przejrzeć całą obsługę DSów........ mnie spory pod względem ilości funkcji program zajął w atmedze8 ok 6k, czyli jakieś 80% (6664 bajta, 214bajtów ramu i 4bajty eeproma)
    Obsługa ADC (pomiar na termoparze), DS18x20 pełne biblioteki Mirka, wysyłanie po RS232, superdebounce, regulator proporcjonalny z wykrywaniem zera (też z niebieskiej książki),no i obsługa LCD1602 też na Mirkowych Bibliotekach.

    Bez specjalnej optymalizacji funkcji czy obsługi przeliczania......



    Góra
      
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 mar 2013, o 19:51 
    Offline
    Nowy

    Dołączył(a): 17 mar 2013
    Posty: 4
    Pomógł: 0

    Poprawione, rzeczywiście zmniejszyło rozmiar kodu o... 400 bajtów. Aktualnie jest sporo ponad 2kB, nadal jest stanowczo za dużo jak na zmianę kodu o jedną instrukcję. Nie dopatrzyłem się innych tego typu kruków. Tak na marginesie ten program pochodzi ze zdaje się, że piątej części kursu avr-gcc z forbota (obsługa termometru). Z wyjątkiem pinów, chyba niczego nie zmieniałem.


    Załączniki:

    Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 mar 2013, o 20:11 
    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

    Masz zmienną typu double i dlatego masz taki duży kod. Jak nie była używana to obliczanie zmiennej temp po prostu zostało pominięte przez kompilator. Zmień typ tej zmiennej na int16_t i zobaczysz różnicę. Skoro sprawdzasz z dokładnością do 1 stopnia to po co stosować double.


    Autor postu otrzymał pochwałę

    _________________
    Dragonus Cracovus: Biomagia



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 mar 2013, o 22:53 
    Offline
    Nowy

    Dołączył(a): 17 mar 2013
    Posty: 4
    Pomógł: 0

    mirekk36 i Krauser - dzięki za help'a ;)

    Podłoże pode mną robi się grząskie... Czuję, jak zapadam się ze wstydu pod ziemię :oops:

    Trochę szkoda, że nie ma opcji usuwania wątku (lub przynajmniej ja jej nie dostrzegam) - wszak zawalanie takiego zacnego forum problemami wynikającymi z niewiedzy... Straszny obciach :roll:

    Zobaczyłem, zapamiętam... Niedługo pewnie zrozumiem; program zdaje się działać poprawnie ;)



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 17 mar 2013, o 23:02 
    Offline
    Moderator
    Avatar użytkownika

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

    jaki tam obciach i wstyd ? ;) po to jest właśnie to forum

    _________________
    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  
    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:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO