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 25 kwi 2025, o 22:01


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
    Autor Wiadomość
    PostNapisane: 12 lis 2018, o 20:25 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    Cześć.

    Jak to jest z tymi funkcjami z _P na końcu np strcmp i strcmp_P

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

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


    Obie wymagają tych samych argumentów, wiem (lub się mylę) że jedne działają na pamięci ram a inne odczytują z pamięci flash ale nie wiem do końca o co chodzi.

    pozdrawiam
    Dawid



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 lis 2018, o 21:44 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 17 lip 2013
    Posty: 208
    Lokalizacja: Kielce
    Pomógł: 15

    W skrócie te z _P operują na argumentach z pamięci programu (pamięci flash), te bez _P na argumentach w pamięci RAM



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 12 lis 2018, o 22:33 
    Offline
    Moderator
    Avatar użytkownika

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

    jez2000 napisał(a):
    wiem (lub się mylę) że jedne działają na pamięci ram a inne odczytują z pamięci flash ale nie wiem do końca o co chodzi.

    Nie mylisz się, a nie wiesz dokładnie bo pewnie nie doczytałeś w Bluebooku (a masz go przecież jak widzę) .... że adresowanie pamięci RAM, Flash i EEPROM jest w tym samym zakresie adresowym, a zatem dostęp programowo musi być inaczej zorganizowany do każdej z nich.

    I właśnie po to są te funkcje z tzw "suffix'em" _P .... Wtedy też wskaźnik do źródłowych danych musi pochodzić z pamięci Flash a nie RAM

    ------------------------ [ Dodano po: 3 minutach ]

    krótko mówiąc jeśli masz dwa stringi

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



    to jeśli masz jakiś bufor w pamięci RAM

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


    i chcesz do niego skopiować raz jeden napis z RAM a później z Flash to musisz użyć różnych funkcji, np:

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


    zauważ, że nawet funkcja strlen, musiała zostać zaopatrzona w suffix '_P' ;)

    _________________
    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: 13 lis 2018, o 19:47 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    Czyli w fukcjach z _P pierwszy argument jest z pamięci RAM a drógi z Flash, zródłowy to ten drugi?? (już znalazłem w avr-libc więc OK)

    Nie rozumię dlaczego obie funkcje jako argument wymagają wskaźnika na stałą typu char. Czemu ta stała skoro podajemy argument z RAM i nie musi to być stała.

    Składnia: [ Pobierz ] [ Ukryj ]
    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: 13 lis 2018, o 20:17 
    Offline
    Moderator
    Avatar użytkownika

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

    Tak faktycznie specyfikator const nie zawsze wskazuje na to czy ma on być z Flash czy RAM

    ale no przecież są opisy do funkcji - nawet w pliku nagłówkowym:

    Obrazek

    _________________
    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: 13 lis 2018, o 20:18 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 19 lis 2015
    Posty: 219
    Pomógł: 20

    No tak jest np w funkcji strcmp operującej na RAM

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


    te const mogę zignorować jeżeli np bym porównywał dwa bufory
    Składnia: [ Pobierz ] [ Ukryj ]
    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: 13 lis 2018, o 20:23 
    Offline
    Moderator
    Avatar użytkownika

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

    jez2000 napisał(a):
    te const mogę zignorować jeżeli np bym porównywał dwa bufory

    To jest pytanie czy stwierdzenie ?

    Jeśli pytanie to TAK - jeśli stwierdzenie to pewnie że tak można - tylko coś skopałeś w definicjach tych buforów. Toż napisz to poprawnie np:

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


    wtedy możesz porównać

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


    i zajrzyj wyżej do mojego opisu

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

    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