Hallo zusammen,
ich verwende einen XMega und habe so ziemlich alle Ports belegt.
Wenn ich SerPortD0 verwende möchte und Bit4-7 am Port D anders konfigurieren möchte
funktioniert die serielle nicht mehr.
Lass ich die Konfiguration mittels DDRD weg geht die serielle.
Aber das nutzt mir ja nichts. Ich will ja die Bit4-7 als Ausgänge verwenden.
Kann mir jemand erklären was ich anders machen sollte.
Danke
program XMEGA_CP2104;
device = XMega256A3U , VCC = 3.3;
{ $BOOTRST $20000} {Reset Jump to $20000}
Import SysTick, SerPortD0, BeepPort, SysLEDblink;
//From System Import LongWord, word64;
Define
// The XMegas don't provide any Oscillator fuses.
// So the application must setup the desired values
// possible OSC types: extXTAL, extClock, ext32kHz, int32Khz, int2MHz, int32MHz
//>> CPU =32MHz, PeripherX4=32MHz, PeripherX2=32MHz
OSCtype = int32MHz,
PLLmul = 4,
prescB = 1,
prescC = 1;
SysTick = 10; // msec}
StackSize = $0032, iData;
FrameSize = $0064, iData;
SerPortD0 = 256000; // 256 kbit
TxBufferD0 = 40, iData;
RXBufferD0 = 40, idata;
BeepPort = PortF, 7;
SysLEDblink = mSec300; // 10..1000 msec
SysLEDBlink0 = PortD, 5, high; // LEDon = low level
Implementation
{$IDATA}
{--------------------------------------------------------------}
{ Type Declarations }
type
{--------------------------------------------------------------}
{ Const Declarations }
const
{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
var
ww : word;
st : string[32];
{--------------------------------------------------------------}
{ functions }
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
// Port A Input - Schieberegister
DDRA := %00000000;
// Port B Output - Schieberegister
DDRB := %11111111;
// Port C wird von Schnittstellen verwendet RS485 (serC0) , TFT (TWIC) und SD (SPIC)
// Initialisierung sollte durch die entspr. Treiber erfolgen
// Port D, SERD0 als RS232, D4, D5 Ausgänge, D6, D7 USB
DDRD := %11110111; // Port D Output D3 Input , bit 4-7 Output
// Port E Schnittstellen Midi (serE0)
DDRF := %11111011; // Port F Output F2 = IR-RXD
mdelay( 100 );
EnableInts($87);
BeepOut(2000, 5);
SysLEDflashAllOn;
WriteLn(SerOutD0);
WriteLn(SerOutD0, 'XMega Baud Test');
loop
mDelay(500);
inc(ww);
st:= 'Loop : $'+IntToHex(ww);
WriteLn(SerOutD0, st);
BeepClick;
while SerStatD0 do
SerOutD0(SerInpD0); // echo
endwhile;
endloop;
end XMEGA_CP2104.
ich verwende einen XMega und habe so ziemlich alle Ports belegt.
Wenn ich SerPortD0 verwende möchte und Bit4-7 am Port D anders konfigurieren möchte
funktioniert die serielle nicht mehr.
Lass ich die Konfiguration mittels DDRD weg geht die serielle.
Aber das nutzt mir ja nichts. Ich will ja die Bit4-7 als Ausgänge verwenden.
Kann mir jemand erklären was ich anders machen sollte.
Danke
Code
program XMEGA_CP2104;
device = XMega256A3U , VCC = 3.3;
{ $BOOTRST $20000} {Reset Jump to $20000}
Import SysTick, SerPortD0, BeepPort, SysLEDblink;
//From System Import LongWord, word64;
Define
// The XMegas don't provide any Oscillator fuses.
// So the application must setup the desired values
// possible OSC types: extXTAL, extClock, ext32kHz, int32Khz, int2MHz, int32MHz
//>> CPU =32MHz, PeripherX4=32MHz, PeripherX2=32MHz
OSCtype = int32MHz,
PLLmul = 4,
prescB = 1,
prescC = 1;
SysTick = 10; // msec}
StackSize = $0032, iData;
FrameSize = $0064, iData;
SerPortD0 = 256000; // 256 kbit
TxBufferD0 = 40, iData;
RXBufferD0 = 40, idata;
BeepPort = PortF, 7;
SysLEDblink = mSec300; // 10..1000 msec
SysLEDBlink0 = PortD, 5, high; // LEDon = low level
Implementation
{$IDATA}
{--------------------------------------------------------------}
{ Type Declarations }
type
{--------------------------------------------------------------}
{ Const Declarations }
const
{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
var
ww : word;
st : string[32];
{--------------------------------------------------------------}
{ functions }
{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
// Port A Input - Schieberegister
DDRA := %00000000;
// Port B Output - Schieberegister
DDRB := %11111111;
// Port C wird von Schnittstellen verwendet RS485 (serC0) , TFT (TWIC) und SD (SPIC)
// Initialisierung sollte durch die entspr. Treiber erfolgen
// Port D, SERD0 als RS232, D4, D5 Ausgänge, D6, D7 USB
DDRD := %11110111; // Port D Output D3 Input , bit 4-7 Output
// Port E Schnittstellen Midi (serE0)
DDRF := %11111011; // Port F Output F2 = IR-RXD
mdelay( 100 );
EnableInts($87);
BeepOut(2000, 5);
SysLEDflashAllOn;
WriteLn(SerOutD0);
WriteLn(SerOutD0, 'XMega Baud Test');
loop
mDelay(500);
inc(ww);
st:= 'Loop : $'+IntToHex(ww);
WriteLn(SerOutD0, st);
BeepClick;
while SerStatD0 do
SerOutD0(SerInpD0); // echo
endwhile;
endloop;
end XMEGA_CP2104.