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



Teraz jest 7 lut 2026, o 23:12


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 25 kwi 2014, o 21:33 
Offline
Nowy

Dołączył(a): 31 lip 2013
Posty: 9
Pomógł: 0

Witam,

Stworzyłem sobie kod do przeglądania menu za pomocą automatów na LCD'ku i to działa. Mam problem by przenieść dane z RAM'u do FLASHA, tzn nie wiem jak to przepisać by nie fochał się kompilator.
Pliki.:
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.


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.


no i korzystanie z tego dobrodziejstwa w pliku:
main.c
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Rozumiem że musze wstawić:
1) const ... PROGMEM dla:
- tablicy z C-stringami
- maszyny stanow

2) Nie wiem czy const PROGMEM powinien byc dla:
- typedef const struct PROGMEM{
- char ** menu
- dla enuma ?! warto w ogóle?

3) Zmienić wyswietlanie na lcd
- z lcdString na lcdStringP (wyswietlanie z RAM'u na odpowiednik z FLASH)

4) Chyba trzeba linijke z f-cji changeMenu:
Z lini:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

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


Teraz mam problem, jak to złożyć w jedną , po moich próbach przeniesienia kompilator pluł:
- wywala warningi/errory pod tytulem:
* zmienna powinna być zadeklarowana
* rzutowanie wskaznika na int'a,
* incompatybile types
* cos jeszcze nie pamietam... ale z grubsza

- na ekranie LCD pluje smieciami.

temat dla mnie trudny bo dla tablicy 2-wymiarowej nie potrafię tego zrobić.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 kwi 2014, o 19:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 sty 2014
Posty: 178
Pomógł: 24

witam
janobarman napisał(a):
/*
* tablica 2-wymiarowa C-string
*/
char *__menuENG[] = {
"Invalid Position", // 0
"Start", // 1
"Start All", // 2

}

to jest raczej tablica jednowymiarowa, przechowuje (w pamięci danych) wskaźniki do stringów (utworzonych gdzieś w pamięci danych ) odpowiednikiem w progmemie będzie:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

użycie oczywiście z rzutowaniem żeby kompilator nie pluł :) :
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: 2 maja 2014, o 13:59 
Offline
Nowy

Dołączył(a): 31 lip 2013
Posty: 9
Pomógł: 0

Dziękuję za odpowiedź. De Facto mechanizm nie zbyt mi się podoba bo z góry jest narzut że muszę tworzyć osobne zmienne, a bardziej chodziło mi o mechanikę posługiwania się/emulacji pracy na tablicy "2-wymiarowej", jak to się odbywa "kulturalniej" w RAM'ie.

Na dowód potwierdzenia użytkownika Kuźnia przytoczyć muszę (powinno stać się biblią widzę jednak) manual avr-libc akurat u mnie w wersji 1.7.1 bo taki dorwalem, strona 29 - 31, punkt: 5.4 Storing and Retrieving Strings in the Program Space.

http://www.cs.ou.edu/~fagg/classes/general/atmel/avr-libc-user-manual-1.7.1.pdf

Tutaj jest dowód twojego argumentu jednak. Dziękuję za rzetelną i fachową odpowiedź.

WNIOSEK:
Masz problem ze składnią, zajrzyj do manualu!! ( zaczynam rozumieć *nix'owych ludzi... z tym hasłem...)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 maja 2014, o 21:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 25 sty 2014
Posty: 178
Pomógł: 24

janobarman napisał(a):
De Facto mechanizm nie zbyt mi się podoba

szczerze to mi też nie leżał taki zapis ale innego sposobu nie znalazłem ,we wszystkich źródłach jakie przewertowałem taki przypadek dla AVR-GCC opisany jest tak j.w.



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

Strefa czasowa: UTC + 1


Kto przegląda forum

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