R1 nicht richtig initialisiert - Bug im avr-gcc?

Gast #4164462
Lesenswert?
• ▲
▼
Hallo zusammen,

wenn ich das folgende Programm kompiliere und auf meinen ATmega16 lade, 
würde ich erwarten, dass an keinem der C-Pins eine Spannung anliegt. 
Allerdings kann ich mit dem Messgerät 5V an allen Pins messen.
1
#include <avr/io.h>
2

3
int main() {
4
    DDRC = 0xff;
5
    PORTC = 0x00;
6
    while(1) {}
7
}

Der Code ist folgendermaßen gebaut worden:
1
avr-gcc -D__AVR_ATmega16__ -o test.obj -Os test.c
2
avr-objcopy -j .text -j .data -O ihex test.obj test.hex
Das weglassen der -Os Option produziert längeren Assemblercode, aber 
dasselbe Ergebnis.

Ich habe die produzierte Binary dann mal disassembliert, mit folgendem 
Ergebnis:
1
.text
2
main:
3
ser     r24
4
out     0x14, r24       ; 20
5
out     0x15, r1        ; 21
6

7
; Referenced from offset 0x06 by rjmp
8
Label0:
9
rjmp    Label0

Wenn ich diese Assemblercode zu
1
.text
2
main:
3
ser     r24
4
out     0x14, r24       ; 20
5
ldi     r24,  0x00
6
out     0x15, r24       ; 21
7

8
; Referenced from offset 0x06 by rjmp
9
Label0:
10
rjmp    Label0
ändere und neu assembliere, funktioniert alles wie erwartet.

Der gcc geht also davon aus, dass r1 mit 0 initialisiert ist, aber das 
ist scheinbar nicht der Fall.

Liegt der Fehler im gcc, bei der Hardware oder in meinem Kopf?

Viele Grüße

Johannes
Beitrag #7416136 wurde von einem Moderator gelöscht.

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.