Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 mar 2024, o 15:09


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: 27212
Lokalizacja: Szczecin
Pomógł: 1041

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: 27212
Lokalizacja: Szczecin
Pomógł: 1041

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: 27212
Lokalizacja: Szczecin
Pomógł: 1041

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 1 gość


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