Hi, ich möchte gerne eine kleine Erfolgsmeldung verkünden
Der Frequenzmesser funktioniert!
Danke Sauerbruch du hast mir den entscheidenden Tipp gegeben.
So sieht mein Programm aus:
Code:
'Frequenzmessen
'---------------------------------
'Deklaration
'---------------------------------
$regfile = "m16DEF.DAT"
$crystal = 16000000
'---------------------------------
'Initialiserung:
'---------------------------------
Config Porta = Input
Config Portb = Input
Config Portc = Output
Config Portd = Output
Dim Pulselo As Word
Dim Freq As Integer
Dim Freq10 As Integer
Enable Timer0 'Timer0 An
Config Timer0 = Counter , Edge = Rising 'Config von Timer0
Enable Timer1
Config Timer1 = Timer , Prescale = 256
On Ovf1 Tim1_isr 'Interrupt bei Timer0 Overflow AN
On Ovf0 Tim0_isr 'Interrupt bei Timer0 Overflow AN
Enable Interrupts 'Interrupts An
Tcnt0 = 0 'TCNT0 auf Null gesetzt
Timer1 = 59284 'Timer1 auf 59284 setzten
Config Portd = Output
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcd = 20 * 4
Initlcd
Cls
Cursor Off
'---------------------------------
'Hauptprogramm:
'---------------------------------
Do
Portc = Freq
Locate 1 , 1
Lcd "Freq:"
Locate 1 , 7
Lcd Freq10
Locate 1 , 11
Lcd "Hz"
Waitms 500
Cls
Loop
'---------------------------------
'InterruptTimer01
'---------------------------------
Tim0_isr:
Pulselo = 255
Return
'---------------------------------
'Interrupt Timer1
'---------------------------------
Tim1_isr:
Stop Timer0
Freq = Tcnt0 + Pulselo
Freq10 = Freq * 10
Timer1 = 59284
Tcnt0 = 0
Pulselo = 0
Start Timer0
Return
End
Leider kann ich die Frequenz nur in 10-Schritten darstellen.
Als Auflösung haben ich 100 ms gefällt. Sonst kann ich nicht bis zu 1KHz messen.
Vielen Danke nochmal an alle die mir geholfen haben
Lg Tryan
Lesezeichen