mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik IAR-Compiler


Autor: Timo Engelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

hat einer von Euch schon mal mit dem IAR-Compiler
den AVR programmiert?
Ich hab da ein Problem mit der Codeoptimierung.
Das folgende C-Programm wird in den darunterliegenden
Assembler-Code umgesetzt. Aber der Asm-Code führt nicht die
mit dem C-Code programmierte Funktion aus.

Stell ich die Optimierung aus klappt es.

Danke für Eure Antworten,
Grüße Timo


//--- Includes:
#include<inavr.h>
#include<io8515.h>

//--- Macros:
#define ClearBit(ADRESS,BIT) (ADRESS&=~(1<<BIT))
#define SetBit(ADRESS,BIT) (ADRESS|=(1<<BIT))
#define TestBit(ADRESS,BIT) ((ADRESS&(1<<BIT)))

//--- Main Routine:
void main(void)
{
  unsigned char Temp=0;

  //--- µC Configuration:
  UBRR=51;       // Baudrate
  SetBit(UCR,3); // TX enable
  SetBit(UCR,4); // RX enable

  //--- Mainloop:
  while(1)
  {
    while(!TestBit(USR,7)); // Warten bis RXC-Flag gesetzt wurde
    Temp=UDR;               // Read out UART
    __no_operation();       // sonst löscht der Optimierer den folgenden 
Befehl
    UDR=Temp;               // Write to UART (ECHO)
  }
}



   *0000000D:main
   *0000000D:
   *0000000D:  unsigned char Temp=0;
   +0000000D: E010      LDI     R17,0x00          ; 0x00 = 0b00000000 = 
0
   *0000000E:  UBRR=51;
   +0000000E: E303      LDI     R16,0x33          ; 0x33 = 0b00110011 = 
51
   +0000000F: B909      OUT     0x9,R16
   *00000010:  SetBit(UCR,3);
   +00000010: 9A53      SBI     0xA,3
   +00000011: E001      LDI     R16,0x01          ; 0x01 = 0b00000001 = 
1
   *00000012:  SetBit(UCR,4);
   +00000012: 9A54      SBI     0xA,4
   +00000013: E001      LDI     R16,0x01          ; 0x01 = 0b00000001 = 
1
   *00000014:    while(!TestBit(USR,7))
   +00000014: 995F      SBIC    0xB,7
   *00000015:    Temp=UDR;
   +00000015: B11C      IN      R17,0xC
   *00000016:    __no_operation();
   +00000016: 0000      NOP
   *00000017:    UDR=Temp;
   +00000017: B91C      OUT     0xC,R17
   +00000018: CFFB      RJMP        while(!TestBit(USR,7))

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der Sourcecode ist anscheinend ein bisschen kaputt angekommen. 
"Sourcecode bitte nur als Anhang posten" steht nicht nur zum Spaß da! 
;-)

MfG
Andreas

Autor: Timo Engelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Joooppp,

sorry, werde es morgen im Geschäft nochmal posten.
Der interessante Teil, die Main-Loop ist aber gut zu lesen,
falls also einer eine Idee hat...

Bis dann.

Grüße Timo

Autor: BA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wofür ist dieses 7MB grosse IAR denn gut?

Autor: Timo Engelmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

IAR ist eine Firma, die Tools für µC-Entwicklung
herstellen. Eines davon ist die Embedded-Workbench.
Das ist eine Entwicklungsumgebung, also Editor
und Compiler. Sollte eigentlich ein echt super
Tool sein, IMO ist es aber bei weitem nicht
das viele Geld wert!
Der Editor wird z.B. von UltraEdit um Längen
geschlagen. Der Compiler ist wohl nur ohne
Optimierung brauchbar...
Also wohl GCC. Leider ist die Doku zum GCC
nicht so sehr berauschend. Zumindest fand ich nix,
mit dem ich innerhalb von einer halben Stunde ein
lauffähiges HEX-File und OBJ-File machen konnte.
Bin wohl zu blöd?!

Grüße Timo

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.