program ATX256A3UTest; {$NOSHADOW} { $WG} {global Warnings off} Device = xmega128A3U, VCC=3.3; { $BOOTRST $20000} {Reset Jump to $20000} Import SysTick ; // From System Import longword; //,int64; Define OSCtype = int32MHz, PLLmul=4, prescB=1, prescC=1; SysTick = 10; //msec StackSize = $00164, iData; FrameSize = $00164, iData; Implementation {$IDATA} {------------------------------------------------------------} { Type Declarations } {--------------------------------------------------------------} { Const Declarations } { Var Declarations } {$IDATA} var OnOffTimerTime: boolean; HopTimerTime: boolean; MilliSekBol : boolean; {--------------------------------------------------------------} { functions } Interrupt TCC0_INTOVF; // umschalten auf 2. Zeit On oder Offzeit, begin OnOffTimerTime:= true; // Rest der Umschaltungen in der Main-Loop-routine end; Interrupt TCD0_INTOVF; // bei Hopperbetrieb genutzt begin HopTimerTime:= true; // Rest der Umschaltungen in der Main-Loop-routine end; Interrupt TCE0_INTOVF; // für Sendezeiten und Softsweep genutzt x * 1 msec begin MilliSekBol := true; // für SoftSweepVerweildauer genutzt end; { Main Program } {$IDATA} begin EnableInts($87); // alle Ints freigeben DDRA:= %01111111; // Timer setzen für 0,083333 µ * 1200 = 100µsec OnOffTimeWert Overflow TCC0PERL := $B0; // PERL - Period Register L Bite 7..0 TCC0PERH := $04; // PERH - Period Register H 15..8 // TCC0CTRLA := $03; // 3..0 Clock.select Prescaler 03= Clk/4 04: clk/8 05: clk/64 06: clk/256 07 : clk/1024 TCC0CTRLA := $03; // 3..0 Clock.select Prescaler 03= Clk/4 04: clk/8 05: clk/64 06: clk/256 07 : clk/1024 TCC0INTCTRLA := $02; TCC0CTRLA := $00; // Timer Off ! //......................... bei Hopperbetrieb ........................................................................................................................ TCD0PERL := $40; // PERL - Period Register L Bite 7..0 TCD0PERH := $9C; // PERH - Period Register H 15..8 // TCD0CTRLA := $03; // 3..0 Clock.select Prescaler 03= Clk/4 04: clk/8 05: clk/64 06: clk/256 07 : clk/1024 TCD0CTRLA := $07; // 3..0 Clock.select Prescaler 03= Clk/4 04: clk/8 05: clk/64 06: clk/256 07 : clk/1024 TCD0INTCTRLA := $02; TCD0CTRLA := $00; // Timer Off ! //........................................................................................................................................... // Timer setzen für 1 ms Overflow @48MHz Forumbeitrag : Xmega Timer Interrupt und Servoport Timer genutzt für Signalling Sendedauer und für SoftSweepdauer TCE0PERL := $BB; // PERL - Period Register L Bite 7..0 TCE0PERH := $00; // PERH - Period Register H 15..8 // TCE0CTRLA := $03; // 3..0 Clock.select Prescaler 03= Clk/4 04: clk/8 05: clk/64 06: clk/256 07 : clk/1024 TCE0CTRLA := $05; // 3..0 Clock.select Prescaler 03= Clk/4 04: clk/8 05: clk/64 06: clk/256 07 : clk/1024 TCE0INTCTRLA := $02; //........................................................................................................................................... TCE0CTRLA := $00; // bei $00 ist Timer Off loop endloop; end ATX256A3UTest.