Hallo an alle,
es geht um einen möglichen Compilerfehler des avr-gcc bzw. der avr-libc.
Die Schaltung hat den ATMEGA32 auf dem Evaluationsboard 2.0 von Pollin.
Angesprochen werden soll die Leuchtdiode auf PortD.5.
Folgendes Progrämmchen (avr.S)
1 | #include <avr/iom.h>
|
2 |
|
3 | .text
|
4 | .global main
|
5 |
|
6 | main:
|
7 | ldi r16, (1 << PORTD5)
|
8 | out DDRB, r16
|
9 | out PORTD, r16
|
10 | ret
|
wird durch
> avr-gcc -Os -mmcu=atmega32 -I/usr/avr/include -o avr.elf avr.S
so übersetzt:
1 | ...
|
2 | main:
|
3 | ldi r16, 0x20
|
4 | out 0x31, r16
|
5 | out 0x32, r16
|
6 | ret
|
Problem sind die Registeradressen von DDRD und PORTD: sie entsprechen
nicht 0x11 und 0x12 der Headerdefinition, was aber die richtigen
Addessen wären!
Ich nutze avr-gcc 3.4.3 und die dazugehörige avr-libc des Ubuntu Dapper
Drake Pakets und wollte dabei bleiben...
Hat jemand eine Idee?