Hallo, ich bin gerade dabei mir einen Frequenzzähler zu bauen. Bei der Testhardware lege ich das zu messende Signal an den PinD4 eines Mega8 an, der mit 16Mhz getacktet ist. Ohne einen Teiler erreiche ich eine max. Frequenz von 5Mhz. Ich habe einen Oszillator mit 4.915200Mhz angeschloßen, und erhalte 4.917504Mhz als ergebniss. Ich würde euch bitten, mal über meinen Code zu fliegen, ob mann das ganze noch etwas besser machen kann.

Danke !!!

Code:
$regfile "m8def.dat"
$crystal = 16000000

Cls
Cursor Off

Dim Var As Word
Dim Frequ As Long

Config Portb = Output
Config Portd = Input

Config Timer0 = Counter , Edge = Rising         'Eingangssignal
Config Timer1 = Timer , Prescale = 256           ' Messzeit 1 sec.

On Timer0 Timer0_irq
On Timer1 Timer1_irq

Const Timervorgabe = 3036

Enable Timer0
Enable Timer1
Enable Interrupts

Start Timer1
Start Timer0

Dim Var1 As Byte
Dim Freq As Long
Dim W As Long

Portd.4 = 0

Do

   Locate 1 , 1
   Lcd Frequ
   Waitms 60

Loop


Timer0_irq:
  Incr Var
Return

Timer1_irq:
   Timer1 = Timervorgabe
   Stop Timer0
   Stop Timer1
   Frequ = Var * 256
   Var = 0
   Timer0 = 0
   Start Timer1
   Start Timer0
Return