
Zitat von
Halvar
Wenn ich den Timer configuriert habe, lässt er sich doch nicht ganz fix um stellen?
Hallo Halvar!
Code:
$regfile = "M8def.dat"
$crystal = 8000000
$hwstack = 100
$swstack = 100
$framesize = 100
Config Portb.1 = Output 'OC1A
Config Timer1 = Timer , Prescale = 1 , Compare A = Toggle , Clear Timer = 1
Stop Timer1
Declare Sub Frequency_set(byval Frequency As Word)
Declare Sub Frequency_output_on()
Declare Sub Frequency_output_off()
Do
Call Frequency_set(1060)
Call Frequency_output_on()
Waitms 70
Call Frequency_set(1500)
Waitms 70
Call Frequency_set(2600)
Waitms 70
Call Frequency_output_off()
Wait 3
Loop
End
Sub Frequency_set(byval Frequency As Word)
'Voreinstellung = 8000000 / (Hz * 2)
'1060 Hz: 8000000 / (1060 * 2) = 3773,5849 = 3774
'Test: 8000000 / 3774 / 2 = 1059,88 Hz
'1500 Hz: 8000000 / (1500 * 2) = 2666,66 = 2667
'Test: 8000000 / 2667 / 2 = 1499,81 Hz
'2600 Hz: 8000000 / (2600 * 2) = 1538,46 = 1538
'Test: 8000000 / 1538 / 2 = 2600,78 Hz
Local Tmp_single As Single
Local Tmp_word As Word
Tmp_single = Frequency * 2
Tmp_single = 8000000 / Tmp_single
Tmp_word = Tmp_single
Compare1a = Tmp_word
End Sub
Sub Frequency_output_on()
Start Timer1
End Sub
Sub Frequency_output_off()
Stop Timer1
End Sub
mfg
Gerold
:-)
EDIT: Code ausgebessert
Lesezeichen