Hallo,
ich bin am Verzweifeln und ich kann es mir nicht erklären.
Folgendes Programm funktioniert nicht (an Port B und D hängen 4 bzw. 2 LEDs):
Program Laderegler;
$WG} {global Warnings off}
Device = xmega32A4, VCC=3.05;
{ $BOOTRST $04000} {Reset Jump to $04000}
Define_Fuses
Override_Fuses;
ProgMode = PDI;
ProgFuses = true;
FuseBits5 = [BodAct1,BodLevel0];
Import SysTick;
From System Import Processes;
Define
OSCtype = int2MHz,
PLLmul=1,
prescB=1,
prescC=1;
SysTick = 10; { msec }
StackSize = $0100, iData;
FrameSize = $0100, iData;
Scheduler = iData;
Implementation
{$IDATA}
{------------------------------------------------------------------------------}
{ Type Declarations }
Type
{------------------------------------------------------------------------------}
{ Const Declarations }
Const
{------------------------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
Var
{------------------------------------------------------------------------------}
{ functions }
Process ReadADC($40,$40:iData);
Begin
PortD:=PortD or %00000010;
Sleep(self,50);
PortD:=PortD and %11111101;
Sleep(self,50);
End ReadADC;
Procedure InitPorts;
Begin
PortB:= %00000000;
DDRB:= %00001111;
PortC:= %00000000;
DDRC:= %00000011;
PortD:= %00000000;
DDRD:= %00000110;
End InitPorts;
{------------------------------------------------------------------------------}
{ Main Program }
{$IDATA}
Begin
EnableInts($87);
Start_Processes($87);
InitPorts;
Loop
PortB:=PortB or %00000001;
MDelay(500);
PortB:=PortB and %11111110;
MDelay(500);
EndLoop;
End Laderegler.
..... wir reden jetzt mal nicht über den Sinn und Zweck des Programmes
Wenn ich aber OSCtype = int32MHz einstelle läuft es. Nur wieso ???????
Gruss
Harry
ich bin am Verzweifeln und ich kann es mir nicht erklären.
Folgendes Programm funktioniert nicht (an Port B und D hängen 4 bzw. 2 LEDs):
Code
Program Laderegler;
$WG} {global Warnings off}
Device = xmega32A4, VCC=3.05;
{ $BOOTRST $04000} {Reset Jump to $04000}
Define_Fuses
Override_Fuses;
ProgMode = PDI;
ProgFuses = true;
FuseBits5 = [BodAct1,BodLevel0];
Import SysTick;
From System Import Processes;
Define
OSCtype = int2MHz,
PLLmul=1,
prescB=1,
prescC=1;
SysTick = 10; { msec }
StackSize = $0100, iData;
FrameSize = $0100, iData;
Scheduler = iData;
Implementation
{$IDATA}
{------------------------------------------------------------------------------}
{ Type Declarations }
Type
{------------------------------------------------------------------------------}
{ Const Declarations }
Const
{------------------------------------------------------------------------------}
{ Var Declarations }
{$IDATA}
Var
{------------------------------------------------------------------------------}
{ functions }
Process ReadADC($40,$40:iData);
Begin
PortD:=PortD or %00000010;
Sleep(self,50);
PortD:=PortD and %11111101;
Sleep(self,50);
End ReadADC;
Procedure InitPorts;
Begin
PortB:= %00000000;
DDRB:= %00001111;
PortC:= %00000000;
DDRC:= %00000011;
PortD:= %00000000;
DDRD:= %00000110;
End InitPorts;
{------------------------------------------------------------------------------}
{ Main Program }
{$IDATA}
Begin
EnableInts($87);
Start_Processes($87);
InitPorts;
Loop
PortB:=PortB or %00000001;
MDelay(500);
PortB:=PortB and %11111110;
MDelay(500);
EndLoop;
End Laderegler.
..... wir reden jetzt mal nicht über den Sinn und Zweck des Programmes
Wenn ich aber OSCtype = int32MHz einstelle läuft es. Nur wieso ???????
Gruss
Harry