mikrocontroller.net

Forum: Compiler & IDEs Avr Studio Simulator C Code


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich habe am Wochenende meine ersten richtigen Gehversuche in GCC und
AVR gemacht. Verschiedene Unterroutinen ohne Parameteruebergabe und mit
übergaben. Nun wollte ich gerne den Code per Avr Studio 4.08
Simulieren/Debuggen. Beim durch Steppen springt aber das Programm
unwillkürlich in die Main Prozedur.


Gibt es Probleme bei AVR Studio und GCC beim simulieren?

Ich hoffe jemand kann mir da weiterhelfen .


Mfg

Dirk

Autor: Fiffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk,

>Beim durch Steppen springt aber ds Programm unwillkürlich in die
> Main Prozedur.

Wie meinst du das ?

Beim laden der cof-datei ist das normal ...



Gruß

Fiffi

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ja ich lade die ext. coff Datei mit AVR Studio .....

wie kann ich den meinen C Code richtig simulieren mit AVr Studio 4.08?

Mfg

Dirk

Autor: Fiffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk,

>wie kann ich den meinen C Code richtig simulieren mit AVr Studio
> 4.08?

Hast du ein konkretes Problem ?

>Gibt es Probleme bei AVR Studio und GCC beim silulieren ?

Nein, nur beim simuliern von Bootloadern, da das AVR-Studio nur die
.text section lädt.

Du must nur ein "make extcof" ausführen. (Sample-Makefile ...)


Gruß

Fiffi

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ein aktuelles Prolembeispiel kann ich leider erst senden wenn ich
Feierabend habe. ;) Ich sende mal ein Beispiel heute abend .


Mfg

Dirk

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

so Feierabend ;) Es kann sich natuerlich auch um ein Codefehler
handeln, da ich noch blutiger C Anfaenger bin kann ich dieses leider
nicht ausschliessen. Bitte habt also Nachsicht.

Fehler: Das Programm arbeitet laut Simulator die Subs nicht ab ...
sondern springt sofort wieder in die Mainroutine.

MFG

dirk

Code:
#include "avr/io.h"
#include "avr/delay.h"
#include "inttypes.h"

uint8_t   INDATA;
uint8_t   OUTDATA;
uint8_t    NUMBITS;


void txbits(char OUTDATA)
{
char i;
for ( i = 0; i < 8; i++)
  {
  sbi(PORTC,1);
    _delay_loop_2(1122);
    cbi(PORTC,1);
    _delay_loop_2(1122);
    if((OUTDATA & 1) == 1)
    {
      _delay_loop_2(2244);
    }
  }
  return;
}

void command(char INDATA)
{
sbi(PORTC, 1);
_delay_loop_2(18000);
cbi(PORTC, 1);
_delay_loop_2(9000);
txbits(0x82);
txbits(0x17);
txbits(INDATA);
return;
}




int main(void)
{
  outp (0xFF, DDRC);



  sbi(PORTC,0);
  cbi(PORTC,0);
for (;;)
  {                           /* loop forever */
    cbi(PORTC,0);
    command(0x06);
    sbi(PORTC,0);
  }
}

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hat den niemand eine Idee?


Mfg

Dirk

Autor: Fiffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk,

>Beim durch Steppen springt aber das Programm
>unwillkürlich in die Main Prozedur.

was meinst du damit ?


Poste bitte mal den Code, Makefile, cof-datei ...


Gruß

Fiffi

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

@Fiffi ok das mache ich ..... erstmal warten bis Feierabend ist.

Was ich damit meine ist: In der Main Procedure rufe ich die Funktion
Command mit dem Wert 0x06 auf.
Im Simulator springt er dann in die Funktion, sobald er aber ein Befehl
in der Funtkion abarbeiten soll springt er wieder in die
Endlossschleife von der Mainprozedure.
Er arbeitet garnicht die Befehle in den Unterprogrammen (command,
Txbits ab)

Aber ich sende heute abend mal meine Coff usw.


Mfg

Dirk

Autor: Dirk (Gast)
Datum:
Angehängte Dateien:
  • C.rar (5,53 KB, 41 Downloads)

Bewertung
0 lesenswert
nicht lesenswert
Hi,

so endlich Feierabend .... anbei mal die Filez.


Mfg

Dirk

Autor: Fiffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk,

mach mal bitte ein Archiv daraus, was jeder öffnen kann ... (zip,
tar.gz, ...)


Gruß

Fiffi

Autor: Dirk (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

sry... anbei das zip

Autor: Fiffi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk,

bei mir verhält sich dein Programm genauso wie bei dir. Der "Unsinn"
kommt vom GCC. (bin mal im assembler durchgesteppt)

Der erzeugt Code ergibt überhaupt keinen Sinn ...

Das Problem kommt von den delay Routinen. Diese habe ich auch noch nie
verwendet.


Ich Anhang befindet sich eine Version (ohne delays) die bei mir
vernünfig läuft.

Ich würde Zip-Datei mal an die Entwickler senden...


Gruß

Fiffi

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich bedanke mich fuer deine Hilfe. Ich werde mal den Entwickler mein
zip file zukommen lassen.


Mfg

Dirk

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die delay()-Routinen sind inline-Funktionen.  Sowas kann COFF nicht
darstellen, da in diesem Falle Code generiert wird, der nicht mehr zur
C-Datei, sondern zu einer .h-Datei gehört.  Wenn Du mal ein
avr-objdump -g auf das ELF-File machst, müßtest Du das ganz gut
erkennen können, daß innerhalb einer Funktion zwischen verschiedenen
Dateien umgeschaltet wird.  COFF kann diese Umschaltung nicht, da sich
dort die Zeilennummern einer Funktion immer auf den Anfang der
Funktion beziehen und damit immer auf die Quelldatei, in der der
Funktionskopf stand.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,


wie kann man den sowas sonst Bewerkstelligen? oder gibt es da keine
Moeglichkeit?


Mfg

Dirk

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen richtigen Debugger benutzen, der ein vernünftiges Objektformat
unterstützt. ;-)

(Ja, ich weiß, ist nicht ganz so einfach, wie sich das schreibt...)

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,


so da ich ja noch leider blutiger Anfaenger bin und fuer ASM fand ich
AVR Studio Simulator extrem gut..... Welchen Debugger soll ich den
nutzen fuer meinen C Code ? Gdb insight ?

Mfg

Dirk

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zumindest unterstützt GDB das ELF-Format in vollem Maße. ;-)

Aber mir ist schon klar, daß die Wahl der möglichen Simulatoren und
Emulatoren für den GDB nicht sonderlich üppig ist (SimulAVR, AVaRICE).

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.