[AVR-GCC] Fehler oder Dummheit?

OP (Firma: No RISC, no fun.) #2104491
Lesenswert?

Ich bin dabei mir nen DMX-Decoder zu schreiben und im URAT-Interrupt 
produziert der Gcc reproduzierbar einen Fehler indem er Variablen 
übergeht:
Auszug aus main.c:
1
  ISR(USART_RXC_vect){
2
  uint8_t info = UCSRA; //Infos zu den Daten -> Zwischenspeicher
3
  uint8_t datatemp = UDR; //angekommene Daten -> Zwischenspeicher
4

5
  if((info & 1<<FE)&(datatemp==0)){
6
    recBuf[1]=255;
7
  }
8
  else recBuf[1]=0;
9

10
}
wird zu:
Auszug aus lss Datei:
1
0000007c <__vector_11>:
2
  7c:  1f 92         push  r1
3
  7e:  0f 92         push  r0
4
  80:  0f b6         in  r0, 0x3f  ; 63
5
  82:  0f 92         push  r0
6
  84:  11 24         eor  r1, r1
7
  86:  8f 93         push  r24
8
  88:  8b b1         in  r24, 0x0b  ; 11
9
  8a:  8c b1         in  r24, 0x0c  ; 12
10
  8c:  10 92 63 00   sts  0x0063, r1
11
  90:  8f 91         pop  r24
12
  92:  0f 90         pop  r0
13
  94:  0f be         out  0x3f, r0  ; 63
14
  96:  0f 90         pop  r0
15
  98:  1f 90         pop  r1
16
  9a:  18 95         reti

bei 88 und 8a liest er die beiden Usart register ein, aber eben in das 
gleiche Register :/ ...

Eckdaten:
IDE = Eclipse helios
AVR-GCC = 4.3.5
EDIT: AVR = MEGA8

Aufruf (aus dem makefile):

avr-gcc -Wl,-Map,DMX_to_IR.map -mmcu=atmega8 -o"DMX_to_IR.elf" $(OBJS) 
$(USER_OBJS) $(LIBS)
OP (Firma: No RISC, no fun.) #2104511
Lesenswert?

LOL, jetz liest in 24 und 25 :D
Ich war so doof !!
danke...

PS: Ihr du hast mich grade vor einer peinlichkeit gerettet (ich hatte 
die mail and den gcc-support schon fast fertig geschreiben)

edit: FE = FramingError = bit in UCSRA

thus spoke the basicer: "never copy an expression from another language" 
(oder so ähnlich), man merkt halt ich bin noch von Bascom verdorben...

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