Forum: Mikrocontroller und Digitale Elektronik m32def.inc:49: Error: expected comma after "SIGNATURE_000"


von Frank T. (frankatmicro)


Lesenswert?

Hallo zusammen.

Ich wollte gerade die Verbindung vom uc zu 7 Segment-Anzeigen 
ausprobieren und habe deshalb das erste Programm von 
http://www.mikrocontroller.net/articles/AVR-Tutorial:_7-Segment-Anzeige 
in den Editor kopiert.

Die Entwicklungsumgebung ist AVR-Eclipse. In einem .c Quellcode wird 
7-seg.asm includiert. In 7-seg.asm wird m32def.inc includiert.

Der Assembler-Aufruf mit den ersten Fehlermeldungen:
1
avr-gcc -x assembler-with-cpp -g2 -gstabs -mmcu=atmega32 -MMD -MP -MF"7-seg.d" -MT"7-seg.d" -c -o "7-seg.o" "../7-seg.asm"
2
m32def.inc: Assembler messages:
3
m32def.inc:49: Error: expected comma after "SIGNATURE_000"
4
m32def.inc:50: Error: expected comma after "SIGNATURE_001"
5
m32def.inc:51: Error: expected comma after "SIGNATURE_002"
6
m32def.inc:60: Error: expected comma after "SREG"
7
m32def.inc:61: Error: expected comma after "SPL"
8
m32def.inc:62: Error: expected comma after "SPH"
9
m32def.inc:63: Error: expected comma after "OCR0"
10
m32def.inc:64: Error: expected comma after "GICR"
11
m32def.inc:65: Error: expected comma after "GIFR"

Die entsprechenden Zeilen in m32def.inc:
1
; ***** SPECIFY DEVICE ***************************************************
2
.device ATmega32
3
#pragma AVRPART ADMIN PART_NAME ATmega32
4
.equ  SIGNATURE_000  = 0x1e
5
.equ  SIGNATURE_001  = 0x95
6
.equ  SIGNATURE_002  = 0x02
7
8
#pragma AVRPART CORE CORE_VERSION V2E
9
10
11
; ***** I/O REGISTER DEFINITIONS *****************************************
12
; NOTE:
13
; Definitions marked "MEMORY MAPPED"are extended I/O ports
14
; and cannot be used with IN/OUT instructions
15
.equ  SREG  = 0x3f
16
.equ  SPL  = 0x3d
17
.equ  SPH  = 0x3e
18
.equ  OCR0  = 0x3c
19
.equ  GICR  = 0x3b
20
.equ  GIFR  = 0x3a

Die Datei m32def.inc stammt von http://avr.8b.cz/inc/m32def.inc vom 
2011-02-09.

Weiß jemand, wie die Fehlermeldungen auszuräumen sind?

Gruß

Frank

: Verschoben durch Admin
von hp-freund (Gast)


Lesenswert?


von Frank T. (frankatmicro)


Lesenswert?

Ich wollte zuerst mit C uc's beschreiben und hatte deshalb AVR-Eclipse 
eingerichtet. Im Laufe der Voruntersuchungen kam ich dann aber zum 
Schluss, das ich lieber Assembler lernen möchte, was ja auch kein 
Problem sein sollte, da ja .asm in .c includiert werden können.
Jetzt scheint aber ein Kompatibilitätsproblem von m32def.inc zu 
bestehen, was mich zu folgenden grundsätzlichen Fragen führt:

1. Ist es möglich, in AVR-Eclipse mit .asm-Code uc's erfolgreich zu 
beschreiben?
2. Wie wird dann m32def.inc eingeführt?
3. Oder wie ist m32def.inc um zu formen, damit sie akzeptiert wird oder 
gibt es schon eine andere Datei, die das entsprechende Format hat?

Gruß
Frank

von hp-freund (Gast)


Lesenswert?

Assembler und Inline-Assembler, hier ist ein Startpunkt:

http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Assembler_und_Inline-Assembler

von Frank T. (frankatmicro)


Lesenswert?

So, ich habe erstmal die 7-seg.asm in 7-seg.sx umbenannt. Das hat 
erstmal die Anzahl der Fehler reduziert.

m32def.inc scheint eine falsche Fährte gewesen zu sein. Hatte ich aus 
einem Tutorial, das ich gerade durcharbeite. Habe wohl eine andere 
Entwicklungsumgebung.

Die richtige Einbindung der Definitionsdatei erfolgt durch 
-mmcu=atmega32, oder auch #include <avr/iom32.h>.

Das bringt aber leider immer noch eine ganze Reihe von Fehlern. Hier ein 
Auszug:
1
avr-gcc -Wall -g2 -gstabs -O0 -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu=atmega32 -DF_CPU=4000000UL -MMD -MP -MF"avr-sammlng-2.d" -MT"avr-sammlng-2.d" -c -o "avr-sammlng-2.o" "../avr-sammlng-2.c"
2
In file included from ../avr-sammlng-2.c:7:
3
../7-seg.sx:9: error: expected identifier or '(' before '.' token
4
../7-seg.sx:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Handler'
5
../7-seg.sx:16: error: expected '=', ',', ';', 'asm' or '__attribute__' before ':' token
6
../7-seg.sx:19: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'initialisieren'
7
../7-seg.sx:23: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'temp1'
8
../7-seg.sx:23: error: stray '$' in program
9
../7-seg.sx:23: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'Anzeige'
10
../7-seg.sx:23: error: stray '\303' in program
11
../7-seg.sx:23: error: stray '\244' in program

Die entsprechenden Zeilen im Code, beginnend mit Zeile 9:
1
.def zero  = r1
2
.def count = r16
3
.def temp1 = r17
4
5
.org 0x0000
6
           rjmp    main                ; Reset Handler
7
;
8
main:
9
           ldi     temp1, HIGH(RAMEND)
10
           out     SPH, temp1
11
           ldi     temp1, LOW(RAMEND)  ; Stackpointer initialisieren
12
           out     SPL, temp1
13
14
;
15
           ldi     temp1, $FF        ; die Anzeige hängt am Port D
16
           out     DDRD, temp1       ; alle Pins auf Ausgang
17
;
18
           ldi     count, 0          ; und den Zähler initialisieren

Ich weiß nicht, wo hier ein Fehler sein könnte, kann jemand 
weiterhelfen?

Gruß
Frank

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.