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:
Leider kann ich die Frequenz nur in 10-Schritten darstellen.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
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







Zitieren

Lesezeichen