Hallo.
Ich habe noch einen kleinen Bug im Compiler gefunden, wenn man für einen XMEGA übersetzt:
program Test;
Device = xmega32a4u, VCC=3.3;
Define
//>> CPU=32MHz, PeripherX4=32MHz, PeripherX2=32MHz
OSCtype = int32MHz, PLLmul=4, prescB=1, prescC=1;
StackSize = $0100, iData;
FrameSize = $0100, iData;
Implementation
{$DATA}
var Reg10[$10] : byte;
TempBit[@Reg10,0] : bit;
{$PDATA}
var PReg10[$10] : byte;
PTempBit[@PReg10,0] : bit;
{$IDATA}
begin
Reg10 := 0; //IST OK
TempBit := TRUE; //IST nicht OK
PReg10 := 0; //IST OK
PTempBit := TRUE; //IST OK
loop
endloop;
end Test.
Die Bitbearbeitung für $PDATA ist OK (IN; SBR; OUT), aber für $DATA wird auch der Code IN/SBR/OUT erzeugt. Müsste doch eigentlich MOV/SBR/MOV sein
SETBIT erzeugt den selben Code.
Wenn man das komplette Byte schreibt, wird aber richtig unterschieden.
Im Compiler-Handbuch steht zwar auf Seite 201, dass $DATA beim XMEGA vermieden werden sollte, aber ansich ist ja durch die Deklaration eindeutig, ob ich das Register ($DATA) oder den IO-Bereich ($PDATA) benutzen möchte.
Ist ja nur ein kleiner Fehler, hat mich aber verdammt viel Zeit gekostet, als ich mein Programm vom MEGA auf den XMEGA portiert habe
Projekt ist dabei.
Viele Grüsse
Jürgen
Ich habe noch einen kleinen Bug im Compiler gefunden, wenn man für einen XMEGA übersetzt:
Code
program Test;
Device = xmega32a4u, VCC=3.3;
Define
//>> CPU=32MHz, PeripherX4=32MHz, PeripherX2=32MHz
OSCtype = int32MHz, PLLmul=4, prescB=1, prescC=1;
StackSize = $0100, iData;
FrameSize = $0100, iData;
Implementation
{$DATA}
var Reg10[$10] : byte;
TempBit[@Reg10,0] : bit;
{$PDATA}
var PReg10[$10] : byte;
PTempBit[@PReg10,0] : bit;
{$IDATA}
begin
Reg10 := 0; //IST OK
TempBit := TRUE; //IST nicht OK
PReg10 := 0; //IST OK
PTempBit := TRUE; //IST OK
loop
endloop;
end Test.
Die Bitbearbeitung für $PDATA ist OK (IN; SBR; OUT), aber für $DATA wird auch der Code IN/SBR/OUT erzeugt. Müsste doch eigentlich MOV/SBR/MOV sein
SETBIT erzeugt den selben Code.
Wenn man das komplette Byte schreibt, wird aber richtig unterschieden.
Im Compiler-Handbuch steht zwar auf Seite 201, dass $DATA beim XMEGA vermieden werden sollte, aber ansich ist ja durch die Deklaration eindeutig, ob ich das Register ($DATA) oder den IO-Bereich ($PDATA) benutzen möchte.
Ist ja nur ein kleiner Fehler, hat mich aber verdammt viel Zeit gekostet, als ich mein Programm vom MEGA auf den XMEGA portiert habe
Projekt ist dabei.
Viele Grüsse
Jürgen
Attachments
Filename: | Test.zip |
Filesize: | 34.37 KB |
Title: | |
Download counter: | 23 |