Forum: Mikrocontroller und Digitale Elektronik xtal in Peter Danneggers 1-wire


von Sanlo (Gast)


Lesenswert?

Hallo,

ich bekomme die Fehlermeldung

e:\Eigene Dateien\Test_1-wire\Test_1-wire.asm(3): error: xtal:
Unknown instruction or macro

aber die Anweisung

.equ  xtal    = 1000000

hab ich drin.

Warum erkennt er das nicht?

Achja ATMega16 AVRStudio4

Danke

->Sanlo

von Simon K. (simon) Benutzerseite


Lesenswert?

sicher, dass das gleichheitszeichen nicht weg muss? (War doch so bei
.equ im Avr Assembler)

von Rahul (Gast)


Lesenswert?

.equ ist doch eine Makrodefinition. Dann sollte das = auf jeden Fall
überflüssig sein.

von Stevko (Gast)


Lesenswert?

Guten Abend Sanlo,

die Anweisung:
  ".equ  xtal    = 1000000"
stimmt schon.

Ich vermute mal das Du diese Anweisung in einer Include-Datei stehen
hast und nicht in der Datei:"Test_1-wire.asm". Wahrscheinlich wirst
Du in der Datei "Test_1-wire.asm" eine andere Konstante mit "xtal"
berechnen, z.B. Wire_Clock= xtal/irgendwas.
Sind meine Annahmen richtig, hast Du vergessen die Datei in der die
Anweisung: ".equ  xtal    = 1000000" steht, zu "includieren".
Zur genaueren Diagnose mußt Du aber den Quelltext posten.

Gruß
  Stevko

von Stevko (Gast)


Lesenswert?

@Rahul:

Ich denke mal das sich Sanlo im ASM-Gebiet bewegt. Da ist .equ
folgendermaßen definiert:

EQU = Set a Symbol (Equ)al to an Expression.
Beispiel: ".equ  xtal    = 1000000"

Also lieber Compiler immer wenn das Wort "xtal" auftaucht, dann setze
dafür immer "1000000" ein.

Gruß
  Stevko

von Sanlo (Gast)


Lesenswert?

die Test_1-wire geht so los:

.include "m16def.inc"
.include "LCDTRTC.H"
xtal  equ    1000    ;1000kHz


w15    equ  ( xtal + 799 ) / 719
w60    equ  ( xtal + 199 ) / 169
w480        equ  ( xtal +  24 ) /  20
w66    equ  ( xtal + 181 ) / 184

und das ist die LCDTRTC.H
;*********************************************************************** 
**
;----------------------------------------------------------------------- 
--
;        Definierung der Konstanten
;----------------------------------------------------------------------- 
--
.equ  xtal    = 1000000  ;1.0MHz (max 3.2MHz)

Bei der Gelegenheit könnte mir auch mal jemand erklären, wie die
grandiose Rechnerei zustandekommt. Die hab ich ja so von PeDa
übernommen.

@PeDa: Danke für den Quellcode. Wenn ich den jetzt noch verstehe und
zum Laufen bringe ist meine Welt in Ordnung. :-)

->Sanlo

von Peter D. (peda)


Lesenswert?

Warum denken die Leute immer, man müßte sich an jede Programmzeile genau
erinnern, die man mal irgendwo veröffentlicht hat ?


Wenn es sich hier auf ein Codebeispiel bezieht, dann poste doch Deine
Frage in dem entsprechenden Thread, damit man nachschauen kann.


Und wenn es nicht im Mikrocontrollerforum war, dann poste den Link auf
den Beitrag.


Peter

von Stevko (Gast)


Lesenswert?

@Sanlo:

Deine Fehlermeldung ist:

e:\Eigene Dateien\Test_1-wire\Test_1-wire.asm(3): error: xtal:

Die (3) besagt das der Fehler in Zeile 3 ist. Nun sehen wir uns mal
Zeile 3 an.

(1).include "m16def.inc"
(2).include "LCDTRTC.H"
(3) xtal  equ    1000    ;1000kHz

Und was sehen wir da? Das "xtal  equ    1000 ;1000kHz" ist nur ein
Kommentar also bitte mit ";" kennzeichnen.

-> ;xtal  equ    1000    ;1000kHz
oder
   ;xtal = 1000kHz.

Gruß
  Stevko

von Karl heinz B. (kbucheg)


Lesenswert?

Irgendwas stimmt da nicht.
Der Name des Include-File, LCDTRTC.H, lässt für mich
den Rückschluss zu, dass das irgendwas mit einem LCD zu
tun hat.

Auch sind offensichtlich die Einheiten nicht gleich:
In LCDTRTC.H ist xtal mit 1000000, also in Hertz dimensioniert.
In Test_1.wire.asm wird xtal aber mit 1000 equated. Auch der
zugehörige Kommentar lässt darauf schliessen, dass hier die
Einheit KiloHertz ist.

Eines ist klar: 1 xtal muss weg. Nur muss die Verwendung des
anderen auf die Richtige Einheit angepasst werden.
Oder aber die Alternative: Ein xtal komplett auf was anderes
umbenennen (Sowohl die equ Definition als auch die Verwendung)

Das alles ist nur geraten und aus dem wenigen Code den ich
hier sehe abgeleitet. Aber eines ist schon klar: Namen wie
'xtal' sind eine schlechte Wahl für ein Modul, da die Gefahr
von Namens-Duplikaten besteht. Besonders prekär wird die Situation,
wenn, wie hier, unterschiedliche Einheiten im Spiel sind.

von Sanlo (Gast)


Lesenswert?

gut, ich hab ein xtal rausgenommen und jetzt kommt zumindest beim
Compilieren kein Fehler mehr.

dafür jetzt dieser...

e:\Eigene Dateien\Test_1-wire2\ovf0int.inc(7): error: Overlap in
.cseg: addr=0x12 conflicts with 0x0:0xff

wie kann ich mir denn in AVRStudio4 die Speicherbereiche anzeigen
lassen, damit ich dem Fehler aus die Pelle rücken kann?

Oder wie würdet ihr an den Fehler rangehen?

->Sanlo

von Sanlo (Gast)


Lesenswert?

was zum Teufel ist dieses cseg???

Ich hab die kompletten 355 Seiten ATMega16 Doku durchsucht und  rein
garnichts gefunden.

Kennt irgendjemand den Fehler???

von Alex Trusk (Gast)


Lesenswert?


von Alex Trusk (Gast)


Lesenswert?

http://www.google.com/search?q=cseg+avr sollte es natuerlich heissen...

von Simon K. (simon) Benutzerseite


Lesenswert?

>>Ich hab die kompletten 355 Seiten ATMega16 Doku durchsucht und  rein
garnichts gefunden.

Guter Versuch, allerdings in die falsche Doku geschaut :-)

Schau in die Hilfe vom AVR-Studio

von Sanlo (Gast)


Lesenswert?

super, danke...

->Sanlo

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.