mikrocontroller.net

Forum: Compiler & IDEs In C erkennen, dass man im Simluator ist


Autor: Andree S, (amshh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin,

die Suche brachte mich nicht weiter ... also daher jetzt hier folgende 
Frage:

Ich benutze (seit wenigen Tagen, bin also noch recht grün) WINAVR GCC im 
AVRStudio 4. Wenn ich dort den Simulator benutze und im Programm 
Zeitschleifen habe, dauert das natürlich ziemlich lange. Der Simulator 
ist verständlicherweise im RUN-Mode nicht so schnell wie das Ziel-System 
(ATmega48). Daher ändere ich, wenn ich simulieren will, vorher einige 
Werte bzw. setze sie zurück, wenn ich das Programm in den Atmega 
übertragen will.

Gibt es eine Möglichekit (#ifdef ???) im GCC zu erkennen, ob man im 
Simulator ist ? Dann könnte ich nämlich davon abhängig die Werte für 
beide Arten einstellen. Und würde nicht jedesmal dumm schauen, wenn im 
Zielsystem nichts funktioniert, weil ich vergessen habe, die Werte 
wieder umzusetzen.

Vielen Dank

Gruß aus Hamburg
Andree

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andree Stolze schrieb:

> Gibt es eine Möglichekit (#ifdef ???) im GCC zu erkennen, ob man im
> Simulator ist ?

Nein.
Denn wenn das Programm compiliert wird, steht ja noch nicht fest wo es 
läuft.
Und ein Simulator soll sich möglichst identisch zur realen Hardware 
verhalten

> Dann könnte ich nämlich davon abhängig die Werte für
> beide Arten einstellen. Und würde nicht jedesmal dumm schauen, wenn im
> Zielsystem nichts funktioniert, weil ich vergessen habe, die Werte
> wieder umzusetzen.

du kannst dir ja selber ein #define machen und alle Dinge davon abhängig 
machen. Dann ist es mit dem auskommentieren eines #define getan um den 
Code umzustellen. Automatisch gehts dann zwar immer noch nicht, aber 
zumindest deutlich angenehmer.

Autor: Andree S, (amshh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielen Dank erstmal.

>Nein.
>Denn wenn das Programm compiliert wird, steht ja noch nicht fest wo es
>läuft.
>Und ein Simulator soll sich möglichst identisch zur realen Hardware
>verhalten

Nein, natürlich nicht. Aber es hätte ja sein können, dass der 
Studio-Simulator beim Start irgend etwas setzt, das man hätte abfragen 
können.

>du kannst dir ja selber ein #define machen und alle Dinge davon abhängig
>machen. Dann ist es mit dem auskommentieren eines #define getan um den
>Code umzustellen. Automatisch geht

Das ist allerdings ein Vorschlag, auf den ich auch selbst hätte kommen 
können .... :-(( Danke !

A.

Autor: Michael H. (michael_h45)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Informier dich doch mal über Proteus ISIS.

Ist ein Schaltungssimulator, der ein Plugin fürs AVR-Studio mitbringt.
Du kannst deine komplette Schaltung inklusive AVR aufbauen und dann aus 
dem AVR-Studio per Proteus voll debuggen.
Sprich: Breakpoints, Register lesen, Variablen beobachten, Single Step, 
uswusf.

Zusätzlich kann Proteus Breakpoints einbauen. Z.B. wenn eine Spannung 
überschritten, eine Zeit abgelaufen oder der Wert einer Variable 
verändert ist.

Uswusf.
Ein geniales Tool, das den vollen Funktionsumfang in der Demo 
mitbringt. Allerdings kann man nicht speichern. Den PC also nicht 
ausschalten, sondern nur in Powerdown fahren und das Problem ist 
"umgangen".

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael H. schrieb:
> Informier dich doch mal über Proteus ISIS.

Das hat doch aber mit seinem Problem nun rein gar nichts zu tun.
Die vorhandenen Warteschleifen brauchen dann trotzdem noch ewig.

Autor: Mirko (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst ja einen nicht benutzten I/O Pin abfragen - in der Schaltung 
ist er auf Masse, im Simulator legst du ihn (virtuell) auf High.

Dann kann dein Programm entsprechend reagieren.

Viele Grüße,

Mirko

Autor: Michael H. (michael_h45)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch schrieb:
> Das hat doch aber mit seinem Problem nun rein gar nichts zu tun.

Naja, das "rein gar nichts" will ich mal bestreiten.
- Der TO will simulieren, sonst hätte er die Schaltung aufgebaut.
- Der Simulator im AVR-Studio ist weit von Echtzeit weg. Proteus kann 
Echtzeit. Die Vermutung, dass eine reale Warteschleife in Echtzeit 
abwartbar ist, ist nicht verwegen.

Ja, meine Antwort hat wenig mit dem Betreff zu tun, ich bin aber 
trotzdem der Meinung, dass sie dem TO helfen kann.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael H. schrieb:
> - Der Simulator im AVR-Studio ist weit von Echtzeit weg.

Das kannste aber laut sagen.

Ein uralter 8051-Simulator, war zwar in DOS, lief aber schon auf nem 
100MHz Pentium in Echtzeit (8051 bei 12MHz).
Warum das heutzutage bei 3GHz nicht mehr gehen soll, ist mir ein Rätsel.


Peter

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael H. schrieb:

> - Der Simulator im AVR-Studio ist weit von Echtzeit weg.

Wieso? Er braucht eben echt Zeit zum Simulieren ;-)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael H. schrieb:
> Proteus kann
> Echtzeit.

Nun, dann hättest du vielleicht genau dieses Feature in deinem Beitrag
nennen sollen, statt allerlei Dinge, nach denen der OP nicht gefragt
hatte. ;-)  Ist natürlich richtig, auf diese Weise kann man das
Problem durchaus auch lössen.

Autor: Michael H. (michael_h45)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, da muss ich dir Recht geben. Ich bin nur immer wieder mal (zu) 
begeistert von dem Tool.

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.