jbr
03.08.2006, 10:58
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(ATmega8)
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
// 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(ATmega8)
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