Forum: Mikrocontroller und Digitale Elektronik ATMega8 AVR309


von PeterJ (Gast)


Lesenswert?

Hallo

ich bekomme die Firmware fürt den ATMega8 mit dem AVR Studio ums 
Verrecken
nicht übersetzt
Fehlermeldungen:

V:\AVR\USB\USBtoRS232.asm(29): Including file 'V:\AVR\USB\m8def.inc'
V:\AVR\USB\USBtoRS232.asm(182): warning: Register r26 already defined by 
the .DEF directive
V:\AVR\USB\USBtoRS232.asm(183): warning: Register r27 already defined by 
the .DEF directive
V:\AVR\USB\USBtoRS232.asm(184): warning: Register r28 already defined by 
the .DEF directive
V:\AVR\USB\USBtoRS232.asm(185): warning: Register r30 already defined by 
the .DEF directive
V:\AVR\USB\USBtoRS232.asm(973): error: Operand(s) out of range in 'ldi 
r21,0x8005'
V:\AVR\USB\USBtoRS232.asm(1851): No EEPROM data, deleting 
V:\AVR\USB\USB.eep

Irgendwelche Hinweise?

von Karl H. (kbuchegg)


Lesenswert?

PeterJ schrieb:

> Irgendwelche Hinweise?

Die 'already defined' Meldungen stammen daher, dass diese Register auch 
als als Registerpärchen mit dem Namen X, Y und Z-Pointer bekannt sind. 
Das Include File definiert dafür bereits Namen.


Der
V:\AVR\USB\USBtoRS232.asm(973): error: Operand(s) out of range in 'ldi
r21,0x8005'

wie soll ein 16 Bit Wert 0x8005 in ein 8 Bit breites Register passen?

von spess53 (Gast)


Lesenswert?

Hi

>Irgendwelche Hinweise?

-> 'ldi r21,0x8005' Das geht nicht. Ein Register kann nur 8 Bit 
aufnehmen.

Im Quelltext steht an dieser Stelle:

 ldi  bitcount,CRC16poly>>8  ;to bitcount CRC polynomial - high byte
 eor  temp1,bitcount    ;and make XOR from remains and CRC...
>ldi  bitcount,CRC16poly  ;to bitcount CRC polynomial - low byte
 eor  temp0,bitcount    ;and make XOR of remainder and CRC

Aus dem Kontext heraus würde ich sagen, die Zeile müsste so aussehen:

   ldi  bitcount,CRC16poly & $FF

MfG Spess

von Karl H. (kbuchegg)


Lesenswert?

spess53 schrieb:

> Aus dem Kontext heraus würde ich sagen, die Zeile müsste so aussehen:
>
>    ldi  bitcount,CRC16poly & $FF

Oder überhaupt gleich so
1
    ldi  bitcount, HIGH( CRC16poly )  ;to bitcount CRC polynomial - high byte
2
    eor  temp1,bitcount    ;and make XOR from remains and CRC...
3
    ldi  bitcount, LOW( CRC16poly )   ;to bitcount CRC polynomial - low byte
4
    eor  temp0,bitcount    ;and make XOR of remainder and CRC

fände ich auch klarer in der B-Note

von PeterJ (Gast)


Lesenswert?

Hallo


Vielen Dank für die Hilfe
Die Übersetzung hat jetzt geklappt


Gruß
Peter

von spess53 (Gast)


Lesenswert?

Hi

>fände ich auch klarer in der B-Note

Ich hatte mich etwas an dem C-angehauchten Syntax orientiert.

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.