www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Error in AVR Studio


Autor: Ralph Müller (revolt3c)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hi@all,

habe ein problem mit dem avr studio:


;**********************************************************
.include "m8def.inc"  
  rjmp RESET     
;**********************************************************

RESET:

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


programm:

  ldi  r16,0xFF
  out  DDRB,r16


  ldi  r16,1
  out  PORTB,r16
  
  ldi   r17,0xFF
  out  DDRC,r17

  in  r17,PINC

  or  r16,r17
  out  PORTB,r16

  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?

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

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

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

MfG Spess

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralph Müller (revolt3c)
Datum:

Bewertung
0 lesenswert
nicht 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.


;**********************************************************
.include "m8def.inc"  
rjmp RESET   
;**********************************************************

RESET:


.def temp = r16

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

      ldi  r16,hi8(RAMEND)
      out  SPH,r16




richtung:

  ldi  r16,0xFF
  out  DDRB,r16

  
  ldi r17,0x00
  out  DDRC,r17

programm:


  ldi  r16,1
  out  PORTB,r16

  in  r17,PINC


  cp r16,r17

  breq step
  
  rjmp programm

step:

  ldi  r16, 0xFF
  out  PORTB,r16

  rjmp  step



Autor: Turbotoni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich würds mal nur mit Hi anstelle Hi8 versuchen

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Ralph Müller (revolt3c)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab den 8er schon entfernt ;) problem aber dennoch vorhanden.

Autor: Turbotoni (Gast)
Datum:

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

MfG Turbotoni

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du bist unter "Vista" unterwegs!?
Stimmts??

mfg Z8

Autor: tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Folgendes Rahmenprogramm würde ich verwenden:
        .INCLUDE "m8def.inc"
        .DEF  tmp=r16
        .CSEG
        rjmp  start
        .ORG  $2A
start:  clr   tmp;
        ldi   tmp,LOW(RAMEND)
        out   SPL,tmp
        ldi   tmp,HIGH(RAMEND)
        out   SPH,tmp
        ...

Mit einfach nur HIGH und LOW gehts.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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. :)

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Ralph Müller (revolt3c)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Z8 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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). :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.