Atmega32 mit dem AVR-GCC in Assembler programmieren
Hallo zusammen,
ich möchte jetzt, nach dem ich immer nur C programmiert habe, mich auch einmal mit Assembler auseinandersetzen. Und dafür den AVR-GCC, der ja schon installiert ist, verwenden.
Code hab ich folgenden:
main.S
Code:
#include <avr/io.h>
.text ; was nun folgt, gehört in den FLASH-Speicher
.global main ; main ist auch in anderen Modulen bekannt
main: ; zu 'main' wird nach Reset hingesprungen
LDI R24, 255 ; der wert "255" = FF ins allgemeine Register R24
OUT DDRD, R24 ; das kommt ins Controll-register f. PortD
; dadurch ist das Port auf OUTPUT gestellt
Hauptschleife: ; ein Sprunglabel
LDI R24, 255 ; der wert "255" = FF ins allgemeine Register R24
OUT PORTD, R24 ; schreiben wir nach PortD
rjmp Hauptschleife ; immer wiederholen
Zum übersetzen benutze ich folgendes:
Code:
avr-gcc -o main.elf -mmcu=atmega32 main.S
avr-objcopy -O ihex -j .text -j .data main.elf main.hex
Läuft ohne Fehler durch. Das ganze wird dann mit AVRDUDE auf den Atmega32 geklatscht.
Der Controller sitzt auf einem AVR-Funk-Evaluationsboard von Pollin. Dort sind LED1 und LED2 an PD5 und PD6 angeschlossen.
Die sollten jetzt eigentlich auch Leuchten. Tun sie aber nicht! :-(
Weis jemand Rat?
Viele Grüße und vielen Dank schon mal
-schumi-
PS: OS = Ubuntu 11.10; AVR-GCC-Version = gcc-Version 4.5.3 (GCC)