XMega SerPort stört SysTickTimer

Torsten
Benutzer
Avatar
Gender:
Location: Bad Doberan
Age: 59
Posts: 62
Registered: 11 / 2005
Subject:

XMega SerPort stört SysTickTimer

 · 
Posted: 17.01.2012 - 13:50  ·  #1
Hallo,

ich habe einen XMega128A1 der das kleine Programm unten ausführt. Solange über die serielle
Schnittstelle keine Zeichen empfangen werden läuft der TimerA regelmäßig, LED blinkt.
Sobald ein Zeichen empfangen wurde steht der Timer. Das Verhalten wird auch im Simulator gezeigt.
Da ich das Programm schon recht weit reduziert habe gehen mir auch langsam die Ideen aus.

Inwieweit sind diese Sachen bereits auf den XMega angespasst?
Gibt es eine Zusammenfassung was auf den XMega angepasst wurde und was noch nicht geht, bzw. getestet ist. Dann hat man es leichter nach seinen Fehler zu suchen.

Ich hatte auch versucht die ser. Schnittstelle in einen eigenen Prozess auszulagern und die Daten über eine Pipe ins Hauptprogramm zu übernehmen funktionierte aber auch nicht.

Freue mich über einen Tipp, danke.

Torsten


Code

program ChopStab;

{$NOSHADOW}
{$WG}                      {global Warnings on}

Device = xmega128A1, VCC=3.3;
//{ $BOOTRST $10000}         {Reset Jump to $10000}

Define_Fuses
//  Override_Fuses;
  NoteBook   = A;
  COMport    = USB;
  LockBits0  = [];
  FuseBits0  = [];
  FuseBits1  = [];
  FuseBits2  = [];


Import SysTick,SerPortC0,SPI_C;
From SysTick import SystemTime16;

Define
  OSCtype        = extClock=10000000, PLLmul=2, prescA=1  , prescB=1, prescC=1;
  SysTick        = 10;             {msec}
  StackSize      = $100, iData;
  FrameSize      = $100, iData;
  FlashChksum    = ProgEnd;        {or absolute address}
  RxBufferC0     = 32, iData;
  TxBufferC0     = 64, iData;
  SerPortC0      = 9600,Stop1;
  SPIorderC      = MSB;
  SPImodeC       = 0;
  SPIprescC      = 1;
  SPI_SSC        = none;


Implementation

{$IDATA}

{--------------------------------------------------------------}
{ Type Declarations }

type TString8 = string[8];

{--------------------------------------------------------------}
{ Const Declarations }
const
  Version              : Tstring8 ='V1.0';

{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
var LEDgn[@PortJ,0] : bit;
var LEDrt[@PortJ,1] : bit;
var zeichen         : char;
var TimerA          : Systimer;
{--------------------------------------------------------------}
{ functions }

procedure init_Ports;
begin
   // Port J
   DDRJ :=$03;
end;

{--------------------------------------------------------------}
{ Main Program }
{$IDATA}

begin
  Init_Ports;
  LEDgn:=FALSE;
  LEDrt:=FALSE;
  SetSysTimer(TimerA,100);
  EnableInts($87);
  loop
   if  SerStatC0 then
      repeat
      zeichen :=serinpC0;
      until SerStatC0;
   endif;

   if isSysTimerZero(TimerA) then
      Toggle(LEDrt);
      SetSysTimer(TimerA,100);
   endif;

  endloop;
end ChopStab.



rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: XMega SerPort stört SysTickTimer

 · 
Posted: 18.01.2012 - 14:09  ·  #2
Hallo Thorsten,

1. das kann so nicht funktionieren denn
until SerStatC0;
ergibt eine Endlos Schleife. Das Programm bleibt für immer in dieser Loop.
und so tut es:
until not SerStatC0;

2. Der Simulator beherrscht noch nicht komplett die XMega UARTs in der Simulation. Wird noch kommen. Aber das schon vorweg: es ist praktisch unmöglich alle der Unmengen von on-chip Treiber zu simulieren, vor allem weil die meisten sehr komplex sind. Der SIM würde dadurch zur Schnecke werden. Das macht absolut keinen Sinn denn wie soll man die USB Hardware denn simulieren? Man bedenke dass ein typischer XMega ca. 500 IO-Register hat.
Unser ISP3-Debug wird in spätestens Q2/2012 das PDI Debug unterstützen. Da kommt man nicht drum herum diesen dann zu verwenden!

3. Zur Frage der unterstützten XMega Treiber und Funktionen: alle in der Demos Directory aufgeführten Testprogramme bzw. Treiber sind weitgehend getestet und funktionieren auch.
Was noch fehlt ist der USB Support für die "U" Versionen und die AES Unterstützung. Auch das USB ist in Arbeit und wird bald kommen.

rolf
Torsten
Benutzer
Avatar
Gender:
Location: Bad Doberan
Age: 59
Posts: 62
Registered: 11 / 2005
Subject:

Re: XMega SerPort stört SysTickTimer

 · 
Posted: 18.01.2012 - 14:46  ·  #3
Hallo Rolf,

danke für die Informationen zu 2. und 3., Punkt 1 verstehe ich jetzt auch.

Torsten
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: XMega SerPort stört SysTickTimer

 · 
Posted: 18.01.2012 - 15:37  ·  #4
Hallo Torsten,

noch was, 500 IO-Register X 8 bits -> 4000 bits die der Simulator zumindest zum Teil nach jecem CPU Zyklus beachten muss wenn alles simuliert werden soll :devil:

btw.
Das Stack overflow Problem im SIM ist gelöst. Neuer SIM im nächsten Update.

rolf
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   81   95 · Page-Gen-Time: 0.021191s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI