logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[AVR] [AVR][C][Atmega64] - Implementacja menu z PROGMEM i funkcją callback

sainons 27 Wrz 2013 13:36 2007 4
REKLAMA
  • #1 12783142
    sainons
    Poziom 11  
    Witam zaimplementowałem (z drobnymi modyfikacjami) u siebie menu z tematu menu

    w skrócie wyszstkie deklaracje wyglądają tak
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    celowo skróciłem zapis bo sporo mam naklepane a to utrudnia analizę kodu

    mój problem polega na dobraniu się do danych z pamięci programu

    do unsigned char pm = pgm_read_byte(&menu[pozycjaMenu].next_state[0]);
    mogę się dostać i automat wiem że działa poprawnie
    natomiast do tablicy wskaźników na teksty już nie idzie mi tak łatwo, temp = (unsigned char*)pgm_read_word(&menu[pozycjaMenu].Line[0]);

    do temp jest przypisywany jakiś wskaźnik natomiast dane pochodzą ze śmietnika :)

    celowo używam funkcji snprintf() bo do tekstów z PROGMEM potrzebuje dokleić wartości różnych zmiennych.

    siedzę trochę nad wskaźnikami i rozumiem tylko tyle że dostaje wskaźnik nie na to co potrzebuję tylko do jakiegoś innego miejsca pamięci stąd śmietnik na ekranie.

    w jaki sposób powinienem dostać się do tych danych.

    Pozdrawiam
  • REKLAMA
  • #2 12783214
    tadzik85
    Poziom 38  
    Napisy masz również w pamięci programu i z tego powodu musisz je właściwie odczytywać.
  • REKLAMA
  • #3 12783228
    sainons
    Poziom 11  
    czyli po wywołaniu

    temp = (unsigned char*)pgm_read_word(&menu[pozycjaMenu].Line[0]);

    musze

    temp2=(unsigned char*)pgm_read_word(&temp);

    i dopiero tam będzie mój upragniony tekst?? dobrze rozumiem
  • REKLAMA
  • Pomocny post
    #4 12783357
    tadzik85
    Poziom 38  
    tak ale :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    i bez rzutowania na char na wskaźnik na char
  • #5 12783379
    sainons
    Poziom 11  
    teraz na to patrząc to problem był dość oczywisty ;/

    tak zgadza się błąd wziął się ctrl+c /ctrl+v

    dzięki za pomoc.

    tak myślałem ale po sprawdzeniu niestety temat zostaje otwarty. nadal uzysuje śmieci z pamięci.
REKLAMA