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



Teraz jest 13 lut 2025, o 13:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 23 paź 2013, o 06:53 
Offline
Użytkownik

Dołączył(a): 30 paź 2012
Posty: 33
Pomógł: 0

Witam!
Mam pytanie, dlaczego po zdefiniowaniu tablicy znakowej w pamięci Flash w następujący sposób:
char tekst[] PGMSPACE = "jakiś tekst"; po wyłączeniu i włączeniu zasilania dane są tracone?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2013, o 07:04 
Offline
Moderator
Avatar użytkownika

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

lisek120 napisał(a):
Witam!
Mam pytanie, dlaczego po zdefiniowaniu tablicy znakowej w pamięci Flash w następujący sposób:
char tekst[] PGMSPACE = "jakiś tekst"; po wyłączeniu i włączeniu zasilania dane są tracone?


jest tylko i wyłącznie jeden powód ;) ... coś totalnie źle pan robisz bo te dane NIGDY nie są tracone ... za to bez pokazania swojego kodu nikt ci na takie pytanie nie odpowie konkretnie bo jak ? chyba że jasnowidz :(

_________________
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: 23 paź 2013, o 08:20 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Ostatnio edytowano 6 lis 2015, o 13:56 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2013, o 08:39 
Offline
Użytkownik

Dołączył(a): 30 paź 2012
Posty: 33
Pomógł: 0

Kod postaram się wkleić wieczorem, natomiast mniej więcej wygląda to tak:
Kod:
char p_tekst[] PGMSPACE = "jakis tekst";
char tab1[11];


i funkcja w której następuje przypisanie inicjowana w funkcji main:
Kod:
void init_menu(void)
{
       for(uint8_t i=0;i<11;i++) tab1[i] = pgm_read_byte(p_tekst[i]);
}

następnie tablicę tab1 kopiuję do bufora wyświetlanego na lcd.
Po wgraniu program działa prawidłowo jednak po odcięciu zasilania wyświetla jakieś krzaki.

ObrazekObrazek



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2013, o 08:45 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Ostatnio edytowano 6 lis 2015, o 13:56 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2013, o 09:03 
Offline
Użytkownik

Dołączył(a): 30 paź 2012
Posty: 33
Pomógł: 0

xor napisał(a):
A nie zapomniałeś o znaku '\0' na końcu stringa?

a nie jest dodawany automatycznie przy tego typu inicjalizacji?
Kod:
char p_tekst[] PGMSPACE = "jakis tekst";


jedno mnie zastanawia, dlaczego po wgraniu działa dobrze ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2013, o 10:37 
Offline
Moderator
Avatar użytkownika

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

lisek120 napisał(a):
pgm_read_byte(p_tekst[i]);


No przecież tu masz BABOLA / ZONK'a :(

ta funkcja musi dostać WSKAŹNIK jako argument rozumiesz ? a jak pobrać wskaźnik do danego elementu tablicy ? .. cofamy się szybko do odpowiedniej części bluebooka ;) i widzimy że trzeba to zrobić za pomocą operatora pozyskiwania adresu &, czyli tak:

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

_________________
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: 23 paź 2013, o 10:59 
Offline
Użytkownik

Dołączył(a): 30 paź 2012
Posty: 33
Pomógł: 0

bo to teraz z ręki wpisywałem, wieczorem kleję kod. Na pewno jest tam ten operator.

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

gdyby go nie było to na lcd były by same krzaki nawet po wgraniu programu. Na zdj. z prawej widać że wszystko jest ok przed wyłączeniem zasilania.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2013, o 11:50 
Offline
Moderator
Avatar użytkownika

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

No to wiesz zamiast zadawać dodatkowe zagadki bo z ręki piszesz i jeszcze z kolejnymi błędami, to weź usiądź i raz a porządnie wklej cały kod - bo jeszcze raz powiem nie ma siły i robisz gdzieś błąd .... domyślając się jakiejś utraty danych po wyłączeniu zasilania ....

_________________
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: 23 paź 2013, o 15:09 
Offline
Użytkownik

Dołączył(a): 30 paź 2012
Posty: 33
Pomógł: 0

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


plik menu.h

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


plik "wspolny.c" w którym są wykorzystywane funkcje

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


Kody wklejamy przy pomocy syntax=c - Różowy J.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2013, o 16:48 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

.


Autor postu otrzymał pochwałę

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Ostatnio edytowano 6 lis 2015, o 13:56 przez xor, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 paź 2013, o 17:09 
Offline
Użytkownik

Dołączył(a): 30 paź 2012
Posty: 33
Pomógł: 0

Wielkie dzięki! Dopiero zaczynam z mikrokontrolerami, wcześniej programowałem trochę plc w LAD i STL co było o wiele łatwiejsze, mikrokontrolerki są jednak ciekawsze. Jeszcze raz dzięki.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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