Forum: Mikrocontroller und Digitale Elektronik avr-studio macro


von Fritz S. (bastler4)


Lesenswert?

Hallo Forum
Habe mit macro ein problem.
arbeite mit avr-studio 4.18 und XP. uProcessor ist m128
nachfolgendes macro lief schon zig-mal ohne beanstandung

.macro gebtextaus   ;1. para ist textadresse verw.Z + serout
    ldi ZH,high(2*@0)
    ldi ZL,low(2*@0)
    nop
    rcall txdstr
    nop
.endmacro

nun kopierte ich dieses macro und erweiterte es so

.macro ERRorTextStor
    nop
    ldi ZH,high(2*@0)  <<----dies ist zeile 47
  mov tmp,ZH
    sts @1,tmp
    ldi ZL,low(2*@0)
  mov tmp,ZL
    sts @1,tmp
    nop
    sbr FlagR,(1<<errorflag)
  nop
    rcall txdstr
    nop
.endmacro
und nun will der  assembler nicht mehr mit nachfolgender meldung.

C:\xxxx.asm(47): error: syntax error, unexpected SYMBOL

das begreife ich nicht, kann da jemand mir helfen

Gruss
bastler4

von Spess53 (Gast)


Lesenswert?

Hi

>das begreife ich nicht, kann da jemand mir helfen

Normalerweise folgt bei den Fehlermeldungen noch eine Zeile mit der 
Zeilennummer des Aufrufs. Die wäre auch interessant, da der Fehler auch 
dort liegen kann.

MfG Spess

von Fritz S. (bastler4)


Lesenswert?

Hallo Spess53
vielen Dank für die schnelle Reaktion

hier die vollständige Fehlermeldung
---------------------
Copyright (C) 1995-2009 ATMEL Corporation

C:\PROJEKTE\Saege_bs2\saeg2.asm(5): Including file 
'C:\Projekte\Saege_bs2\m128_iv_init.asm'
C:\Projekte\Saege_bs2\m128_iv_init.asm(154): Including file 
'C:\Programme\Atmel\AVR Tools\AvrAssembler2\Appnotes\m128def.inc'
C:\Projekte\Saege_bs2\m128_iv_init.asm(47): error: syntax error, 
unexpected SYMBOL
C:\PROJEKTE\Saege_bs2\saeg2.asm(414): info: macro 'ERRorTextStor' called 
here

Assembly failed, 1 errors, 0 warnings
-----------------------------
hier zeile 414
ERRorTextStor tzeitueberlauf MASCHINENERROR_a

und nochmals das macro
---------------------------
;1. para ist textadresse 2. ist ziel z.bsp. MASCHINENERROR_a
.macro ERRorTextStor
    nop
    ldi ZH,high(2*@0)    <<<<<<<<<<<<-----dies ist zeile 47
  mov tmp,ZH
    sts @1,tmp
    ldi ZL,low(2*@0)
  mov tmp,ZL
    sts @1,tmp
    nop
    sbr FlagR,(1<<errorflag)
  nop
    rcall txdstr
    nop
.endmacro
-----------------------------------------
warum geht ldi ZH,high(2*@0) einmal anstandslos und mit 2 Parametern
nicht mehr. als Vergleich das ausgangs-macro wo es funzt
-----------------
.macro gebtextaus   ;1. para ist textadresse
    ldi ZH,high(2*@0)
    ldi ZL,low(2*@0)
    nop
    rcall txdstr
    nop
.endmacro
--------------------
mit freundlichem Gruß
fritz (bastler4)

von spess53 (Gast)


Lesenswert?

Hi

>hier zeile 414
>ERRorTextStor tzeitueberlauf MASCHINENERROR_a

und wie ist 'tzeitueberlauf' definiert?

MfG Spess

von Fritz S. (bastler4)


Lesenswert?

Hallo Spess53

tzeitueberlauf  ist eine Flash-Speicher-Adresse, wo der Text

per .db " dis ist ein text ",10,13,0
hinterlegt ist
MASCHINENERROR_a  ist dagegen eine sram- speicherstelle per
MASCHINENERROR_a: .byte 2 ;erzeugt

------
ich habe den Inhalt des macros
an die ursprüngliche zeile kopiert und @0 @1 durch richte
Namen ersetzt, so wie es eigentlich der compiler macht (machen sollte)
und es geht ohne Warnung zu compilieren.

---das macht die Sache für mich nicht durchsichtiger.

Um sicherzugehen,dass sich nicht ein unsichtbares Steuerzeichen
das den compiler verwirrt (hatte ich schon mal vor längerer Zeit)
in den macro-text  eingeschlichen hat,habe ich beide macros
in eine seperate Datei kopiert und mit UltraEdit im hex-modus angesehen,
konnte aber nichts derartiges entdecken!

mit freundlichem Gruß
fritz (bastler4)

von spess53 (Gast)


Lesenswert?

Hi

>hier zeile 414
>ERRorTextStor tzeitueberlauf MASCHINENERROR_a
                             ^
Da fehlt ein Komma.

MfG Spess

von Fritz S. (bastler4)


Lesenswert?

Hallo Spess53

peinlich peinlich,einfach nur peinlich. ich schäme mich.
entsinne mich dunkel, daß sowas schon mal war.

Ihnen großes Lob und Dank, auch für die schnelle Antwort.

Darf ich fragen, was Sie beruflich machen ?

mit freundlichem Gruß
Fritz

von spess53 (Gast)


Lesenswert?

Hi

>Darf ich fragen, was Sie beruflich machen ?

Ich arbeite in einer kleineren Elektronikfirma.

MfG Spess

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.