Servo Timer bei XMega16E5

  • 1
  • 2
  • Page 1 of 2
helmut-nsu
Benutzer
Avatar
Gender:
Age: 61
Posts: 16
Registered: 01 / 2013
Subject:

Servo Timer bei XMega16E5

 · 
Posted: 21.02.2016 - 20:51  ·  #1
Hallo,

bei dem Versuch Servos mit dem XMega16E5 anzusteuern erhalte ich immer die Fehrermeldung:

Error: Timer_C0, Timer_C1 etc expectet

Dabei scheint egal was ich als ?? bei ServoNeutral = 1.5, Timer_?? eintrage. ich habe schon diverse Varianten erfolglos ausprobiert.

Der XMega16E5 müsste folgende Timer haben: TCC4, TCC5 und TCD5

Kann mir jemad sagen was ich machen muss damit das Programm läuft?

Mit freundlichen Grüßen

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

Re: Servo Timer bei XMega16E5

 · 
Posted: 22.02.2016 - 14:19  ·  #2
Hallo Helmut,

wie wärs mit einem gaaanz kleinen Testprogramm dazu?

rolf
helmut-nsu
Benutzer
Avatar
Gender:
Age: 61
Posts: 16
Registered: 01 / 2013
Subject:

Re: Servo Timer bei XMega16E5

 · 
Posted: 22.02.2016 - 21:38  ·  #3
Hallo,

ich habe zum probieren ein neues Projekt angelegt. Das Programm definiert
ServoNeutral = 1.5, Timer1;
Diese Variante hatte ich noch nicht versucht, aber es klappt leider auch nicht.

"Make Projekt" bleibt mit der gleichen Fehlermeldung hängen.

Code
program Servo_Test;

{$NOSHADOW}
{ $WG}                     {global Warnings off}

Device = xmega16E5, VCC=3.3;
{ $BOOTRST $02000}         {Reset Jump to $02000}

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

Import SysTick, ServoPort;

From System Import ;


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
  OSCtype        = int32MHz,
                   PLLmul = 4,
                   prescB = 1,
                   prescB = 1, overdrive;
  SysTick        = 10;             {msec}
  StackSize      = $0064, iData;
  FrameSize      = $0064, iData;
  ServoPort      = PortA, 0, iData; {use Portx, startbit n, RAMpage}
  ServoChans     = 4, positive;     {channel count, pulse polarity}
  ServoNeutral   = 1.5, Timer1;     {msec zero pulse width, Timer used}         // Variante wird von New Project erstellt
//ServoNeutral   = 1.5, Timer_C4;                                               // Variante scheint logisch, tut aber auch nicht

Implementation

{$IDATA}

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

type

{--------------------------------------------------------------}
{ Const Declarations }

{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}

{--------------------------------------------------------------}
{ functions }

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

begin

  EnableInts($87);
  loop


  endloop;
end Servo_Test.


Die Lösung ist bestimmt ganz einfach, aber ich komme nicht drauf.

Mit ferundlichen Grüßen
Helmut
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Servo Timer bei XMega16E5

 · 
Posted: 22.02.2016 - 22:25  ·  #4
Hallo Helmut,

sorry. Diese Timer unterscheiden sich in wesentlichen Punkten von allen anderen
XMega Timern. Die Benutzung für den Servo Treiber verbietet sich deshalb zur Zeit.

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

Re: Servo Timer bei XMega16E5

 · 
Posted: 23.02.2016 - 19:10  ·  #5
Hallo Helmut,

ich habe jetzt versucht für die XMega-E5 die TimerC4 und TimerC5 für das
Servo zu implementieren. War nicht einfach, da doch ein paar Unterschiede
zu den Standard Timern existieren. Sollte aber jetzt tun. Tests waren mangels
Hardware leider nicht möglich. Sorry...

Update am WE.

rolf
helmut-nsu
Benutzer
Avatar
Gender:
Age: 61
Posts: 16
Registered: 01 / 2013
Subject:

Re: Servo Timer bei XMega16E5

 · 
Posted: 23.02.2016 - 21:31  ·  #6
Hallo Rolf,

vielen Dank für die suuuuper schnelle Reaktion.

Ich bin mal gespannt was als Ergebnis raus kommt.
Ich werde dann mal weiter an der Hardware arbeiten und versuchen das Ergebnis zeitnah zu testen.

MfG

Helmut
helmut-nsu
Benutzer
Avatar
Gender:
Age: 61
Posts: 16
Registered: 01 / 2013
Subject:

Re: Servo Timer bei XMega16E5

 · 
Posted: 28.02.2016 - 20:25  ·  #7
Hallo Rolf,

ich habe das Update 5.07.06 eingespielt.

Da in der ReadMe nichts stand bin ich mir nicht sicher ob es die Änderung bis in diese Wochenendversion geschafft hat.

In der Programmzeile
ServoNeutral = 1.5, Timer_C4;
oder auch
ServoNeutral = 1.5, Timer_C5;

erhalte ich beim Compilieren leider weiterhin:
Error: Timer_C0, Timer_C1 etc expected

Ich hoffe ich habe nur etwas in der Syntax falsch. Ansonsten kann ich auch noch wrten.

Mit freundliche Grüßen
Helmut
rh
Administrator
Avatar
Gender:
Location: Germany
Age: 24
Homepage: e-lab.de
Posts: 5558
Registered: 03 / 2002
Subject:

Re: Servo Timer bei XMega16E5

 · 
Posted: 28.02.2016 - 20:37  ·  #8
Hallo Helmut,

der E5 sollte das Servo jetzt unterstützen. Bei mir tut das:
Code
program Servo_Test;

{ $NOSHADOW}
{ $WG}                     {global Warnings off}

Device = xmega16E5, VCC=3.3;
{ $BOOTRST $02000}         {Reset Jump to $02000}

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

Import SysTick, ServoPort;

From System Import ;

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
  OSCtype        = int32MHz,
                   PLLmul = 4,
                   prescB = 1,
                   prescB = 1, overdrive;
  SysTick        = 10;             {msec}
  StackSize      = $0064, iData;
  FrameSize      = $0064, iData;
  ServoPort      = PortA, 0, iData; {use Portx, startbit n, RAMpage}
  ServoChans     = 4, positive;     {channel count, pulse polarity}
  ServoNeutral   = 1.5, Timer_C4;     {msec zero pulse width, Timer used} 
//ServoNeutral   = 1.5, Timer_C5;                                         

Implementation

{$IDATA}

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

type

{--------------------------------------------------------------}
{ Const Declarations }

{--------------------------------------------------------------}
{ Var Declarations }
{$IDATA}

{--------------------------------------------------------------}
{ functions }

{--------------------------------------------------------------}
{ Main Program }
{$IDATA}
begin
  EnableInts($87);
  loop
  endloop;
end Servo_Test. 

Welche AVRco Version? Demo, E5 oder?

rolf
  • 1
  • 2
  • Page 1 of 2
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   141   155 · Page-Gen-Time: 0.030805s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI