Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Zugriff auf globale Variablen unter C Kategorie: Progr. Assembler, TaskingTools, OS (von Dominik - 26.02.2004 20:55)
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT_V2
Hallo Dietmar (und alle Anderen)!
Nachdem der letzte Thread ursprünglich mit einem anderen Problem (malloc, calloc,...) begonnen
hat und deshalb etwas irreführend sein könnte fange ich nochmal einen neuen an.

Ich möchte auf der CC2 unter C (Tasking EDE) auf globale Variablen zugreifen. Allerdings lassen
sich diese offensichtlich nicht beschreiben sondern nur lesen.

Ich habe unten einfach mal einen Quelltext als Beispiel angehängt. Das eigentliche Programm
ist aufwändiger, aber das Problem ist hierbei das gleiche:

Es handelt sich um den Quelltext aus Kapitel 11.6 "- Ein Speicheroszilloskop -" aus dem Buch
"Messen, Steuern, Regeln mit CC2" von B. Kainka und A. Helbig. Mit dem Unterschied, daÃ? nach
Empfang eines Zeichens von der PC Tastatur mit 'Receive' nur ein einzelnes Zeichen (hier die '9') in
die Character-Variable 'data' gespeichert und dann mit 'Send' 5 mal über die serielle Schnittstelle
ausgegeben werden soll. Das funktioniert auch wunderbar solange 'data' lokal deklariert ist. Sobald
man 'data' global deklariert (wie unten) wird nur noch der sinnlose Inhalt der Speicherzelle
ausgegeben. Verändern lä�t sich die Variable nicht. Es wird wohl auch kein Programm-Code
überschrieben, denn das Programm läuft zuverlässig aber nutzlos weiter. Die (hier auskommentierte)
'extern' Definition ändert nichts. Auch wenn man 'data' mit '_at(0x....)' an andere Stellen speichert
ändert sich nichts. Die Compiler-Einstellungen sind wie in oben genanntem Buch in Kapitel 11
(Also nichts besonderes verändert).

Noch etwas: Wenn man die Zeile 'for(n=0; n<5; n++)' entfernt, kommt beim Compilieren der Fehler:
'W 177: SECSIZE control: section 'C166_US' not found' (?!?!?). Vielleicht ist das ja interessant.

Hier der Quelltext:
-------------------------------------------------------------------------------------
#define REG164CI_NOOTP
#define REG164CI_NOPEC
#define REG164CI_NOCAN
#include "reg164ci.h"

char data;

void Send(char ch);
int Receive(void);
void Oszi(void);


void Send (char ch)
{ ................
}

int Receive ()
{.................
}

void Oszi (void)
{
//  extern char data;
  int n;
  IEN = 0;
  while(1 == 1)
  {
    n = Receive();
    data = '9';
    for(n=0; n<5; n++)
    Send(data);
  }
}
-------------------------------------------------------------------------------------

Bin ich vielleicht einfach nur zu blind um den Fehler zu sehen?

GruÃ?, Dominik


    Antwort schreiben


Antworten:

Re: Zugriff auf globale Variablen unter C (von Patrick - 23.09.2004 9:11)