www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Variablenproblem


Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe folgendes Test-Programm geschrieben, um zu überprüfen ob meine
Interruptebenen funktionieren:

#include <std.h>
#include <log.h>
#include <swi.h>
#include <stdio.h>
#include <stdlib.h>

#include "volumecfg.h"
#include "volume.h"

void feldschw();
void stromdrehzreg();
void parameter();

int a;
int b;

/*
 * ======== main ========
 */
Void main()
{
    a=0;
    b=0;
    LOG_printf(&trace,"volume example started\n");
    return;
}

/*
 *  ======== parameter ========
 */
void parameter()
{
    a=1;
    b=1;
    LOG_printf(&trace,"a=%d\n",a);
    LOG_printf(&trace,"b=%d\n",b);
}

/*
 *  ======== feldschw ========
 */
void feldschw()
{
    a=2;
    b=2;
    LOG_printf(&trace,"a=%d\n",a);
    LOG_printf(&trace,"b=%d\n",b);
}

/*
 *  ======== stromdrehzreg ========
 */
Void stromdrehzreg()
{
    a=3;
    b=3;
    LOG_printf(&trace,"a=%d\n",a);
    LOG_printf(&trace,"b=%d\n",b);
    SWI_dec(&Feldschw_SWI);   /* post Feldschw_SWI software interrupt
*/
}


Soweit so gut, das Programm läuft und gibt mir auch was aus. Allerdings
habe ich mich etwas gewundert, denn eigentlich sollten (nach meiner
Vorstellung hier für a und b entweder 1,2 oder 3 ausgegeben werden (je
nachdem, welche Funktion gerade ausgeführt wird. )
Nun ist es jedoch so, daß diese Ausgabe nicht immer statt findet,
obwohl die Funktion laut Execution Graph (da beobachte ich die
Ausführung der Interrupte) aufgerufen wird.
Außerdem erhalte ich eine andere Ausgabe, als erwartet:
Wenn die Ausgabe von parameter() ausgeführt wird, erhalte ich für a und
b den Wert -31749.
Wenn stromdrehzreg() ausgeführt wird, so erscheint in der Ausgabe für a
und b zunächst 1, bei zweiten Aufruf 2, beim dritten 3,usw.
Ich habe bisher nur reines C programmiert (am PC) und kann mir das hier
nicht erklären... könnt ihr mir helfen?

Gruß, Martin

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... ich benutze den TMS320F2812 von TI und den CodeComposer.

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.