Forum: Mikrocontroller und Digitale Elektronik Error in AVR Studio


von Ralph M. (revolt3c)


Lesenswert?

hi@all,

habe ein problem mit dem avr studio:

1
;**********************************************************
2
.include "m8def.inc"  
3
  rjmp RESET     
4
;**********************************************************
5
6
RESET:
7
8
main:  ldi temp,low(RAMEND)  ; Stackpointer initialisieren
9
  
10
    out SPL,temp
11
12
13
programm:
14
15
  ldi  r16,0xFF
16
  out  DDRB,r16
17
18
19
  ldi  r16,1
20
  out  PORTB,r16
21
  
22
  ldi   r17,0xFF
23
  out  DDRC,r17
24
25
  in  r17,PINC
26
27
  or  r16,r17
28
  out  PORTB,r16
29
30
  rjmp  programm

wenn ich nun auf "build" gehe kommt imemr folgende fehlermeldung:

Desktop\Mikrocontroller\m8def.inc(323): error: Attempt to redefine 
keyword 'or'

woran liegt das? das or wird doch in der includedatei definiert?

von spess53 (Gast)


Lesenswert?

Hi

>wenn ich nun auf "build" gehe kommt imemr folgende fehlermeldung:

Ich nicht. Aber dein 'temp'-Register ist nicht definiert.

MfG Spess

von Z8 (Gast)


Lesenswert?

abgesehen davon ein M8 hat mehr als 256 Byte RAM

>    ldi temp,low(RAMEND)  ; Stackpointer initialisieren
>    out SPL,temp


wenn Du schon ..... dann bitte auch den Hight-Teil.

Ist zwar jetzt, in dem Fall, nicht wichtig.
Aber behalte ein Auge drauf.

.. aber absolut sinnfrei (sinnlos):

>  ldi   r17,0xFF
>  out   DDRC,r17
>  in    r17,PINC

- Warum wird die Portrichtung in der Schleife jedesmal
  neu gesetzt ?

von Johannes M. (johnny-m)


Lesenswert?

Nimm bitte den Assembler 2, bei dem sollte das Problem nicht mehr 
auftreten! Der Fehler entsteht dadurch, dass in der .inc-Datei ein 
Steuerbit "OR" heißt. Und das kollidiert mit dem Befehl or. Stelle in 
den Assembler Options den Assembler 2 ein, und es werden die neueren 
.inc-Dateien benutzt, in denen das Bit "DOR" heißt. Den ollen Assembler 
1 sollte man gar nicht mehr benutzen.

von Ralph M. (revolt3c)


Lesenswert?

hallo johnny,

assembler 2 ist angewählt. problem hat sich erledigt, habe noch ne 
m8def.inc heruntergeladen und siehe da es geht.

@z8: sobald ich den high teil dazu mach bekomme ich folgende 
fehlermeldung:

Mikrocontroller\1.asm(14): error: syntax error, unexpected '('

jetzt hat er plötzlich ein problem mit der klammer? die ist doch im 
lowteil auch schon vorhanden.

1
;**********************************************************
2
.include "m8def.inc"  
3
rjmp RESET   
4
;**********************************************************
5
6
RESET:
7
8
9
.def temp = r16
10
11
main:    ldi temp,low(RAMEND)  ; Stackpointer initialisieren
12
      out SPL,temp
13
14
      ldi  r16,hi8(RAMEND)
15
      out  SPH,r16
16
17
18
19
20
richtung:
21
22
  ldi  r16,0xFF
23
  out  DDRB,r16
24
25
  
26
  ldi r17,0x00
27
  out  DDRC,r17
28
29
programm:
30
31
32
  ldi  r16,1
33
  out  PORTB,r16
34
35
  in  r17,PINC
36
37
38
  cp r16,r17
39
40
  breq step
41
  
42
  rjmp programm
43
44
step:
45
46
  ldi  r16, 0xFF
47
  out  PORTB,r16
48
49
  rjmp  step

von Turbotoni (Gast)


Lesenswert?

ich würds mal nur mit Hi anstelle Hi8 versuchen

von Johannes M. (johnny-m)


Lesenswert?

> ldi  r16,hi8(RAMEND)
Vielleicht mal in die Doku schauen? Wenn das Low-Byte low heißt, wie 
groß ist dann wohl die Wahrscheinlichkeit, dass das High-Byte hi8 
heißt? Nicht sehr groß, würde ich sagen...

von Johannes M. (johnny-m)


Lesenswert?

Turbotoni wrote:
> ich würds mal nur mit Hi anstelle Hi8 versuchen
Das würde aber nichts daran ändern, dass es eine Fehlermeldung gibt...

BTW: lo8 und hi8 gibt es zwar auch, aber nicht im 
ATMEL-AVR-Assembler...

von Ralph M. (revolt3c)


Lesenswert?

hab den 8er schon entfernt ;) problem aber dennoch vorhanden.

von Turbotoni (Gast)


Lesenswert?

man sollte etwas mehr lesen :-)
oder auch selber mal probieren
mit High funzt die ganze sache

MfG Turbotoni

von Z8 (Gast)


Lesenswert?

Du bist unter "Vista" unterwegs!?
Stimmts??

mfg Z8

von tobi (Gast)


Lesenswert?

Folgendes Rahmenprogramm würde ich verwenden:
1
        .INCLUDE "m8def.inc"
2
        .DEF  tmp=r16
3
        .CSEG
4
        rjmp  start
5
        .ORG  $2A
6
start:  clr   tmp;
7
        ldi   tmp,LOW(RAMEND)
8
        out   SPL,tmp
9
        ldi   tmp,HIGH(RAMEND)
10
        out   SPH,tmp
11
        ...

Mit einfach nur HIGH und LOW gehts.

von Johannes M. (johnny-m)


Lesenswert?

Ralph Müller wrote:
> hab den 8er schon entfernt ;) problem aber dennoch vorhanden.
Hmmm, logisches Denken ist heute abend nicht Deine Stärke, gell?

von Z8 (Gast)


Lesenswert?

>hab den 8er schon entfernt ;) problem aber dennoch vorhanden.

Habe mal die 8 entfernt und durch den AVR Ass. geschickt. Ohne Fehler!

Starte mal das AVR-Studio mit der rechten Mouse-Taste mit der
Option "als Admin ausführen". Danach sollte sich die Quelle
auch unter Vista mit dem AVR-Studio ass. lassen. :)

von Johannes M. (johnny-m)


Lesenswert?

Z8 wrote:
>>hab den 8er schon entfernt ;) problem aber dennoch vorhanden.
>
> Habe mal die 8 entfernt und durch den AVR Ass. geschickt. Ohne Fehler!
Was für ein Assembler soll das sein? Beim ATMEL-AVR-Assembler, der dem 
AVRStudio "beiliegt", heißen die beiden Dinger HIGH und LOW. Ein 
HI gibt es da nicht! tobi hat das schon korrekt gesagt...

von Z8 (Gast)


Lesenswert?

.def temp = r16

main: ldi temp,low(RAMEND)  ; Stackpointer initialisieren
      out SPL,temp

      ldi  r16,high(RAMEND)
      out  SPH,r16


das wrote Z8 in dem Quelltext.

von Johannes M. (johnny-m)


Lesenswert?

Z8 wrote:
> das wrote Z8 in dem Quelltext.
Und warum schreibst Du oben, Du hättest nur die 8 entfernt? Stimmt doch 
gar nicht! Dann wäre ein "hi" übrig geblieben, und dass das nicht 
funktioniert, hat absolut nichts mit Vista zu tun!

von Ralph M. (revolt3c)


Lesenswert?

@johnny: dafür liegt deine schwäche heut abend beim richtig ablesen? 
;)Turbotoni dachte es könnte an dem 8er liegen. hab nur erwiedert das es 
daran nicht liegt --> siehe fehlermeldung!

@turbotoni: ja mit high gehts ;) ich wusste nicht das der befehl 
auschgeschrieben werden muss, hatte das grundgerüst von myavr 
rüberkopiert --> hi8.

von Johannes M. (johnny-m)


Lesenswert?

Ralph Müller wrote:
> @johnny: dafür liegt deine schwäche heut abend beim richtig ablesen?
> ;)Turbotoni dachte es könnte an dem 8er liegen. hab nur erwiedert das es
> daran nicht liegt --> siehe fehlermeldung!
Nein, ich habe schon ganz richtig gelesen. Siehe unten...

> @turbotoni: ja mit high gehts ;) ich wusste nicht das der befehl
> auschgeschrieben werden muss,
Eben. Wenn low ausgeschrieben wird, gibt es keinen logischen Grund 
dafür, high nicht auch auszuschreiben oder zumindest hig zu 
schreiben, damit beide die gleiche Länge haben. Deshalb meine obige 
Bemerkung. Das low stimmte ja, warum sollte es dann ein 
zweibuchstabiges hi geben? Es macht einfach keinen Sinn...

> hatte das grundgerüst von myavr rüberkopiert --> hi8.
Der GNU-Assembler macht das auch mit hi8 und lo8. Aber eben nicht der 
AVR-Assembler.

von Z8 (Gast)


Lesenswert?

Hi Johannes M.,

das AVR-Studio läuft unter Vista nur mit diesem TIP richtig.
Ich bin kein Freund von Vista, aber muß mich mit dem ZEUG
Zuhause abfinden. (Tochter von 18a mit eigenem PC). Wenn ich
das Studio nicht so starte hagelt es Errors am laufenden Band.

Mit "Hi" und "High" hast Du natürlich recht, aber der Finger
ist schneller als der Zettel (Zwischenablage). :)

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.