mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Arbeiten mit Variablen


Autor: Wayne Interessierts (mustang)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein gutes neues Jahr wünsche ich allen Forenmitgliedern

Aber auch im neuen Jahr gibt es kleine Probleme mit denen ich mich 
vertrauensvoll an euch wende.

Es geht um folgendes:
Ich habe eine Funktion in C geschrieben die mir den Ladevorgang eines 
Akkus überwacht und verschiedene Aktionen ausführt.
Für diese Verschiedenen Aktionen sind mehrere Globale Variablen 
deklariert worden. An die Funktion übergebe ich den aktuell zu ladenden 
Akku (1-4). Innerhalb der Funktion soll nun für den jeweiligen Akku 
bestimmte Prüfungen durchgeführt werden und in die globalen Variablen 
geschrieben werden (Ladestrom, Ladezustand, schreiben in EEPROM, etc.)
Jetzt ist die Frage, ob es irgendwie die Möglichkeit gibt anhand des 
übermittelten Akkus zu der Funktion, in die zum jeweiligen Akku 
zugehörige Globale Variable zu schreiben?

Ich habe mir das ganze so vorgestellt:
//************** Globale Variable *******************
unsigned int StromAkku1
unsigned int StromAkku2
...

//******* Funktion Laden ****************************
// Übergabe: Zu ladender Akku    Rückgabe: 0 = akku Voll / 1= Akku Laden

bool laden (unsigned char AkkuNr)
{
  StromAkku(hier die AkkuNr anhängen) = Ladestrom (....);
  ....
  ....
}

Kann man sowas irgendwie lösen? Weil ich habe keinen Ansatz wie, 
geschweige denn eine Ahnung mit welchen Begriffen ich den Google füttern 
soll.
Danke mal für euere Hilfe

Gruß

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so direkt geht das nicht.

Aber man kann entweder statt der einzelnen Variablen ein Feld nehmen,
dann kann darüber iteriert werden.

Alternativ könnte man die globalen Variablen lassen wie sie sind und
zusätzlich ein Feld mit Zeigern darauf definieren, und in einer
Schleife über die Zeiger die Variablen anfassen.

Autor: Jonas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich dich richtig verstanden habe willst du je nach AkkuNr die 
globale Variable wählen.

Entweder du fragst per If oder Switch die übergebene AkkuNr ab und 
wählst so die richtige Variable oder du nutzt zB ein Array...

AkkuStrom[1] -> Strom für Akku 1
AkkuStrom[2] -> ...

Hoffe so meintest du es...

Autor: Wayne Interessierts (mustang)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klaus Wachtler schrieb:
> Alternativ könnte man die globalen Variablen lassen wie sie sind und
>
> zusätzlich ein Feld mit Zeigern darauf definieren, und in einer
>
> Schleife über die Zeiger die Variablen anfassen.

Wie darf ich das verstehen? und wie müsste ich das programmtechnisch 
lösen?
Ich kann mir darunter grad gar nichts vorstellen.


Jonas schrieb:
> AkkuStrom[1] -> Strom für Akku 1
>
> AkkuStrom[2] -> ...

das ist natürlich auch eine Möglichkeit, wenn ich dich reichig verstehe, 
müsste ich dazu eine Array mit 4 Speicherplätzen anlegen und jedem Akku 
eine Speicherstelle zuweisen. Das muss ich gleich mal probieren, danke 
für den Denkanstoß!

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dirk K. schrieb:
> Wie darf ich das verstehen? und wie müsste ich das programmtechnisch
> lösen?
> Ich kann mir darunter grad gar nichts vorstellen.

So ähnlich, wie es Jonas wahrscheinlich auch meint.

Halt nicht so:
int  StromAkku1;
int  StromAkku2;
...

sondern stattdessen so:
int  StromAkku[4];
...
   for( i = 0; i<4; i++ )
   {
      StromAkku[i] = ...;
   }

Nicht vergessen: Bei Feldern hat das erste Element die Nummer 0,
man zählt also nicht von 1 bis 4, sondern von 0 bis 3.

Autor: Wayne Interessierts (mustang)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar, dann habe ich es verstanden wie ihr das meint!

Werde ich jetzt gleich mal probieren. Danke für euere Hilfe!!

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.