Gelöst durch einfügen von nachfolgender Definition ins Assembler-File

// Das ist die Quick-Hack Version, mehr Infos unter include/avr/sfr_def.h
#define __SFR_OFFSET 0


Erstmal einen Guten Tag alle zusammen.

Mache mich gerade mit AVRStudio und AVR vertraut.

WIN-AVR und AVR-Studio aktuelle Version, Testboard von myAVR(ATmega

Reine C-Programme auch mit mehreren C-Modulen laufen problemlos. Ebenso reine Assembler-Programme bzw. C-Programme mit Inline-Code.

Irgendwie bekomme ich allerdings den Aufruf einer Ass.-Routine aus einem C-Prog nicht zum laufen.
Nachfolgend die beiden Module meines Testprogramms.
Compiliert und gelinkt wird das einwandfrei. Nur scheint der Aufruf nicht zu funktionieren. Wie gesagt als reines C- bzw. Assmblerprog geht das einwandfrei. Jemand eine Idee ?

Gruss
Jürgen

// avrTest.c
#include <avr/io.h>

extern void LEDsOn(void);

int main()
{
while(1)
LEDsOn();
}



// avrAsm.S

// Das ist die Quick-Hack Version, mehr Infos unter include/avr/sfr_def.h
#define __SFR_OFFSET 0

include "avr/io.h"

// Setze Bit 0,1,2 von Port-B auf an

.global LEDsOn

.func LEDsOn
LEDsOn:
push r16
ldi r16,0xff
out DDRB,r16
ldi r16, 0x7
out PORTB,r16
pop r16
ret
.endfunc

.end