www.mikrocontroller.net

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


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

Bewertung
0 lesenswert
nicht 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:
  ISR(USART_RXC_vect){
  uint8_t info = UCSRA; //Infos zu den Daten -> Zwischenspeicher
  uint8_t datatemp = UDR; //angekommene Daten -> Zwischenspeicher

  if((info & 1<<FE)&(datatemp==0)){
    recBuf[1]=255;
  }
  else recBuf[1]=0;

}
wird zu:
Auszug aus lss Datei:
0000007c <__vector_11>:
  7c:  1f 92         push  r1
  7e:  0f 92         push  r0
  80:  0f b6         in  r0, 0x3f  ; 63
  82:  0f 92         push  r0
  84:  11 24         eor  r1, r1
  86:  8f 93         push  r24
  88:  8b b1         in  r24, 0x0b  ; 11
  8a:  8c b1         in  r24, 0x0c  ; 12
  8c:  10 92 63 00   sts  0x0063, r1
  90:  8f 91         pop  r24
  92:  0f 90         pop  r0
  94:  0f be         out  0x3f, r0  ; 63
  96:  0f 90         pop  r0
  98:  1f 90         pop  r1
  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)

Autor: Markus E. (engelmarkus)
Datum:

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

Autor: nur mal so (Gast)
Datum:

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

Was ist FE?

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

Bewertung
0 lesenswert
nicht 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...

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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

Bewertung
0 lesenswert
nicht 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)

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.