Hallo allerseits,

ich habe wieder einmal ein Problem und weiß nicht mehr weiter:
Ich möchte auf einem Atmega48 den Timer0 so konfiguriern, sodass ich an einem Ausgang eine Rechteckfrequenz von 40 kHz erhalte.
Ich würde gerne den Internen Oszillator benutzen (ist das bei solchen frequenzen noch möglich?), mein Code schaut so aus:

Code:
$regfile "M48def.dat"
$crystal = 1000000
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 1200

Dim Uart_in as String * 10 
'Uart brauche ich später noch, das ist jetzt noch nicht in verwendung
Print "ATmega online!"

Config PORTD.4 = Output 

'Timer0 Konfigurieren---------------------------------
Config Timer0 = Timer , Prescale = 1
Enable Timer0
On timer0 Isrtimer0
Timer0 = 230                 'Timer ist auf 230 => muss bis 25 Zählen bis überlauf 
'-----------------------------------------------------
Enable interrupts

Do 
Loop

Isrtimer0:            'die Isr des Timers 
Toggle PORTD.4
Timer0 = 230
Return
So, nun wenn ich mit dem Oszi an Portd.4 messe, erhalte ich ein wunderbares Rechtecksignal, nur die Frequenz ist mit ca. 4,1 kHz zehn mal zu klein. ;-(
Es ist möglich, kleinere Frequenzen zu erzeugen, mehr geht aber nicht.
Ich bräuchte die Frequenz, um einen Piezo - Ultraschall Lautsprecher in Schwingung zu versetzen, das Gesamtziel (von dem ich noch weit entfernt bin) wäre ein Ultraschall - entfernungsmesser.

Stimmt etwas mit dem Code nicht oder schafft villeicht der interne Oszillator doch keinen Megaherz? Oder ist irgentwo ein denkfehler?
Ich wäre dankbar, würde jemand meinen Fehler finden!

Mfg Thegon