Schleife für Register

#3314986
haemme schrieb:
> Hallo zusammen,
>
> ich habe in meinem C-Code 64 Variablen mit folgender Bezeichnung:
>
> GPTA1_LTCCTR00.I
> ...
> GPTA1_LTCCTR63.I
>
> Ich möchte auf diese Variablen mit einer Schleife zugereifen. Gibt es da
> eine Möglichkeit?

Nein.
Warum hast du 64 einzelne Variablen und kein Array?
Genau dafür ist ein Array gedacht: 64 Variablen die alle denselben Namen 
tragen und mit einer Nummer (die auch berechnet werden kann) 
unterschieden werden.
Gast #3315220
Du kannst ein Array von 64 Pointern anlegen. Jeder Pointer zeigt auf 
eine Variable. Dieses Array kannst du dann mit einer Schleife deiner 
Wahl durchgehen.
#3316513
haemme schrieb:
> Danke für den Tipp - Hab es so gelöst.

Echt?

Na dann guck mal ins Listing, was für ein Wust an Code dafür erzeugt 
werden muß.
Und der RAM-Verbrauch ist auch nicht klein, der Laufzeitoverhead 
sowieso.

Ich hatte den Tipp als Scherz verstanden.

Sinvoller wäre zu ergründen, warum "DAvE" sone verrückten Sachen macht. 
Oder es gleich als Array in C zu schreiben.
Gast #3316532
>Na dann guck mal ins Listing, was für ein Wust an Code dafür erzeugt
>werden muß.
>Und der RAM-Verbrauch ist auch nicht klein, der Laufzeitoverhead
>sowieso.

Na und? Wozu haben wir sonst POWER-PCs so was? IRgendwie muss doch die 
Rechenleistung verbraten werden...

Ach ja, die Zählvariable für die for-Schleife ist natürlich ein double 
real.
Persönliche Seite #3323493
Offenbar handelt es sich um SFRs eines Infoneon TriCore, die nicht 
direkt aufeinander folgen.  Eine Möglichkeit ist das bereits genannte 
Zeiger-Array mit uint32_t volatile*.

Zweite Möglichkeit ist Nachbilden der Local Timer Cell des GPTA als 
Struktur und casten der Adresse auf einen entsprechenden 
Structarray-Zeiger.  In dem Fall würde der Zugriff etwa so aussehen
1
typedef
2
{
3
    ...
4
    LTCCTR_t ctr;
5
    ...
6
} LTC_t;
7

8
void foo (void)
9
{
10
   LTC_t volatile *ltc = (LTC_t volatile*) & LTC00_erstes_Element;
11

12
   for (int i = 0; i < 64)
13
   {
14
       ltc[i].ctr.I = 0;
15
   }
16
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.