AVR Problem beim Zugriff auf Variable

Gast #2558157
Hallo zusammen,

ich habe Probleme beim Zugriff auf eine Variable, welche an mehreren 
Stellen verwendet wird.

Ich habe eine Datei config.h . In dieser habe ich die Variable 
definiert:
1
static volatile unsigned char VAR= 3;

Dann habe ich eine Datei isr.c, in der ich eben die Interrupts 
untergebracht habe. Als Beispiel:
1
ISR(INT6_vect)
2
{
3
  VAR= 1;
4
}

In der main.c steht Folgendes:
1
while(1)
2
    {
3
        switch(Var)               
4
        {
5
            case 0: LED_PORT_PORT ^= ( 1 << PA0 );    
6
                    VAR = 3;    
7
                    break;
8
          
9
            ...
10
            ...
11
        }
12
    }/* while(1) */

In der main.c und isr.c wird die config.h eingebunden:
1
#include  "config.h"

Allerdings tut sich da gar nix. Wenn ich die Zeile
1
LED_PORT_PORT ^= ( 1 << PA0 );
direkt in die ISR schreibe, funktioniert es. Irgendwas passt nicht bei 
der Übergabe der Variable VAR.

Blickt da jemand durch und sieht vielleicht, was ich da falsch mache?

Besten Dank!
Steffen
Steffen schrieb:

> Ich habe eine Datei config.h . In dieser habe ich die Variable
> definiert:
>
>
1
static volatile unsigned char VAR= 3;

Aha.
Und warum ist die static?

Staic an dieser Stelle ist das genaue Gegenteil einer globalen Variable.

Deine isr.c verfügt somit über eine VAR und deine main.c verfügt über 
eine Variable VAR. Beides sind aber nicht dieselben Variablen

config.h
1
extern volatile unsigned char VAR;

isr.c
1
#include "config.h"
2

3
volatile unsigned char VAR = 3;
4

5
...

main.c
1
#include "config.h"
2

3
...
Gast
Hallo,

das mit der Schreibtweise tut mir leid. Das ist beim Übertragen ins 
Forum passiert. Die Schreibweise stimmt schon, ist immer VAR.

Die Version von Karl Heinz Buchegger funktioniert wunderbar. Vielen 
Dank!

Das mit den volatile, static, extern usw. werde ich mir nochmal 
reinziehen.

Vielen Dank.

Grüße
Steffen

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.