IAR-Compiler

Gast #846
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))
Gast #848
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
Gast #850
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.