www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme mit Tabelle


Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo guten morgen,

bekomme folgende Fehlermeldung "113:Error [1129] [] operator requires a 
pointer and an integer as operands"

um übersichtliche Programmierung zu erhalten, habe ich "Tab_02[2][5]" in 
eine eigne *.c Datei angelegt.
Tabelle.c
rom unsigned int Tab_02[2][5] = \
{   { 1,2,3,4,5} ,      \
    { 11,22,33,44,55}   \
};


Ablauf.c
unsigned int Index;
extern rom unsigned int Tab_02[];

void Arbeit(void)
{
Index = Tab_02[0][3];
}


Gruß Siegfried

Autor: NurEinGast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tabelle.c       Ablauf.c


Tab_02[][]      Tab_02[]

Autor: automotive (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wäre es mit?

Ablauf.c
unsigned int Index;
extern rom unsigned int Tab_02[][];

MFG

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
"extern rom unsigned int Tab_02[][];" habe ich auch probiert,
aber
77:Error: syntax error

Gruß Siegfried

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe es gefunden.

nicht so
extern rom unsigned int Tab_02[][];

sondern so
extern rom unsigned int Tab_02[2][5];

Gruß Siegfried

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Habe ein weiteres Problem mit Tabellen Zugriff. Einspaltige Tabelle ist 
im Program Memory angelegt.

*.h
#define MaxTabLogic 256
Prozess unsigned int   GetTabLogic;
Prozess unsigned int   *ZeigerTabLogic;

*.c
rom unsigned int TabLogic[MaxTabLogic] =
{
285,    //  -->>  Taster_Y
..
537,    //  -->>  Taster_X
}

*.c
extern rom unsigned int TabLogic[MaxTabLogic];

ZeigerTabLogic = (unsigned int*)(void*)&TabLogic[0];
GetTabLogic = *ZeigerTabLogic;

Die Variable wird nur mit dem Wert 0000 geladen, obwohl 285 an der 
Stelle im Array steht.
Über Offsetwert funktioniert es.
GetTabLogic = TabLogic[0];

Was mache ich schon wieder falsch?


Gruß Siegfried

Autor: Thomas Pototschnig (pototschnig)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was macht dieses "rom" überhaupt?

Werden die Konstanten dann im flash abgelegt? Dann musst du mit LPM 
drauf zugreifen (ist das ein AVR?) und normale Zeigeroperationen gehen 
meines Wissens nicht, da Harvard-Architektur ...

Bitte um Aufklärung, falls sich da in der letzten Zeit was geändert hat 
:-)

MfG
Thomas Pototschnig

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
PIC,

" Was macht dieses "rom" überhaupt? "
-> Tabelle ist im Program Memory (Flash Programmspeicher) angelegt <-

Gruß Siegfried

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.