Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Mehrdimensionale Arrays Kategorie: Programmierung C (von ER - 14.10.2009 12:51)
Als Antwort auf Re: Mehrdimensionale Arrays von PeterS - 8.10.2009 7:58
Ich nutze:
C-Control Pro Mega32
> > Hallo,
> >
> > ich bin von C-Control I auf C-Control Pro MEGA128 umgestiegen. Ich programmiere in CompactC.
> >
> > Ich möchte eine Ablaufsteuerung aufbauen. Dazu habe ich "früher" häufig mit den Tabellen
> > (Table-Anweisung) gearbeitet.
> >
> > Nun habe ich in C versucht, dies mit Arrays nachzubilden.
> >
> > Ich stoße jedoch ständig auf Schwierigkeiten!
> >
> > Mehrdimensionale Arrays können nicht referenziert werden!!. Parameterübergaben gehen
> > nur bei eindimensionalen Arrays. Als Rückgabewerte einer Funktion kann man sie
> > nicht verwenden. Dynamisch (Größenangabe durch Variablen) kann man sie nicht
> > erstellen, es exestieren keine Funktionen um die Dimensionen eines Arrays ermitteln
> > zu können und und und...
> >
> > Eine sinnvolle alternative für meine Ablaufsteuerung wäre noch Struc(turen) zu benutzen.
> > Geht nicht!
> > Vieleicht habe ich ja auch aufs falsche Pferd gesetz. Habt ihr noch einen Hinweis?
> >
> > Vielen Dank!
>
> Ja es gibt Einschränkungen, aber es ist immer noch mehr möglich als auf der C-Control I,
> dort hat man nur globale statische ein-dimensionale Arrays vom Typ Word. Ich überlege noch wie
> man Referenzen übergeben und zurückgeben kann, ohne die komplette Pointerarithmetik mit
> einzubauen.
>
> Dynamisch (Größenangabe durch Variablen) gehen nur mit den C99 Standard und auch dort nur lokal,
> weil sie auf dem Stack angelegt werden. Der Speicher ist zu klein um sinnvoll mit einem Heap
> zu arbeiten. Der C-Control Pro Compiler kann sich nicht mit einem kommerziellen Compiler
> messen, und selbst die unterstützen größtenteils nicht C99. Wenn Du das alles haben willst, mußt
> Du schon den GNU Compiler benutzen.
>
> Gruss Peter
>
> >
> > Fred

Hallo Fred,
ich habe auch viel mit der CC1 gearbeitet und auch mit LOOKTAB.
Die CC Pro kann keine mehrdimensionalen flash arrays.
Ich habe aber eine Lösung gefunden,  mit der ich leben kann.



// Table komplett definieren und ab ins flash:
flash byte match1[8]  = {16, 244,  35,  78, 1, 8, 0, 203};
flash byte match2[8]  = {16, 156, 193,  78, 1, 8, 0, 240};
flash byte match3[8]  = {16, 156, 193,  78, 1, 8, 0, 240};
flash byte match4[8]  = {16, 156, 193,  78, 1, 8, 0, 240};
flash byte match5[8]  = {16, 156, 193,  78, 1, 8, 0, 240};
flash byte match6[8]  = {16, 156, 193,  78, 1, 8, 0, 240};
flash byte match7[8]  = {16, 156, 193,  78, 1, 8, 0, 240};
flash byte match8[8]  = {16, 156, 193,  78, 1, 8, 0, 240};
flash byte match9[8]  = {16, 156, 193,  78, 1, 8, 0, 240};
flash byte match10[8] = {16, 156, 193,  78, 1, 8, 0, 240};
flash byte match11[8] = {16, 156, 193,  78, 1, 8, 0, 240};
flash byte match12[8] = {16, 156, 193,  78, 1, 8, 0, 240};
flash byte match13[8] = {16, 156, 193,  78, 1, 8, 0, 240};


// 1 Zeile im Ram definieren
byte array1[8];         // Schmierarray

// 1 Zeile vom flash ins Ram kopieren und verarbeiten
array1 = match1

Anders gehts leider nicht

mfg Ellen





    Antwort schreiben


Antworten:

Re: Mehrdimensionale Arrays (von PeterS - 18.10.2009 8:57)
    Re: Mehrdimensionale Arrays (von ER - 21.10.2009 20:59)
        Re: Mehrdimensionale Arrays (von PeterS - 22.10.2009 14:54)