Also,
mein Ziel ist es, einen "Software-Frequenzgenerator" zu machen, um über
einen Treiber einen Schrittmotor anzusteuern.
Dieser Generator muss rampenfähig, linear und genau sein. Das
gewünschte, lineare Frequenzband soll 10Hz - 20kHz betragen.
Proportional zu meiner Ausgangsfreuqenz brauche ich eine Zahl, welche
zu Laufzeit verändert werden kann (Rampen).
Damit ich eine annehmliche Abstufung erreiche, sollte meine "Zahl" eine
8Bit Auflösung haben.
Mein bisheriges Vorgehen:
*******************************************************
#include<io.h>
#include<interrupt.h>
#include<signal.h>
int main(void) ;
{
outp(0xff,DDRB); //All Pins Port B
Output
outp(0x00,GIMSK); //Interrupt settings
outp(0x02,TIMSK);
outp(0x00,TCCR0); //TC 0, no prescale
outp(0x80,SREG); //Interrupts enabled
Overflow_Value= 65535;
Speed_Prop_Value=255;
Add_Result=0;
sei();
for (;;)
} //End Main
Signal(SIG_OVERFLOW0)
{
Add_Result=(Add_Result+Speed_Prop_Value);
if(Add_Result >= Overflow_Value)
{
Add_Result=0;
if (PortB,3 =0)
sbi(PORTB,3);
else
cbi(PORTB,3);
} //End if
} //End Interrupt
********************************************************
Das grundlegende Problem liegt nun darin, dass mit diesen Werten....
Overflow_Value=65535
Speed_Prop_Value=255
.....meine Maximalfrequenz (20kHz) erreicht werden muss, damit mein
Speed_Prop_Value ("Zahl") eine 8 Bit Auflösung erreicht.
Deshalb ist es elementar, dass in der Interrupt-Routine so wenig Code
wie möglich verwendet werden muss, um die Maximalfrequenz zu erreichen.
-Rechnerisch:
fosc=10Mhz
-Da ich den Ausgang "toggle" ergibt sîch....
fmax = 1/2 fosc => 5Mhz
-Um nun eine 8 Bit Auflösung zu erreichen, ergibt sich.....
f usable = ((1/2 fosc) / 255) => 19,6 KHz
Das wäre ja fast meine Gewünschte Frequenz, aber dabei ist noch kein
einziger Befehl ausgeführt worden....
Ich habe mal Geschätzt, dass meine Interruptroutine mit optimistischen 6
Cycles auskommt. Dies hat eine Maximale Ausgansfrequenz von ca 3,6 KHz
zur Folge.
Das es sich um meine Diplomarbeit handelt, und die Vorgabe den Atmel AVR
AT90S2313 definiert, muss ich meine Lösungen für diesen Chip auslegen,
ohne zusätzliche, externe Hardware (DDS, DSO etc).
Es wäre also möglich, die Maximalfrequenz zu verkleinern, wenn es keine
andere Möglichkeit gibt.
Falls mir jemand von Euch einen andere Lösungsweg aufzeichnen kann wäre
ich sehr dankbar.
Ich wünsche allen schöne Weinachten, und einen guten Rutsch ins neue
Jahr
mfg
Kay