Hallo,
ich wollte port Pins mit excl und incl schalten.
Leider machen die Funktionen beim Xmega nicht das, was man erwartet.
Siehe Bild im Anhang.
Soweit ich recherchiert habe (Suchwörter: avr und Lac) funktioniert die Implementierung
von excl mit dem Assemblerbefehl LAC (load and clear) nur mit dem internen SRAM.
Gruß
Thomas
program test;
{$W+}
{ $DEFINE DEBUG}
Device = xmega128A1U, VCC = 3.3;
Define_Fuses
Override_Fuses;
NoteBook = A;
COMport = USB;
FuseBits5 = [BODLEVEL1, BODLEVEL2, BODACT0]; // BOD=2.8V if USB variant
ProgFuses = true;
ProgEEprom = true;
Import ;
Define
OSCtype = extXTAL=8000000, PLLmul=4, prescA=1, prescB=1, prescC=1, faildet;
StackSize = 256, iData;
FrameSize = 256, iData;
implementation
{$IDATA}
{-------------------------------------------------------------------------------
Main Program
-------------------------------------------------------------------------------}
var mybyte : byte;
begin
loop
mybyte := $FF;
excl(mybyte,5); // okay, sram
PORTF := $FF;
excl(PORTF,5); // not okay, io register
PORTF := $FF;
PORTF.outclr := 1 shl 5; // okay, OUTCLRF register
endloop;
end test.
ich wollte port Pins mit excl und incl schalten.
Leider machen die Funktionen beim Xmega nicht das, was man erwartet.
Siehe Bild im Anhang.
Soweit ich recherchiert habe (Suchwörter: avr und Lac) funktioniert die Implementierung
von excl mit dem Assemblerbefehl LAC (load and clear) nur mit dem internen SRAM.
Gruß
Thomas
Code
program test;
{$W+}
{ $DEFINE DEBUG}
Device = xmega128A1U, VCC = 3.3;
Define_Fuses
Override_Fuses;
NoteBook = A;
COMport = USB;
FuseBits5 = [BODLEVEL1, BODLEVEL2, BODACT0]; // BOD=2.8V if USB variant
ProgFuses = true;
ProgEEprom = true;
Import ;
Define
OSCtype = extXTAL=8000000, PLLmul=4, prescA=1, prescB=1, prescC=1, faildet;
StackSize = 256, iData;
FrameSize = 256, iData;
implementation
{$IDATA}
{-------------------------------------------------------------------------------
Main Program
-------------------------------------------------------------------------------}
var mybyte : byte;
begin
loop
mybyte := $FF;
excl(mybyte,5); // okay, sram
PORTF := $FF;
excl(PORTF,5); // not okay, io register
PORTF := $FF;
PORTF.outclr := 1 shl 5; // okay, OUTCLRF register
endloop;
end test.
Attachments
Filename: | lac.png |
Filesize: | 78.18 KB |
Title: | LAC |
Download counter: | 71 |