Forum: Compiler & IDEs [AVR-GCC] Fehler oder Dummheit?


von Max D. (Firma: No RISC, no fun.) (metalfan)


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)

von Markus E. (engelmarkus)


Lesenswert?

Bist du sicher, dass hier
> if((info & 1<<FE)&(datatemp==0)){
kein doppeltes && rein soll?

von nur mal so (Gast)


Lesenswert?

>if((info & 1<<FE)&(datatemp==0)){
if((info & 1<<FE) && (datatemp==0)){
                  ^^

Was ist FE?

von Max D. (Firma: No RISC, no fun.) (metalfan)


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...

von Oliver (Gast)


Lesenswert?

Max D. schrieb:
> ich hatte
> die mail and den gcc-support schon fast fertig geschreiben

Nur rein interessehalber: Über welche email erreicht man den?

Oliver

von Max D. (Firma: No RISC, no fun.) (metalfan)


Lesenswert?

gcc-help@gcc.gnu.org (von der Seite: http://gcc.gnu.org/), is zwar vom 
PC-Gcc, aber ich hätte da hingeschrieben (ermangels AVR-spezifischer 
adresse)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.