Hi,
vielen Dank für den Tip mit dem CTC Timer. Das Programm läuft soweit. Hier der Code:
Code:
'--- Chip ---
$regfile = "m88def.DAT"
$crystal = 8000000
$baud = 9600
$framesize = 40
$hwstack = 40
$swstack = 40
'--- Ports ---
Config Portb.1 = Output
'--- ADC ---
Config Adc = Single , Prescaler = Auto
'--- Dim ---
Dim Adc_wert As Word
'--- Timer ---
Config Timer1 = Timer , Prescale = 1024 , Compare_a = Toggle , Clear_timer = 1 ' Timer auf CTC Mode setzen und Ausgang OCR1A togglen
'--- Main ---
Do
Adc_wert = Getadc(0) ' ADC einlesen
Waitms 100 ' 100ms warten
If Adc_wert < 40 Then Adc_wert = 40 ' minimalen Wert von 40 einhalten / ca. 0,2s
Ocr1a = Adc_wert * 40 ' Timer setzen
Loop
Mit diesem code kann ich nun zwischen ca. 0,2s - 5s die Toggle Geschwindigkeit einstellen und das sehr "smooth". Wenn ich nun auf 5s stellen und dann "schnell" auf 0,2s runtergehe, dann dauert es natürlich maximal 5s bis die 0,2s eingestellt sind. Wie kann ich dafür sorgen, das wenn der aktuelle per Poti eingestellte Wert kleiner ist, als der des OCR1A Registers den Timer "stoppt" und neu startet für die 0,2s ?
Gruß Kay
Lesezeichen