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 20 lip 2025, o 12:24


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
    Autor Wiadomość
    PostNapisane: 30 paź 2016, o 16:14 
    Offline
    Użytkownik

    Dołączył(a): 22 kwi 2015
    Posty: 50
    Pomógł: 0

    Witam. Poniżej wklejam prosty kod programu, który się kompiluje poprawnie, natomiast nie działa na procesorze.
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Otóż błąd znajduje się w przypisaniu zmiennej typu int do zmiennej typu float. W czasie wykonywania tej linijki, program przeskakuje do pętli nieskończonej:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Jak poprawnie dokonać takiego rzutowania ? No bo chyba jest to możliwe ?



    Ostatnio edytowano 30 paź 2016, o 16:26 przez _damian, łącznie edytowano 3 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 paź 2016, o 16:16 
    Offline
    Użytkownik

    Dołączył(a): 04 paź 2011
    Posty: 8615
    Pomógł: 338

    Proszę poprawić formatowanie kodów

    _________________
    Zbuduj swój system [url=https://helion.pl/ksiazki/w-labiryncie-iot-budowanie-urzadzen-z-wykorzystaniem-ukladow-esp8266-i-esp32-andrzej-gromczynski,wlablo.htm#format/d]IOT[/url]



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 paź 2016, o 18:19 
    Offline
    Użytkownik

    Dołączył(a): 22 gru 2013
    Posty: 296
    Lokalizacja: Szczecin
    Pomógł: 47

    Popatrz jak wygląda kod w asemblerze, może jest używany FPU a nie jest włączany?


    Autor postu otrzymał pochwałę


    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 paź 2016, o 20:57 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 12 sie 2013
    Posty: 230
    Lokalizacja: Zabrze
    Pomógł: 17

    W pętli while(1) nic się nie dzieje, więc kompilator najzwyczajniej (prawdopodobnie) optymalizuje i wywala niepotrzebne "rzeczy":
    - przypisanie z rzutowaniem nie jest nigdzie wykorzystywane, więc wywala;
    - port jest zawsze w jednym stanie, więc być może jest to stan domyślny po resecie lub w sekcji startowej programu jest to ustawiane;
    --- zatem jak widać zawartość tej pętli z punktu widzenia kompilatora nic nie robi, więc zostaje pusta pętla while(1)

    _________________
    40-32:2=4!



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 30 paź 2016, o 22:20 
    Offline
    Użytkownik

    Dołączył(a): 22 kwi 2015
    Posty: 50
    Pomógł: 0

    PJS napisał(a):
    W pętli while(1) nic się nie dzieje, więc kompilator najzwyczajniej (prawdopodobnie) optymalizuje i wywala niepotrzebne "rzeczy":
    - przypisanie z rzutowaniem nie jest nigdzie wykorzystywane, więc wywala;
    - port jest zawsze w jednym stanie, więc być może jest to stan domyślny po resecie lub w sekcji startowej programu jest to ustawiane;
    --- zatem jak widać zawartość tej pętli z punktu widzenia kompilatora nic nie robi, więc zostaje pusta pętla while(1)


    To tylko przykład, tak samo dzieje się w przypadku bardziej rozbudowanego programu gdzie te zmienne są wykorzystywane, a tutaj chciałem jak najprościej pokazać jaki jest błąd.

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


    Tak wygląda kod assemblera. Nie potrafię na razie powiedzieć co on oznacza, ponieważ nie znam ASM ale jutro do tego przysiąde, może coś to pomoże



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 31 paź 2016, o 15:24 
    Offline
    Użytkownik

    Dołączył(a): 22 kwi 2015
    Posty: 50
    Pomógł: 0

    krish napisał(a):
    Popatrz jak wygląda kod w asemblerze, może jest używany FPU a nie jest włączany?

    Jako, że wygrał we mnie leń to postanowiłem po prostu włączyć FPU, nie analizować na razie kodu asm i zobaczyc co się stanie. I poszło! Także wielkie dzięki bo pewnie bez pomocy męczyłbym się z tym z 2 tygodnie. Generalnie sam opis FPU znajduje się w programming manual, a moja nauka stm opierała się głównie na RM i nie zwróciłem w ogóle uwagi na koprocesor. Także przestroga dla początkujących - czytajcie też PM :-)



    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 2 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