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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren