Forum: Mikrocontroller und Digitale Elektronik Variable an eine Interruptroutine weiter geben


von Mahi (Gast)


Lesenswert?

Hallo,
Weiß jemand wie ich in eine Initialisierte Variable in einer 
Interruptroutine
weiterverarbeiten kann. Wie im unten dargestellten Prozedere.
Wie müsste da der Befehl lauten?
Danke im Vorraus


Interrupt
{
Zaehler++;
}


void main(void)

int Zaehler=0;

{

do while Schleife

}

von Jim M. (turboj)


Lesenswert?

1
volatile

von Bitflüsterer (Gast)


Lesenswert?

"Ich mach' Dir das Püree nochmal warm". :-)

Schau in Dein C-Buch unter "Geltungsbereich von Variablen" (resp. 
"Variable Scope"). Bei der Gelegenheit auch gleich mal unter "void" und 
im Internet unter "Interrupt Variable void".

Alles Nähere erklärt unser Herr Karl Heinz, falls Du das partout 
vorziehst.

von Karl H. (kbuchegg)


Lesenswert?

Bitflüsterer schrieb:

> Alles Nähere erklärt unser Herr Karl Heinz,


nicht wirklich.
Das Thema 'Scope von Variablen' ist so grundlegend, dass da von mir auch 
nur der Hinweis auf ein C Buch kommt. Irgendwo ist auch bei mir die 
'untere  Schmerzgrenze des Nichtwissens' erreicht.

von Falk B. (falk)


Lesenswert?

Siehe Interrupt.

von Bitflüsterer (Gast)


Lesenswert?

Karl Heinz schrieb:
> Bitflüsterer schrieb:
>
>> Alles Nähere erklärt unser Herr Karl Heinz,
>
> nicht wirklich.

Dann ziehe ich diese Bemerkung rückstandslos zurück.

von Sven B. (scummos)


Lesenswert?

Jim Meba schrieb:
>
1
volatile

Woher kommt eigentlich dieses schwachsinnige Gerücht, dass volatile 
irgendeinen Einfluss auf den Scope von Variablen hat? Das habe ich jetzt 
schon mehrmals gehört.

von Karl H. (kbuchegg)


Lesenswert?

Sven B. schrieb:
> Jim Meba schrieb:
>>
1
volatile
>
> Woher kommt eigentlich dieses schwachsinnige Gerücht, dass volatile
> irgendeinen Einfluss auf den Scope von Variablen hat? Das habe ich jetzt
> schon mehrmals gehört.

na ja

wenn man das gepostete 'beispiel' seeehr zu Gunsten des TO auslegt
1
Interrupt
2
{
3
Zaehler++;
4
}
5
void main(void)
6
int Zaehler=0;
7
{
8
do while Schleife
9
}

in Gedanken die 70 fehlenden Bestandteile ergänzt und alle die 
potentiellen Fehler, die ein echter C Compiler anmerken würde ignoriert 
und wie gesagt alle Augen zudrückt (auch die Hühneraugen) und den Code 
umstellt, dann könnte man bei einer Variante des geposteten Code landen, 
in der tatsächlich volatile die Lösung sein könnte.

Aber.
Mein Vater glaubt auch, dass ein Schachprogramm so aussieht
1
int main()
2
{
3
  play( "chess" );
4
}
und denkt, damit wäre alles gesagt. Aber. Der ist 80 und hat nicht 
wirklich die Absicht das alles noch zu lernen.

von Oliver S. (oliverso)


Lesenswert?

Karl Heinz schrieb:
> Mein Vater glaubt auch, dass ein Schachprogramm so aussiehtint main()
> {
>   play( "chess" );
> }

Ganz ehrlich, der Ansatz ist nicht der schlechteste, und so sollte ein 
Hauptprogramm in etwas aussehen. Die Details kann man dann Schritt für 
Schritt ausarbeiten.

Oliver

von jz (Gast)


Lesenswert?

Karl Heinz schrieb:
>
1
> int main()
2
> {
3
>   play( "chess" );
4
> }
5
>

Du hast
1
return 0;
vergessen ;)

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

jz schrieb:
> Du hast
>
1
> return 0;
2
>
> vergessen ;)

Nein, nicht Karl Heinz. Sein Vater! ;-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.